Maintainability tests should be included in a test strategy and/or test approach where one or more of the following factors apply:
- Software changes are likely after the software enters production (e.g., to correct defects or introduce planned updates)
- The benefits of achieving maintainability objectives (see above) over the software lifecycle are considered by the affected stakeholders to outweigh the costs of performing the maintainability tests and making any required changes
- The risks of poor software maintainability (e.g., long response times to defects reported by users and/or customers) justify conducting maintainability tests
Appropriate techniques for maintainability testing include static analysis and reviews should be started as soon as the design documents are available and should continue throughout the code implementation effort. Since maintainability is built into the code and the documentation for each individual code component, maintainability can be evaluated early in the lifecycle without having to wait for a completed and running system.
Dynamic maintainability testing focuses on the documented procedures developed for maintaining a particular application (e.g., for performing software upgrades). Selections of maintenance scenarios are used as test cases to ensure the required service levels are attainable with the documented procedures. This form of testing is particularly relevant where the underlying infrastructure is complex, and support procedures may involve multiple departments/organizations. This form of testing may take place as part of Operational Acceptance Testing (OAT).