In Software Testing is what we do more important than why we do it, when we do it, how we do it, where it is done and who it is done by?
“I keep six honest serving-men (They taught me all I knew); Their names are What and Why and When and How and Where and Who.” Rudyard Kipling
Test planning and test preparation defines what testing needs to be carried out. Whether conducted as:
- a formal test analysis and test design stage of a traditional waterfall or v-model project
- or, as part of simultaneous test design and test execution during exploratory testing
- or, during an agile sprint with the analysis of user stories and design of tests to check that the “in-built” quality acceptance criteria have been met
all of these models focus on what testing needs to be done.
Why the testing needs to be done is implicit in the what, but explicit in the fact that software, web sites and apps are designed and built by human beings. The fact that everyone, including testers, can make mistakes introduces an inherent risk of errors. Errors result in faults and testing finds these faults before they result in failures in software, websites or apps. Alexander Pope said "to err is human; to forgive divine”, one could paraphrase Alexander Pope and say “to err is human; to test, divine”, but before I disappear in a puff of my own pretentiousness I’ll reign myself back in and move on to the when.
When we test is usually defined by the method or model being used, but suffice to say testing is often not engaged early enough in the System Delivery Lifecycle to allow test planning, test preparation, test analysis and test design to take place. These essential elements of testing must occur in some form before meaningful and useful test execution can be carried out.
How to test is often the subject of much debate, including the popular views that:
- testers must be independent and objective
- testers must be embedded into delivery teams
- testers must not code
- testing must be automated, using code
- developers cannot test their own code
- developers must unit test, unit integration test and continuously integrate
- everybody tests
- testing isn’t necessary if everyone else does their job properly
Suffice to say I think how we test is important, but less important than making sure that a good set of tests, that provide good coverage of what needs testing, are designed and executed by people with the right attitude and relevant skills, knowledge and experience to do so.
Where something is tested in a digital world, is largely irrelevant and it is often valuable to have testing in a different time zone to the developers.
Who tests is more important than where, but as we have seen with the how, whether it is manual or automated, part of development or an independent test, it must be carried out by people with the right mind-set and skill-set.
WHICH BRINGS US BACK TO WHAT
Choices about the test plan, test cases, test data, test environments (including the use of “real tin”, virtual machines, emulators and test automation) and test team members are all part of defining what will be tested, why it will be tested, when it will be tested, how it will be tested, where it is tested and who it is tested by. If why, where and who are less important than how, when and what, “now how, when and what remain – these three things – and the greatest of these is What.”
If you would like some help with defining the What, Why, When, How, Where and Who of Software Testing, to give you confidence in your software, website or apps, please get in touch with us via www.buitech.co.uk, emailing firstname.lastname@example.org or by calling us on 0330 22 33 036.