Maintainability Testing

Maintainability Testing

Software Acceptance Testing
Software often spends substantially more of its lifetime being maintained than being developed. Maintenance testing is performed to test the changes to an operational system or the impact of a changed environment to an operational system. To ensure that the task of conducting maintenance is as efficient as possible, maintainability testing is performed to measure the ease with which code can be analyzed, changed and tested.

Typical maintainability objectives of affected stakeholders (e.g., the software owner or operator) include:

  • Minimizing the cost of owning or operating the software
  • Minimizing down time required for software maintenance

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).