SaveMyCert
Log in
5 of 5 free questions left today·for 30 a day
Testing Throughout the Software Development Lifecycle

Maintenance Testing in CTFL: Categories, Triggers and Scope

10 min readCTFL · Testing Throughout the Software Development LifecycleUpdated

Maintenance testing is the testing of changes to a software system that is already operational, whether the change is to its code, its environment or its life (retirement). This CTFL lesson covers syllabus section 2.3: the categories of maintenance, planned releases versus hot fixes, impact analysis, what testing a production change evaluates, the factors that set the scope of maintenance testing, and the three groups of triggers — modification, upgrade or migration of the operational environment, and retirement.

What you’ll learn
  • Define maintenance testing and recognise when testing a change counts as maintenance testing.
  • Classify a change as corrective, adaptive, or improving performance or maintainability from its reason.
  • Distinguish planned (release-based) releases from unplanned releases such as hot fixes.
  • Explain when impact analysis can be done and how it supports the decision to make a change.
  • Explain why testing a production change covers both the change and regressions in unchanged parts, and name the three factors that set the scope.
  • Classify events into the modification, upgrade/migration and retirement triggers and identify the testing each one calls for, including data conversion, archiving, and restore and retrieval tests.

What is maintenance testing?

Maintenance testing is the testing of changes to a system that is already operational — software that is in production and being used. The syllabus defines it by the situation rather than as a test level of its own (in common ISTQB usage it can involve any test level and test type): it is defined by when it happens (after release) and why (something about a live system has changed).

The change does not have to be in the code. Maintenance testing is needed whenever an operational system or its environment changes: a code fix, a new feature in a scheduled release, new infrastructure or a new version of the platform underneath the application, a move to another platform, or the system being retired. Testing of software that has never been released — for example, system testing of a new product before its first launch — is not maintenance testing, even if it happens late in a project.

Compared with testing during initial development, maintenance testing has two jobs at once (covered below): confirm that the change itself works, and check that the large, unchanged rest of the live system still works.

Categories of maintenance: corrective, adaptive and improvement

The CTFL syllabus, referring to ISO/IEC 14764, groups maintenance by the reason for the change. The reason, not the size or urgency of the change, decides the category.

CategoryReason for the changeExample
CorrectiveA defect in the live system is fixedA shipping-cost rule charges the wrong rate for one region and is corrected
AdaptiveThe environment changed, and the software is adapted so it keeps workingA mobile platform release changes its permissions model, so the app is updated to keep working on it
Improving performanceThe system works but should be faster or use fewer resourcesA slow report query is optimised
Improving maintainabilityThe system works but future changes should take less effortCode is restructured without changing its behaviour

Two distinctions are easy to blur. Corrective vs adaptive: corrective needs a defect; adaptive needs an environment change. A browser withdrawing a feature the application relied on is not a defect in the application, so reworking the application to keep working in that browser is adaptive. Performance vs maintainability: both improve a system that already works, but performance targets speed or resource use, while maintainability targets the cost and effort of future change (often with behaviour unchanged).

Planned releases and unplanned hot fixes

Maintenance reaches production in two ways: planned releases/deployments and unplanned releases/deployments.

  • Planned (release-based): changes are bundled and shipped on a known schedule — for example, enhancements every quarter, or a defect fix that waits for the next scheduled release.
  • Unplanned (hot fixes): a change is deployed outside the normal schedule because it cannot wait — typically a severe production failure or an urgent security vulnerability fixed and deployed within hours.

Planned vs unplanned describes how the change is delivered; it is independent of the maintenance category. A corrective change can ship as a hot fix or in the next scheduled release. Hot fixes are usually delivered under time pressure. The syllabus does not name urgency as a scope factor, so a reasonable reading is that the scope is still set by the risk of the change and the system around it (see the scope factors below), even when the schedule is tight.

Impact analysis before a change

Impact analysis identifies which parts of a system could be affected by a change, and it may be done before the change is made to help decide whether the change should be made at all, based on its potential consequences in other areas of the system.

That timing matters. Impact analysis is not only a post-change activity to pick regression tests; it is input to a decision. If a proposed change touches a module that many other parts reuse — for example a currency-rounding routine that quotes, customer statements and an outbound file feed all call — the analysis shows the change has wide consequences. The business can then weigh the benefit against the risk and the cost of testing before approving it.

When the change goes ahead, the same result also informs testing: a change with a wide impact means a wider maintenance testing scope, with more regression testing across the affected areas, than a change confined to one isolated module.

What testing a change in production evaluates

Testing a change to a system in production evaluates two things:

  1. The success of the implementation of the change — does the fix, enhancement or adaptation do what it was meant to do?
  2. Possible regressions in the parts of the system that remain unchanged — which is usually most of the system.

The second point is why maintenance testing reaches beyond the modules that were edited. A change to two modules can break callers, shared data, interfaces or configurations elsewhere; the unchanged parts are what users relied on yesterday, and a live system's users notice when they stop working. A quick test of only the changed lines therefore checks the first point and ignores the second.

(How confirmation testing and regression testing differ in general, and why regression tests are good automation candidates, belongs to the test levels and test types lesson.)

What determines the scope of maintenance testing

The scope of maintenance testing typically depends on three factors:

  • The degree of risk of the change — how much harm a failure in the changed area could cause. Rewording an internal tooltip carries little risk; altering the dose calculation in a hospital prescribing system carries a lot.
  • The size of the existing system — a larger, more interconnected system has more unchanged parts in which a regression could appear.
  • The size of the change — a larger change has more to confirm and more ways to affect other parts.

No single factor decides alone: the three combine, so a small change can still need wide testing when it sits in high-risk logic, and a large change in a low-risk, isolated area may need less.

