Maintenance Testing
What is maintenance testing?
Once deployed to production environments, software and systems need to undergo maintenance testing. Changes of various sorts are almost inevitable in delivered software and systems. You either fix defects discovered in operational use, add new functionality, to delete or alter already-delivered functionality. Maintenance is also needed to preserve or improve non-functional quality characteristics of the component or system over its lifetime, especially performance efficiency, compatibility, reliability, security, and portability.
When any changes are made, maintenance testing should be performed to evaluate the success with which made the changes and to check for possible side-effects (e.g., regressions) in parts of the system that remain unchanged (which is usually most of the system). Maintenance can involve planned releases and unplanned releases (hotfixes).
Triggers for maintenance
Such as planned enhancements (e.g., release-based), corrective and emergency changes, changes in the operational environment (such as planned operating system or database upgrades), upgrades of COTS software, and patches for defects and vulnerabilities
Such as from one platform to another, which can require operational tests of the new environment as well as of the changed software or tests of data conversion when data from another application will be migrated into the system being maintained.
When an application reaches the end of its life. When an application or system is retired, this can require testing of data migration or archive if long data-retention periods are required.
Testing restore/retrieve procedures after archiving for long retention periods may also be needed.
Regression testing may be needed to ensure that any functionality that remains in service still works.
Maintenance testing for Internet of Things systems may be triggered by introducing completely new or modified things, such as hardware devices and software services, into the overall system.
The maintenance testing for such systems places particular emphasis on integration testing at different levels (e.g., network level, application level) and on security aspects, particularly personal data.
Types of maintenance testing
Confirmation maintenance testing is done to test the modified functionality of the software.
Regression testing is repeated testing done on a recently modified program or code. It is done to confirm that existing features have not been affected due to the change(s).