Testing is one of the most crucial parts of software development, but it's often neglected because seeing if something works is less sexy than building it in the first place. Whether you're an amateur developer working on a mobile app or a corporate manager with a large-scale project in mind, remember these guidelines to ensure your testing process goes smoothly.
Picture by Ron Wurzer/Getty Images
1. Allocate time for testing
Testing isn't something you should leave until the last minute; assign time to it when you first begin planning a project. Even if you're building an open source project and expect contributions and improvements from others, you'll need to allow time to debate and integrate those changes. For public-facing projects such as web sites or web applications, testing is likely to take at least as much time as the original development process.
2. Set a time for release and stick to it
On many projects, having a fixed time of day when you roll out new changes and begin testing makes sense. This is essential if you have separate test and development teams, but even when you're the main developer, consciously dividing the process means you will focus on testing what you've done rather than arbitrarily switching back to "coding mode". This again is especially important with web sites, which often have incremental improvements added over time. Even when you're using a staged development server, locking down what can be changed and fixing a time when it happens will make planning easier than if you constantly make minor updates.
3. Test on as many devices as possible
Development for mobile devices is a rapidly growing market; a 2010 survey by IBM suggested that more than half of all developers expected to concentrate their efforts on developing for mobile platforms. When testing on mobile platforms, use actual devices whenever possible. Emulators are useful for prototyping and will give you access to models you might not see otherwise, but emulation is rarely perfect and the user experience will often be subtly different. That said, for many projects it makes more sense to develop a mobile-friendly web site or app rather than concentrating on specific devices, and such an approach makes the rapid emergence of new hardware less of an issue.
4. Make use of external resources
Cloud-based external testing services provide a useful way to see how your applications work, especially if you want to see how they perform at scale. IDC says that more than $10 billion a year is being spent on these services, and growth rates of 15.4% are expected through to 2015. Using external testing providers also highlights issues that may not be obvious in your own testing processes.
5. Document the testing process properly
Documentation is the bane of many a developer's life, but failing to adequately document as you work invariably creates headaches in the future. Documentation is vital, and the same applies in a testing environment. When problems emerge, document them with as much detail as possible. If your company has a specific system, use it. Even on a one-person project, a formal bug tracking and testing system makes sense, and again emphasises the importance of considering testing as part of the development process, not an afterthought.
What approaches do you use to ensure software testing works? We'd love to hear extra ideas in the comments.