0% found this document useful (0 votes)
5 views2 pages

Seven Key Software Testing Principles

Uploaded by

maheribnmasum
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
5 views2 pages

Seven Key Software Testing Principles

Uploaded by

maheribnmasum
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd

Seven Testing Principles

A number of testing principles have been suggested over the past 50 years and offer general
guidelines common for all testing.

1. Testing shows the presence of defects, not their absence

Testing can show that defects are present, but cannot prove that there are no defects. Testing
reduces the probability of undiscovered defects remaining in the software but, even if no defects are
found, testing is not a proof of correctness.

2. Exhaustive testing is impossible

Testing everything (all combinations of inputs and preconditions) is not feasible except for trivial
cases.
Rather than attempting to test exhaustively, risk analysis, test techniques, and priorities should be
used to focus test efforts.

3. Early testing saves time and money

To find defects early, both static and dynamic test activities should be started as early as possible in
the software development lifecycle. Early testing is sometimes referred to as a shift left. Testing
early in the software development lifecycle helps reduce or eliminate costly changes.

4. Defects cluster together

A small number of modules usually contain most of the defects discovered during pre-release
testing or are responsible for most of the operational failures. Predicted defect clusters, and the
actually observed defect clusters in test or operation, are an important input into a risk analysis used
to focus the test effort.

5. Beware of the pesticide paradox

If the same tests are repeated over and over again, eventually these tests no longer find any new
defects.
To detect new defects, existing tests and test data may need changing, and new tests may need to
be written. (Tests are no longer effective at finding defects, just as pesticides are no longer effective
at killing insects after a while.) In some cases, such as automated regression testing, the pesticide
paradox has a beneficial outcome, which is the relatively low number of regression defects.
6. Testing is context-dependent

Testing is done differently in different contexts. For example, safety-critical industrial control
software is tested differently from an e-commerce mobile app. As another example, testing in an
Agile project is done differently than testing in a sequential software development lifecycle project.

7. Absence-of-errors is a fallacy

Some organizations expect that testers can run all possible tests and find all possible defects, but
principles 2 and 1, respectively, tell us that this is impossible. Further, it is a fallacy (i.e., a mistaken
belief) to expect that just finding and fixing a large number of defects will ensure the success of a
system. For example, thoroughly testing all specified requirements and fixing all defects found could
still produce a system that is difficult to use, that does not fulfill the users’ needs and expectations,
or that is inferior compared to other competing systems.

Common questions

Powered by AI

Early testing contributes to cost and time savings by identifying defects early in the software development lifecycle, enabling easier and less expensive corrections. This approach, sometimes referred to as 'shift left,' reduces or eliminates costly changes and fixes that would be more onerous later in the development process .

The 'pesticide paradox' occurs when repeated use of the same tests results in diminishing returns, as these tests eventually fail to find new defects. To mitigate this, testers must regularly update and diversify their testing strategies and test data, and develop new tests to ensure ongoing effectiveness in uncovering defects .

This principle underscores that testing teams cannot guarantee a defect-free product but can only show that defects exist when they are found. This impacts expectations by setting realistic objectives about what testing can achieve, often requiring communication with stakeholders to clarify that zero defects found does not equal zero defects exist .

Exhaustive testing is considered impossible because testing every possible combination of inputs and preconditions is not feasible for anything beyond trivial cases. Instead, risk analysis, test techniques, and prioritization should guide testing efforts to focus resources effectively .

It is a fallacy to believe that finding and fixing numerous defects guarantees system success because a system's usability, fulfillment of user needs, and competitive adequacy are not determined solely by its defect count. A thoroughly tested system can still fall short if it is inconvenient to use or mismatches user requirements and market standards, illustrating that software quality involves more than just defect elimination .

Assuming testing can prove the absence of defects is a fallacy because testing can only demonstrate the presence of defects, not their absence. Even if no defects are found during testing, it does not mean the software is defect-free, as testing cannot cover all possible use cases or scenarios .

The pesticide paradox might be beneficial in scenarios such as automated regression testing, where identifying and eliminating potential regression defects is a priority. In such cases, running the same tests can effectively confirm that known changes have not reintroduced issues, thereby maintaining software stability and reliability .

The principle implies that testing approaches must be tailored to fit the specific context of the development methodology. In Agile projects, testing may be more iterative and integrated into the development process, while in sequential projects, it might follow a more structured, phase-driven approach. This contextual adaptation ensures that testing is aligned with the project's workflow and objectives .

The context of software significantly influences the testing process since different kinds of software, such as safety-critical systems and e-commerce applications, require different testing methods. Factors such as the development methodology, whether Agile or sequential, also dictate distinct approaches to testing, illustrating that a one-size-fits-all method does not apply .

Defect clusters can significantly affect the testing process. Since a small number of modules tend to contain most defects, testing can be more efficiently executed by focusing efforts on these likely areas of defect concentration. Recognizing and managing defect clusters through careful risk analysis allows for more targeted and effective testing efforts .

You might also like