Why is software testing important 1

Software development is a complex process and mistakes are bound to be made. Errors are not dramatic as long as they are discovered in good time, but the later they are recognized, the more time-consuming it is to rectify.

Software errors and the 1-10-100 rule

The importance of software testing during application development cannot be overestimated. In this context, the so-called 1-10-100 rule applies, which Paul Herwarth von Bittenfeld explains in a compact way in his blog article Why early tests are so important in software development: According to this rule, the effort and costs for troubleshooting increase each time after the time of discovery.

Factor 1: Error detection by the developer
Errors that developers discover during application development can usually be corrected very quickly and without significant additional effort.

Factor 10: Defect discovery by a tester
If a tester finds a bug in a software version that is already running on a test system, the effort is even higher: the bug must be documented and passed on to the programmer; after the bug has been corrected, it is necessary to update the test system and to test again. There is a real risk that there will be delays in the delivery of the software.

Factor 100: Error detection in live operation
In the case of errors that users discover in a software that has been delivered, the effort to rectify them is even higher than in the case just described, since the live system also has to be updated. There are also serious consequences: In some cases, losses in sales due to unusable application functions have to be accepted, users are annoyed by bugs, the image of the software suffers, and entire business models are sometimes at risk.

At this point, the comparison of two simple questions illustrates the sense and benefit of tests: What does testing cost? And: What does it cost not to test? No exemplary quantification is to be undertaken here, but tests in the context of software development always primarily serve one goal: profitability.

In an article on the subject that is well worth reading, Ralf Westphal summarizes:

[Tests] reduce the likelihood that bugs will hamper work in the future. They do that in two ways: First, they prevent you from producing functionality. Second, they disrupt the team's focus. Both are counterproductive.

Inadequate test processes are the main cause of software errors occurring in the live system. Software tests are therefore essential as part of the development process: In these tests, a qualitative check is carried out to determine whether the application meets the defined requirements by running certain test cases.

Types of software tests

However, one misunderstanding must be cleared up: Even systematic testing does not guarantee a completely error-free release. The Dutch IT pioneer Edsger Wybe Dijkstra formulates the essence of software testing as follows:

Program testing can be used to show the presence of bugs, but never show their absence!

The error rate can, however, be reduced if tests are integrated into the entire development process. In software development, a distinction is made between numerous forms of testing, the most important of which are:

Unit tests: There is a very basic check for errors in the syntax and logic of a
individual function / method.

Acceptance tests: It is checked whether the software fulfills the functional expectations and requirements in use.

Integration tests: It is tested whether the application can be integrated into an existing software architecture.

Software tests (e.g. with test-driven development) are essential components of XP (Extreme Programming). Tests also play an important role in the Scrum approach.

Software testing is a very complex and extensive subject, on which there are countless books and on which research is ongoing. In fact, there are companies that employ full-time testers. So we are dealing with a wide field. In the following articles we will briefly deal in detail with the above-mentioned forms of testing, especially from a technological point of view: We discuss theoretical aspects, the respective test structure as well as the implementation and organization, especially in the context of agile software projects.

Additional information

Our special page on agile software development
Java projects with // SEIBERT / MEDIA

Learn more about the Creative Commons license

Agile Software DevelopmentContinuous IntegrationCreative CommonsExtreme ProgrammingPodcastQuality AssuranceScrumSoftware TestingTechnologies