New versions of software imply a need for new tests for the new functionality, and often changes to existing tests here existing functionality has changed. Furthermore, as the system changes some tests will become redundant, either because the functionality they test has been removed or because new tests have superseded their purpose. All of this contributes to the maintenance costs.
Software maintenance is a standard part of any software life cycle but often little thought is given to the maintenance of the tests. A Test Suite comprising test documentation, test data, and expected outcomes is a valuable resource that ought to be regarded as equally important as the software it exercises.
Maintenance costs are more significant for automated testing than for manual testing because the manual tester is able to implement changes 'on the fly.' For automated tests all the detail has to be specified in one way or another; nothing can be left for the tool to decide at runtime simply because the tool has no intelligence. For example, a software system for a commercial organization may record client names and addresses. Some tests will involve adding new clients to the database. If the system is changed to include the telephone number for each client the tests will need to be changed to either add a telephone number or skip over that new field in some way. A manual tester faced with the instruction 'Add details of a new client' will enter the details of an imaginary client; it will make no difference when the new system asks for a telephone number. In this case it is not necessary to change the test. In an automated testing environment, the testing tool will need to be told beforehand what the telephone number is to be or how to skip over the field. Otherwise when the test is executed, the test will become out of step with the software and will therefore fail.