Intermediate

Approx. {{courseState.expectedDuration}} {{courseState.expectedDurationUnit}}

Assumes 6hr/wk (work at your own pace)

Join {{70432 | number:0}} Students
view course trailer
View Trailer

Course Summary

When writing software, destruction can be just as valuable as creation. Learn how to catch bugs and break software as you discover different testing methods that will help you build better software.

Why Take This Course?

This course will teach you how to think like a software tester, how to find bugs in code earlier, and write better code.

Prerequisites and Requirements

Programming experience is required.

See the Technology Requirements for using Udacity.

What Will I Learn?

Syllabus

Lesson 1: Domains, Ranges, Oracles, and Kinds of Testing

How to think about the different elements of software testing

Lesson 2: Code Coverage

How to find parts of a program that need more testing

Lesson 3: Random Testing

How to automatically generate test cases that break code in unexpected ways

Lesson 4: Advanced Random Testing

How to engineer a sophisticated random test case generator

Lesson 5: Consequences

How to deal with lots of bugs, how to take a big input that triggers a bug and make it smaller, how to report a bug, and more!

Lesson 6: Conclusion

Instructors & Partners

John Regehr is a computer science professor at the University of Utah. His research is on making software fail and on making software that fails less often. Lately, he is obsessed with compiler bugs and integer overflow problems.

instructor photo

Sean Bennett

Course Developer

Sean Bennett is a Course Architect at Udacity and is passionate about using the web to improve the quality of education available worldwide. Sean's background is in web programming, and he likes to dabble in functional web programming. When he's not working to improve education, Sean likes running, hiking, and preparing for the inevitable zombie apocalypse.

track icon

View more courses in Software Engineering