3. Testing Principles

Table of contents

Testing Principles.
A number of testing principles offering general guidelines applicable to all testing have been suggested over the years. This article describes seven such principles.
1. Testing shows the presence, not the absence of defects. Testing can show that defects are present in the test object, but cannot prove that there are no defects (Buxton 1970). Testing reduces the probability of defects remaining undiscovered in the test object, but even if no defects are found, testing cannot prove test object correctness.
2. Exhaustive testing is impossible. Testing everything is not feasible except in trivial cases (Manna 1978). Rather than attempting to test exhaustively, test techniques, test case prioritization, and risk-based testing, should be used to focus test efforts.
3. Early testing saves time and money. Defects that are removed early in the process will not cause subsequent defects in derived work products. The cost of quality will be reduced since fewer failures will occur later in the SDLC (Boehm 1981). To find defects early, both static testing and dynamic testing should be started as early as possible.
4. Defects cluster together. A small number of system components usually contain most of the defects discovered or are responsible for most of the operational failures (Enders 1975). This phenomenon is an illustration of the Pareto principle. Predicted defect clusters, and actual defect clusters observed during testing or in operation, are an important input for risk-based testing.
5. Tests wear out. If the same tests are repeated many times, they become increasingly ineffective in detecting new defects (Beizer 1990). To overcome this effect, existing tests and test data may need to be modified, and new tests may need to be written. However, in some cases, repeating the same tests can have a beneficial outcome, e.g., in automated regression testing.
6. Testing is context dependent. There is no single universally applicable approach to testing. Testing is done differently in different contexts (Kaner 2011).
7. Absence-of-defects fallacy. It is a fallacy (i.e., a misconception) to expect that software verification will ensure the success of a system. Thoroughly testing all the specified requirements and fixing all the defects found could still produce a system that does not fulfil the users’ needs and expectations, that does not help in achieving the customer’s business goals, and that is inferior compared to other competing systems. In addition to verification, validation should also be carried out (Boehm 1981).
Subscribe to my newsletter
Read articles from Martin Markov directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Martin Markov
Martin Markov
Hello, I am Martin, a happy husband and father. I have done many types of jobs in my life, from cleaning car windows when I was 15 years old to being a Casino Supervisor at the biggest American cruise ship company. In every past job, I have found some meaning, but I haven't felt as much consistent challenge as I do when performing Software QA or Programming/Coding, and this is why I am passionate about it. I am a strong believer that putting any type of challenge in front of yourself and achieving it is the way to feel happy and find meaning in life. So, let's learn together how to be better at Software QA and Programming and become better versions of ourselves today compared to yesterday.