What is Maintainability Testing?
Maintainability Testing is performed to evaluate the software or system’s ability to get modified without any issues and to satisfy and meet the requirement change and needs of the user. Once the system is deployed to the production environment, it requires maintenance.
The software is expected to undergo several changes to fix defects, add new functionalities, modify the existing functionalities, and changes in non-functional characteristics of software. It is a very important testing type throughout the software life cycle as it analyzes and tests the system which is subjected to changes. This type of testing ensures the flexible implementation of the modifications in the system.
The ISO25010 standard defines five sub characteristics for maintainability:
Modularity – The degree to which a system or module is composed of discrete components so that a change to one component has minimal impact on other components.
Reusability – The degree to which an assertion can be used in more than one system determines the system’s reusability.
Analyzability – The degree of effectiveness and efficiency with which it is possible to assess the impact on a system, of the change, or to diagnose a product for deficiencies or causes of failures, or to identify parts to be modified.
Modifiability – The degree to which a product or system can be effectively and efficiently modified without introducing defects or degrading existing product quality.
Testability – The degree of effectiveness and efficiency with which test criteria can be established for a system. Tests can be performed to determine if the criteria have been met.
Checklist of Maintainability Testing
- Testers verify the development of the standards for structured programming, standards for database approach, and standards for user interfaces.
- Verify the input, processing, and output whether they are implemented separately
- Verifying the reusability feature by assigning proper parameters with necessary conditions for programs.
- Verify the system is properly distributed and algorithms are optimized.
- Verify the system is distributed.
Categories of Maintainability Testing
Corrective maintenance: It suggests fixing the problems. The maintainability of the system is measured by the amount of time required to diagnose and fix the problems as soon as it is identified.
Perfective maintenance: It suggests the system’s modifications. The maintainability of the system is measured by the amount of effort required to make enhancements to the system.
Adaptive maintenance: It suggests adaptiveness to the changes in the special environment. This is used to test the changes in the environment. The effort required to make the adaptations required by the system.
Preventive maintenance: It suggests the actions for reducing expenditures, needed for system support. It refers to reduce future maintenance costs.
Factors used in maintainability assessment
- Size
- Maintainers’ perception
- Complexity
- Environmental facilities
- Structure
- Maintenance relationships
- Development process
- System users/customers
- Documentation
- Maintenance team
- Development team
- Test facilities
- Development timescale
- Operating procedures
- Maintenance procedures
- Problem change traffic
- Development relationships
- Business change in traffic
Measures
Maintainability testing shall be measured in the following ways:
Static testing – shall be measured as the percentage of the total specified maintainability factors assessed.
Examples of static measurements are:
- The volume of the code which is measured by lines-of-code
- The cyclomatic complexity of a unit or the system as a whole
- Comment to code ratio
- Nesting depth of decision statements
- Coupling parameter by measuring the number of data items passed between modules
Dynamic testing – as a percentage of the specified maintainability requirements which have been exercised.
Examples of dynamic measurements are:
- Elapsed time for implementing a change
- Stability of the system determine through mean time between failures