Importance of Maintainability to a Good Software & Role of Maintenance Testing
Before going into the details of high sounding terms like maintainability etc, let us firstly understand the meaning of maintenance testing extensively used by experienced test managers in software testing parlance.
What Is Maintenance Testing?
Maintenance testing is the type of software testing that refers to testing the changes to an operational system or the impact of a changed environment to an operational system. In other words, it’s about keeping (maintaining) the achieved levels of quality across the entire life cycle of the software application. Quality here can mean one or more of the quality attributes described in ISO 9126 standard.
According to many experts, as post delivery changes are introduced to an existing application, each change could be considered to start a new Software Development Life Cycle (SDLC), More accurately, the project is now in a Software Maintenance Life Cycle (SMLC). Many
projects spend most of their time in a post-delivery SMLC rather than the pre-delivery SDLC.
Maintenance software testing is an activity performed in the SMLC and can be described in terms of the following principal activities:
1) Dynamic maintenance
2) Corrective maintenance
3) Adaptive maintenance
In general, the task of performing maintenance software testing is made more efficient when the software has good maintainability.
What Is Maintainability?
Rather like reliability, maintainability is a word we all know in testing but sometimes have difficulty explaining. It’s generally regarded as something we would like to have in our software, but it’s hard putting our finger on what maintainability actually is. The ISO 9126 Quality Model defines maintainability as “the ease with which a software product can be modified to correct defects, modified to meet new requirements, modified to make future maintenance easier or adapted to a changed environment:”
According to ISO 9126, maintainability can be described in terms of four sub attributes:
1) Analyzability: It relates to the effort required (usually by the developers) to diagnose defects or to identify parts of the software system requiring change.
2) Changeability: It relates to the effort required to actually fix defects or make improvements.
3) Stability: It is the likelihood that unexpected side effects occur as a result of making changes to the software. It’s what we have in mind when we sometimes say that the software is brittle.
4) Testability: It describes the effort required for testing changed software. This is one of the principal software quality attributes that directly affect our work.
What are the causes of Poor Maintainability?
We frequently experience the symptoms of poor software maintainability without appreciating the root causes. Few fundamental maintainability risks are listed in the following table
|Sr.||Basic Maintainability Risks||Repercussions of Poor Maintainability|
|1||Effort required for fixing defects and implementing changes might be more than planned.||If the size of the maintenance team performing these tasks is fixed (a common situation), this will also translate into longer time scales.|
|2||Time taken for maintenance tasks exceeds the fixed-length maintenance windows.||1) Production could be negatively affected (e.g., staff arriving for work find that an application server is unavailable due to the scheduled nightly maintenance window slipping).
2) Maintainers may be forced to take shortcuts to keep within agreed-upon maintenance periods. They may need to make assumptions regarding the implementation of required changes (perhaps due to poor documentation).
3) Penalties may be imposed if Service Level Agreements apply.
|3||Long-term buildup of poor maintainability resulting from the cumulative effects of bad software development practices.||1) Reliability levels slowly reduce.
2) The number of functional defects introduced by changes (regressions) increases.
3) Defects take longer to fix.
4) Maintenance staffs are put under steadily more pressure, which may even result in a further worsening of the situation.
If the maintenance costs of a project is substantially high like over 75%, we should certainly test it for maintainability.