Testability is not an intrinsic property of software artifacts and cannot be measured directly (such as the software size). Instead, testability is an extrinsic property that results from the interaction of the software with the test objectives, test resources and test procedures used (i.e. the test context).
The effort and effectiveness of a software test depend on the following factors, among others:
- Software requirements
- Properties of the software such as scope, complexity and testability
- Test methods used
- Development and testing process
- Qualification and motivation of the people involved in the test
Testability of software
The testability of software is a. determined by the following factors:
- Controllability : The test object can be brought into the state required for the test.
- Observability : The test result can be observed.
- Isolability : The test object can be tested in isolation.
- Separation of responsibility : The test object has a well-defined responsibility.
- Comprehensibility : The test object is self-explanatory and well documented.
- Automation : the tests can be automated.
- Heterogeneity : Different technologies require the simultaneous use of different test procedures and tools.
The testability of the software is improved by:
- Test-driven development
- Design for testability
When it comes to the testability of classes , a distinction is made between non-modal, quasimodal, unimodal and modal classes. Nonmodal classes show the same behavior no matter what state they are in and no matter what order their methods are called. Quasimodal classes show different behavior to different states. Unimodal classes show different behavior when their methods are called in different order. Modal classes show different behavior to different states and call sequences. The testability of non-modal classes is highest, because you only have to test all methods regardless of status and order. With the other types, all orders and states have to be tested in combination, which entails a much higher test effort.
Testability of requirements
Requirements can be tested if they meet the following criteria:
- unambiguous : the request cannot be interpreted differently.
- In quantitative terms : a requirement such as "fast response time" cannot be verified .
- practically verifiable : The test is not only theoretically possible, but can also be carried out in operational practice with limited effort.
- Stefan Jungmayr: Improving testability of object-oriented systems. , Dissertation, Berlin 2004, ISBN 3-89825-781-9
- www.testbarkeit.de Website with information and literature on the subject of software testability