Maintenance testing triggers: modification, migration and retirement

The events that trigger maintenance and maintenance testing fall into three groups:

TriggerTypical eventsTesting it calls for
ModificationPlanned enhancements (release-based), corrective changes, hot fixesTests of the changed software plus regression testing of unchanged parts
Upgrade or migration of the operational environmentMoving from one platform to another, upgrading infrastructure or platform software the system runs on, other changes to the operational environmentTests of the new environment and of the changed software; data conversion tests when data from another application is migrated into the system being maintained
RetirementThe application reaches the end of its life and is decommissionedData archiving tests when long data-retention periods are required; tests of restore and retrieval procedures after archiving if data may be needed during the retention period

Note that corrective changes and hot fixes are modifications: classify by what happened to the live system. A change to the system's software is a modification whatever its reason or delivery speed.

Upgrades, migrations and data conversion

An upgrade or migration of the operational environment can require two kinds of tests: tests of the new environment (does the platform, OS or infrastructure work as expected?) and tests of the changed software (if the application was adapted or partly rewritten to fit the new environment, does that code work?).

Data conversion tests are tied to a specific situation: data from another application is migrated into the system being maintained — for example, a city library service taking member records from a neighbouring library's separate catalogue application into the lending system it maintains. The syllabus ties data conversion tests to that cross-application case; a reasonable reading is that moving a system's own data along with it to a new platform belongs to the environment migration rather than being a data conversion in this sense.

A purely environmental change still counts. Replacing the hardware a live warehouse-management system runs on, with no change to its features, is an operational environment change — and testing it is maintenance testing.

Retirement: data archiving, restore and retrieval

Retirement — an application reaching the end of its life — is a maintenance trigger even though the system is being switched off. Two kinds of testing may be needed:

  • Data archiving tests when long data-retention periods are required, for example records that must be kept for many years for legal or regulatory reasons. They check that the data is archived completely and correctly.
  • Restore and retrieval procedure tests after archiving, in case some data is needed during the archiving period — for example when a legal dispute needs one specific historical record. Archiving that nobody can read back is not useful.

Retirement often comes with migration. When one system is switched off and its live data moves elsewhere, two triggers occur together and point at different systems: data migrated into a maintained system from the retiring application is a migration concern (data conversion tests on the receiving side), while data that must be kept but not moved is a retirement concern (archiving, and possibly restore and retrieval tests).

Retirement concerns the system being maintained. A change to something underneath it, such as its platform or a component it depends on, is an environment trigger for that system, not its retirement.

Tip. Questions are mostly K2 understanding items: recognising whether a situation is maintenance testing, classifying a change into a maintenance category by its reason, assigning an event to a trigger group, and knowing what testing a production change evaluates, when impact analysis can be done and what it supports, the factors that set the scope of maintenance testing, and which tests each trigger calls for (tests of the new environment and changed software, data conversion, data archiving, restore and retrieval).

Key takeaways
  • Maintenance testing tests changes to an operational system — to its code, its environment, or its retirement.
  • Maintenance categories follow the reason for the change: corrective (fix a defect), adaptive (fit a changed environment), improving performance, improving maintainability (ISO/IEC 14764).
  • Maintenance ships as planned, release-based deployments or as unplanned deployments (hot fixes); delivery speed is not one of the scope factors.
  • Impact analysis may be done before a change, to help decide whether to make it based on its consequences in other areas.
  • Testing a production change evaluates the success of the change and checks for regressions in unchanged parts — usually most of the system.
  • Scope depends on the degree of risk of the change, the size of the existing system and the size of the change.
  • Triggers: modification (enhancements, corrective changes, hot fixes); upgrade or migration of the operational environment (tests of the new environment and changed software; data conversion when another application's data is migrated in); retirement (data archiving; restore and retrieval).
  • An environment-only change to a live system, such as a hardware or platform change with no new features, is still a maintenance testing trigger.

Frequently asked questions

What is maintenance testing in ISTQB CTFL?

In ISTQB CTFL, maintenance testing is testing changes to a system that is already operational. The change can be a code modification, an upgrade or migration of the operational environment, or the retirement of the system. It evaluates whether the change succeeded and checks for regressions in the unchanged parts of the system.

What are the triggers for maintenance testing?

The CTFL syllabus groups maintenance testing triggers into three: modification (planned enhancements, corrective changes and hot fixes), upgrade or migration of the operational environment (such as moving to another platform), and retirement of the application at the end of its life.

Is a hot fix a separate maintenance trigger?

No. A hot fix is an unplanned release of a change to a live system, and it belongs to the modification trigger alongside planned enhancements and corrective changes. Planned versus unplanned describes how the change is delivered, not which trigger group it belongs to.

What decides the scope of maintenance testing?

The scope of maintenance testing typically depends on three factors: the degree of risk of the change, the size of the existing system and the size of the change. A small change in high-risk logic inside a large system can still need wide regression testing.

When are data conversion tests needed during maintenance?

Data conversion tests are needed when data from another application is migrated into the system being maintained, as part of an upgrade or migration trigger. The syllabus ties them to that cross-application case rather than to every movement of data.

What testing does retiring a system require?

Retiring a system can require data archiving tests when data must be kept for a long retention period, and tests of the restore and retrieval procedures in case some archived data is needed during that period.

When is impact analysis done in maintenance?

Impact analysis may be done before a change is made, to help decide whether the change should be made at all based on its potential consequences in other areas of the system. Its results also show how wide the maintenance testing needs to be if the change goes ahead.

Source

This lesson covers the "Testing Throughout the Software Development Lifecycle" domain of the official CTFL exam guide. Vendors revise their guides — check the source for the current version.

Sign up free to mark lessons complete, bookmark topics and track your exam readiness.

Spotted a mistake in this lesson?