Intermediate
Join 50,181 Students

We're still building the full experience
Approx. 1 month
(work at your own pace)

Class 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.

What Will I Learn?

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

What Should I Know?

Programming experience is required.

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

Course Instructors

instructor photo

John Regehr

Instructor

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.

course developer 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.