Agile is a flexible development approach that allows for quick delivery of incremental changes. It requires constant communication and decision making across self-organizing cross-functional teams. Testing in Agile involves functional testing of each change by testers working with developers. It also requires regression testing after each iteration to prevent new defects, as well as integration, non-functional, and operational acceptance testing. Automating testing helps reduce rework time in Agile.