The 2 Types of Maintenance Testing
Software testing is an important part of any software development process and one of the numerous types of software testing is Maintenance Testing while others including unit testing, beta testing, integration testing, black-box and white box testing, and lots more.
Software testing are carried out at different stages of a software development lifecycle and an integral component of the development process, having the primary goal of identifying all the defects and errors in a software before the implementation phase.
After the software is released, there are needs for maintenance which include upgrades, tuning and lots more as changes of various sorts are inevitably required, either to fix defects discovered in operational use, to add new functionality, or to delete or alter already-delivered functionality.
When any change is made to an operational software, maintenance testing needs to be performed, to help validate the success of the changes and to check for possible errors or side effect in the whole system. However, the scope of maintenance testing depends on various factors which include the degree of risk of the change, the size of the change, and the size of the existing system.
Reasons for Software Maintenance
There are several reasons why software maintenance is required which likewise necessitate maintenance testing. These could include:
- Modification such as improvements, operating system or database upgrades, upgrades of COTS software, or patches for defects and vulnerabilities.
- Migrating from one platform to another.
- Testing restore/retrieve procedures.
- When application or system retires (reaches the end of its life).
- Functionality that remains in service for a long time.
The 2 Types of Maintenance Testing
When performing maintenance testing, there are two types to be considered:
- Confirmation Testing:
This is done to test the modified functionality. Here, a software tester has to test all the modifications (either small or big) made in the software thoroughly and make sure that there are no functionality issues and downtime. The purpose of a confirmation test is to confirm whether the original defect has been successfully fixed.
- Regression Testing:
This is done after the confirmation maintenance testing phase and its purpose is to test the existing functionality of the system. The complete system has to be tested to ensure that the modified functionality did not affect the functionality of the existing software.
Both confirmation testing and regression testing can be performed at all test levels. Regression test suites are run many times and generally evolve slowly and a strong candidate for automation. Automation of these tests should start early in any software project.
Impact Analysis for Maintenance
It is of noteworthy to point out the really important process in maintenance testing, which is impact analysis. Impact analysis evaluates the changes that were made for a maintenance release to identify the intended consequences as well as expected and possible side effects of a change, and to identify the areas in the system that will be affected by the change.
It is necessary to test the side effects and affected areas in the system for regressions, possibly after updating any existing tests affected by the change.
Impact analysis can be difficult if:
- software specifications are out of date or missing
- test cases are not documented or are out of date
- Bi-directional traceability between tests and the test basis has not been maintained
- Tool support is weak or non-existent
The objective of maintenance testing is slightly different from what it is during the development phase and sometimes more even more critical. This is because the software is already live and so any changes must be properly controlled before rolling the update out.
Testing is an area that is often undervalued, however, there are great reasons why it is important. Also Testing can be extremely challenging, that is why it of utmost important to get a dedicated software tester or team of testers such as Podtech, who are properly equipped with the necessary knowledge of software testing.