Two reviews in one night! Let’s do it.
I took Udacity’s CS258 Software Testing alongside CS215 Algorithms. I’m going to say right off the bat that I thought this course was awesome.
I do a lot of web development. In the web development world, there’s lots of talk about testing, namely test-driven development (TDD) and behavior-driven development (BDD). I went into this course thinking I’d learn about that stuff, but I was completely wrong, and I’m glad that I was.
The main reason that I’m glad I was wrong is that it opened up a new world for me. I live in this bubble where it’s alright to have bugs in your programs. You write tests, and if they fail, then you fix the code so that the tests pass. If you’re not writing tests, that’s alright; a user will report any bugs they find, and then you can try to reproduce them and fix them as needed. However, a lot of developers don’t live in this bubble, and this class made me realize that.
How do you use TDD and BDD when writing compilers or software that flies airplanes? Hah, imagine sending a pilot out to “test-drive” your software. The first time you write your unit tests, you should write your functions so that they fail the test, right? Good-bye, airplane! The answer is that you simply can’t use these types of testing in lots of areas of software development.
This course focused on other topics, such as white-box testing, black-box testing, random/fuzzy testing (so cool), code coverage, and a bunch of other awesome stuff that far too few developers seem to care about. Most of the material is presented extremely clearly, and Professor Regehr’s code is not bad at all.
This course will teach you a lot about testing that you don’t know. It will also make you think a lot about this stuff, which was my favorite part about it. Professor Regehr talked about his professional experience and research quite often, and I thought it was fascinating. At one point, he talked about how he worked with a team of people to write software that generated random [valid] C programs in order to test compilers. How awesome is that!
Overall, I thought the course was awesome. I did have an issue with one of the earlier assignments (I personally believed one of the questions was a bit unrealistic), and the final exam could have been a bit more challenging, but really, CS258 went above and beyond my expectations. I highly recommend this course for every developer.
January 1st, 2013