Maintenance testing is done on the already deployed software. The deployed software needs to be enhanced, changed or migrated to other hardware. The testing done during this enhancement, change and migration cycle is known as maintenance testing.
Once the software is deployed in operational environment it needs some maintenance from time to time in order to avoid system breakdown.
Why maintenance testing
Any changes made in software should be tested thoroughly.
If the changes made in software does not affect the existing functionality of the software, so regression testing is also done.
User may need some more new features in the existing software that requires modifications to be done in the existing software and these modifications need to be tested.
End user might want to migrate the software to other latest hardware platform or change the environment like OS version, Database version etc. which requires testing the whole application on new platforms and environment.