Test Frameworks

The first step in setting up automated testing is setting up a testing framework.

Unit test framework for your development platform

Modern development frameworks usually include a structure for automated unit tests. This gives programmers a place to put test scripts, a way to set up test data, and a way to run the scripts locally. Look for a test framework that matches your development platform and includes both unit tests and integration tests. If you do not have a test framework, then you may need to rely on input/output tests and UI regression tests.

Continuous Integration server

You can run a continuous integration process by asking developers to run tests on a development version of the code on their own workstations. However, this can take a long time. You want to improve your return on investment and your social structure by making testing fast and easy for developers.

A shared test system will run faster, share build results with everyone, and show problems to the team. That is why many teams use a Continuous Integration server - software that is specifically designed to build software and run tests. Popular CI servers include Jenkins, Cruise Control, and Tinderbox. With the miracle of cloud computing, you can allocate new test servers as needed. Cloud providers are even extending this idea to mobile apps, which aren't usually built on servers.

Production logging and monitoring

If you are considering continuous delivery, you should make serious efforts to log and monitor your running software. Actual user experience is the ultimate test of your software, and your ability to see user problems and respond to them quickly will give you the confidence to do everything else.

If you run an online system, you should have dashboards that show you load, performance, error rates and feature usage in real time. You should be able to compare the times before and after a release. If you distribute your software, you should add an option for the software to phone home with error messages and with statistics about load, performance and feature usage. You should log and report error messages. You are not doing a good job if users are manually reporting error messages. Stack errors should be automatically posted back to you and turned into bug fix tickets.