There is no such thing as bug-free software! Nevertheless, software is successfully used even in very critical systems. The software development processes have become so mature that it is possible to reduce the number of errors in the software reliably to such an extent that the number of system errors which have their cause in the software have become so small that they are accepted by society. In these safety relevant projects mainly specification-based, efficiency-based and structure-based test design methods are used. Risk-based testing has not played a significant role in this area so far. On the other hand, the complexity and scope of software is also increasing strongly in the safety-relevant area. Trends such as Industry 4.0 and autonomous driving strongly support this development. Under what conditions could risk-based testing take on a more important role in the safety-relevant area in the future? How can this test design technique be improved so that the technique itself can be further disseminated? The following blog post discusses the strengths and weaknesses of risk-based testing and suggests ways to improve the technique itself. An overview of common test design methods can be found in the blogpost Comparison and evaluation of different test design techniques.
The complexity of technical systems has been increasing for years and there is no foreseeable end to this. The crucial driver of innovation is software. Very powerful hardware in combination with complex software are the basis for trends such as IOT, autonomous driving, Smart Home and human-robot collaboration, to list just a few.
Today, software enables the realization of functionalities with a complexity that was never imaginable with electronics or mechanics alone.
However, this also increases the potential errors in a system. There is no such thing as guaranteed error-free software! A major reason for this is that it is not possible to test an industry relevant software system completely. This is due to the fact that the number of data and control flow paths that can be passed through a software system tends to be infinite. With this background, the following article introduces common test design techniques and evaluates their strengths and weaknesses.