Agile Software Development generally refers to incremental, collaborative software development
approaches that provide alternatives to 'heavyweight', documentation-driven, waterfall-type
development practices. It grew out of such approaches as Extreme Programming, SCRUM, DSDM, Crystal,
and other 'lightweight' methodologies. In 2001 a group of software development and test
practitioners gathered to discuss lightweight methods and created the
'Agile Manifesto' which describes the Agile
approach values and lists 12 principles that describe Agile software development.
In reality many organizations implement these principles to widely varying degrees (and with widely
varying degrees of success) and still call their approach 'Agile'.
The impact of Agile approaches on software testing can also vary widely but often includes the following:
The impact of Agile approaches on software testing can also vary widely but often includes the following:
- Requirements and documentation are often minimal and when present are often in the form of high-level 'user stories' and 'acceptance tests'.
- Requirements can be added or changed often
- Iterative development/test cycles ('sprints') are often in the range of 1-3 weeks. Both new functionality testing and regression testing (preferably automated) may occur within each iterative cycle.
- Close collaboration between testers and developers, product owners and other team members
- Short daily project status 'standup' meetings that include testers.
- Common testing-related practices in agile projects may include test-driven development, extensive unit testing and unit test automation, API-level test automation, exploratory and session-based testing, UI test automation.
- Testers may be heavily involved in fleshing out requirements details, including both functional and non-functional requirements.