Maintenance Testing

Intermediate

Maintenance Testing is the process of testing changes made to an existing software system. It aims to verify that modifications, such as bug fixes or new features, work correctly and have not negatively impacted the stability or functionality of the unchanged parts of the application.

First used·1980s

Definitions·1

Synonyms·2

Category·Software Testing

Also known as

Post-release TestingSustaining Engineering Testing

Definitions

What it means.

  1. 01

    Maintenance Testing in Software Development

    In the context of the software development lifecycle, Maintenance Testing refers to the testing of an existing and operational software application that has been modified. These modifications can be due to bug fixes, enhancements, migrations to a new environment, or planned upgrades.

    The primary goal is not to test the entire application from scratch, but to verify the changes and ensure that no new defects have been introduced into the unchanged, existing parts of the system. It is a crucial activity for maintaining the quality and stability of software over its lifespan.

    Key Activities in Maintenance Testing:

    • Impact Analysis: Before testing begins, an impact analysis is performed to identify the potential consequences of the changes. This helps in determining which parts of the system might be affected and need to be tested. It is the foundation for scoping the testing effort effectively.

    • Confirmation Testing (Re-testing): This involves testing the specific part of the software that was modified to confirm that the reported bug has been fixed or the new feature works as expected. For example, if a bug was fixed in a login form, confirmation testing would involve trying to reproduce the original bug to ensure it's gone.

    • Regression Testing: This is arguably the most critical part of maintenance testing. It involves re-running existing test cases on the unchanged parts of the application to ensure that the recent modifications have not caused any unintended side effects or broken existing functionality. A comprehensive suite of automated regression tests is highly valuable here.

    Triggers for Maintenance Testing:

    • Corrective Maintenance: Fixing defects found by users in a live environment.
    • Perfective Maintenance: Adding new features or enhancements to improve the software.
    • Adaptive Maintenance: Modifying the software to work in a new or changed environment (e.g., a new operating system, database, or hardware).
    • Preventive Maintenance: Updating the software to prevent future problems, such as refactoring code for better maintainability.

Origin

Where it comes from.

Etymology

The term is a compound of 'Maintenance' and 'Testing'. 'Maintenance' comes from the Old French 'maintenance', meaning 'support, assistance'. 'Testing' originates from the Old French 'tester', meaning 'to try or prove'. In software, it literally means 'testing to support or sustain an existing system'.

Historical context

In the early days of computing (1950s-1960s), software was often simple and had a short lifespan. The concept of long-term maintenance was not a primary concern. As software systems grew in complexity and became integral to business operations in the 1970s and 1980s, their lifespans extended dramatically.

This created a new challenge: modifying and updating these large, legacy systems without breaking them. Initially, changes were often made with minimal testing, leading to a phenomenon where fixing one bug would introduce several new ones. This highlighted the need for a structured approach.

The discipline of software engineering matured, and formal testing methodologies were established. Maintenance Testing emerged as a distinct practice to address the risks associated with changing operational software. It formalized the importance of regression testing as a safety net, ensuring that the stability of the existing system was preserved while it evolved. The rise of automated testing tools further solidified its role, making it feasible to run large regression suites efficiently.

Usage

In context.

  • After deploying the hotfix, the QA team performed extensive Maintenance Testing to ensure no new bugs were introduced into the production environment.

  • Our Maintenance Testing strategy relies heavily on a robust suite of automated regression tests that run every time a change is merged.

  • The scope of the Post-release Testing was determined by a thorough impact analysis of the code modifications.

FAQ

Common questions.

Testing a new application involves verifying all its features against requirements for the first time. Maintenance Testing, on the other hand, is performed on an existing, operational system. Its primary focus is on verifying the specific changes (like bug fixes or enhancements) and, crucially, ensuring these changes have not adversely affected the stability or functionality of the rest of the system through regression testing.

Taxonomy

Filed under.

Categories

Software TestingSoftware Maintenance

Tags

TestingRegression TestingSoftware LifecycleQuality AssuranceSoftware Maintenance