I’ve been taking the Udacity course on software testing, CS258. The class has the catchy title: Software Testing, How to Make Software Fail. It’s taught by John Regehr, a CS professor from the University of Utah, with assistance from Sean Bennett. The class is entirely online and free. This class is a great way to learn how to test software.
The stated prerequisites are programming experience. This is definitely true, you will be writing Python code to implement your tests. I started the course without any Python experience, and I don’t code much in my day job, but I’ve been able to hack my way along. If I were just starting, I would do 2 things differently. First, I’d take a tutorial on Python and get some experience with the language. Just the basics, like built in types, syntax, and flow control. Second, I’d install a Python IDE on my local system to do some the exercises offline, and keep my work for building upon it later. However, I’m getting along without an IDE, so feel free to jump in feet first.
Here is the introduction on YouTube.
You don’t need an IDE or to install anything. All of the interaction is through your browser. Each lesson is bite-sized at 1 to 5 minutes long, with frequent simple quizzes to keep you engaged. This format makes it easy to stay engaged and to take lessons incrementally (squeezing 10 minutes in between your meetings, for example).
An IDE is useful, the server side execution of your code can be slow. If you take an incremental approach to testing, you are probably better off running your tests locally, then submitting for credit.
If you have any questions, or want a hint on the exercises, there is a vibrant message board associated with the class.
Life is nothing without some irony. The grading system has a few bugs in it. In one case, it told me that I had found all five bugs, but after reviewing the results, there were a couple of the bugs that my tests would not have found.
Overall, I think its a great course, so far. It definitely teaches the basic concepts on how to test software. There is a good mixture of theory, examples, and practical application. A survey of testing types are presented, along with their use an limitations. The exercises and problems have you writing Python code to implement the tests, and are quite challenging.
My favorite exercise, you were told that 5 bugs existed and your task was to find each one. The class to test implemented a queue. The grading system told you which of the bugs you found. I won’t reveal the bugs here; I wouldn’t want to spoil your fun. But, the bugs seemed realistic, in that I could see how a false assumption would lead the original developer to believe the code was good enough.
Give the course a try.