Review: Udacity CS258 Software Testing

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.

Prerequisites

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.

The course

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.

My opinion

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.

4 thoughts on “Review: Udacity CS258 Software Testing

  1. Anne-Marie

    I was pointed to this course yesterday and I was interested enough to look at the introduction

    Unfortunately, any software testing course that cites

    “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.”

    makes me wonder about how much they understand about software testing, as its not software testers that break software, it comes to them broken already..

  2. John Ruberto Post author

    Hi Anne-Marie,

    I’m a few lessons in now. the class is pretty engaging, and I think valuable for both the developer and the tester. This is teaching people that write code to test their own code, using the techniques we know and love.
    I’ve paused on this class (testing) to work on the software engineering 101 class. I’m using that class to learn python. Its fun.

  3. Pingback: UU: Udacity Update

  4. sobia

    hey,
    what are the question of exam for software testing course i saw at exam page in udacity.com but there was some question related coding and i didn’t find any question related testing/QA.
    one thing more exam/ test contain with how much number of question and for QA/software testing which type of question would be in exam. please let me know that it will be help full to me if you people reply.

Comments are closed.