Maintenance testing involves testing software changes and enhancements to ensure they do not impact existing functionality. It has two parts - changes are tested thoroughly and regression testing is done to check for unintended consequences. Test cases, plans and reports are updated and preserved along with any changes to requirements or specifications. There are two types of modifications - planned, like adding features or fixing defects; and ad-hoc for immediate issues.