Software Nuggets

“There is such a thing as an unreasonable timescale”

Software Testing Primer

Article Index
Software Testing Primer
Waterfall Software Development
Other Models of Software Development
Testing in the Software Development Lifecycle
The Testing Mindset
Test Early, Test Often
Regression vs. Retesting
White-Box vs Black-Box testing
Verification and Validation
Functional Testing
Alpha and Beta Testing
White Box Testing
Unit, Integration and System testing
Acceptance Testing
Test Automation
Testing the design
Usability Testing
Performance Testing
The Purpose of Test Planning
Risk Based Testing
Test Plan Summary
Test Scripting
Test Cases
Test Execution
Defect Management
Release Control
Verification and Smoke Testing
Release Notes
All Pages

The Need for Testing




My favourite quote on software, from Bruce Sterling's “The Hacker Crackdown” –

The stuff we call "software" is not like anything that human society is used to thinking about. Software is something like a machine, and something like mathematics, and something like language, and something like thought, and art, and information.... but software is not in fact any of those other things. The protean quality of software is one of the great sources of its fascination. It also makes software very powerful, very subtle, very unpredictable, and very risky.

Some software is bad and buggy. Some is "robust," even "bulletproof." The best software is that which has been tested by thousands of users under thousands of different conditions, over years. It is then known as "stable." This does NOT mean that the software is now flawless, free of bugs. It generally means that there are plenty of bugs in it, but the bugs are well-identified and fairly well understood.

There is simply no way to assure that software is free of flaws. Though software is mathematical in nature, it cannot by "proven" like a mathematical theorem; software is more like language, with inherent ambiguities, with different definitions, different assumptions, different levels of meaning that can conflict.


©Nick Jenkins, 2008

This work is licensed under the Creative Commons (Attribution-NonCommercial-ShareAlike) 2.5 License.. To view a copy of this license, visit []; or, (b) send a letter to “Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA”. In summary - you are free: to copy, distribute, display, and perform the work and to makederivative works. You must attribute the work by directly mentioning the author's name. You may not use this work for commercial purposes and if you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one. For any reuse or distribution, you must make clear to others the license terms of this work. Any of these conditions can be waived if you get permission from the copyright holder. Your fair use and other rights are in no way affected by the above. Please see the license for full details.


Software development involves ambiguity, assumptions and flawed human communication. Each change made to a piece of software, each new piece of functionality, each attempt to fix a defect, introduces the possibility of error. With each error, the risk that the software will not fulfil its intended purpose increases.

Testing reduces that risk. We can use QA processes to attempt to prevent defects from entering software but the only thing we can do to reduce the number of errors already present is to test it. By following a cycle of testing and rectification we can identify issues and resolve them.

Testing also helps us quantify the risk in an untried piece of software. After modifications have been made, a piece of software can be run in a controlled environment and its behaviour observed. This provides evidence which informs the decision to move to the next phase of the project or to attempt to rectify the problem.

And finally in some (dare I say enlightened?) software development efforts, testing can actually be used to drive development. By following statistical models of software development and methods such as usability testing, software development can move from an unfocused artistic endeavour to a structured discipline.

This primer will be unashamedly pro-testing. I am, and have been for ten years, a tester. As a tester I have suffered endless indignities at the hands of project managers and development teams that resulted in enormous amounts of stress for myself and my teams.

There are plenty of books written about and for project managers and software developers. This is probably not one of them.


Like it? Please Bookmark!

Facebook MySpace Twitter Digg Delicious Stumbleupon Google Bookmarks RSS Feed 
Joomla Templates

© Copyright 2010    All Rights Reserved