The seven principles of software testing

Daniel Saffer

14/01/2021

Software testing is essential and should be an active process throughout the entire software lifecycle. Important terms to consider here are error behavior, error state, and error effect.

A misconduct is a human action that causes a software error. The action can be performed accidentally, unknowingly, or intentionally. [1].

An incorrect action leads to an error state in the software. This is a state in which the requirement or specification of the software is not met. [1].

The error effect describes that the system no longer performs functions within the specified framework. Not every software error necessarily leads to an error effect. Error effects are not only the result of software errors but can also be caused by environmental conditions. [1].

The consequences of software errors can be serious. Possible consequences include:

  • Personal injury / death
  • Property damage
  • Loss of image
  • Loss of money

Of course, not all software bugs have such drastic consequences. However, the examples mentioned above are intended to illustrate the importance of software testing.

Now the question arises as to how best to plan the testing activities. Here, the seven principles of software testing can serve as a guideline. [2].

1. Principle – “Testing reveals the presence of defects”

Software testing can identify bugs. This can improve the system and reduce the likelihood of undetected bugs occurring. However, software testing cannot prove that the system is error-free.

2nd principle – “Complete testing is not possible”

Today's systems are constantly growing in complexity. Comprehensive testing is therefore impossible. Comprehensive testing would mean performing all possible test cases. However, a high number of test cases also increases the time required and thus the costs, which is why the testing effort must always be adjusted according to risk and priority. Tests are therefore always only sample tests.

3. Principle – “Testing should begin as early as possible”

The earlier defects are detected, the cheaper they are to fix. Therefore, testing activities should begin as early as possible in the software lifecycle.

Die Kosten der Fehlerbehebung
Rule of 10 for error costs [3]

4th principle – “accumulation of errors”

A bug rarely occurs alone. If the effect of a bug has already been demonstrated, further bugs may occur in that module. The number of test cases should therefore be adjusted proportionally to the expected bug density of the modules. If the expected bug density differs from the observed bug density, the testing effort must be flexibly adjusted.

5th principle – “Repetitions have no effect”

Repeating test cases won't yield any new insights. Test cases must therefore be reviewed and maintained regularly. New test cases must also be added as necessary.

6th principle – “Testing depends on the environment”

Software testing depends on its environment. This means that, for example, medical devices are tested differently than consumer electronics, as these are usually safety-critical systems. Software testing must therefore always be adapted to the environment and its context.

7th Principle – “Fallacy: No errors mean a usable system”

Simply fixing all errors won't result in a usable system. Usability and customer requirements must be considered.

Conclusion

This article aims to demonstrate the importance of software testing. Start planning testing activities as early as possible in a project. The 7 principles of software testing can help you do this.

If you have any questions or comments, or would like to share your experiences on the topic, please feel free to leave a comment or contact us.

Sources

[1] ISTQB®: ISTQB® glossary app multilingual https://glossary.istqb.org/de/search/ (Accessed 07.01.2021)

[2] Spillner A., Linz A.: Basic Knowledge of Software Testing, dpunkt.verlag, 2010

[3] Steinhoff F., Pointner T.: FAQ Lean Management, Weka Media Gmbh & Co. Kg, 2018


Written by Daniel Saffer

Daniel Saffer is Chief Technical Officer (CTO) of MEDtech Ingenieur GmbH. In this role, he is responsible for the company's technical strategy and supports customer projects in medical technology. His focus is on the further development of safety-critical software solutions, regulatory requirements, and innovative technologies for the industry.


More articles

  • 20/11/2025
  • General, Hardware, Quality, Technology, Testing

Have you ever considered sourcing inexpensive components from China? The temptation is strong, we know that. And we've already gained some experience, from which I... ...

Read more
  • 09/09/2025
  • General, Software

In previous blog posts, I have introduced two essential components of a simple and universally applicable software architecture: events with dispatchers, listeners, and data pools. These already allow for many simple use cases ...

Read more
  • 12/11/2024
  • General, Software, Testing, Tools

In safety-critical software projects, software quality is paramount. Especially for Class C software, which must be certified according to strict standards such as IEC 62304 (medical technology), it is essential that ...

Read more
Privacy Overview

This website uses cookies so that we can provide you with the best user experience possible. Cookie information is stored in your browser and performs functions such as recognising you when you return to our website and helping our team to understand which sections of the website you find most interesting and useful.

Strictly Necessary Cookies

Strictly Necessary Cookie should be enabled at all times so that we can save your preferences for cookie settings.