There are five key methods or ways of approaching software development and testing used in Agile testing environments:
- Test-driven development
- Behavior-driven development
- Acceptance test-driven development
- Exploratory testing
- Session-based testing
In test-driven development (TDD), the quintessential Agile testing style, tests are created prior to writing code, and testing, programming, and design are deeply interwoven. Developers write “just enough” code to comply with a unit test, which describes a technical aspect of a program, and then refactor the code once the test has been passed. Acceptance test-driven development (ATDD) also uses a test-first methodology but takes it one step further by getting input directly from the customer or client regarding how the product will be used. Acceptance criteria are translated into tests against which code is written. The focus shifts from technical-facing unit testing to user POV-driven functional testing.
Behavior-driven development (BDD) is essentially a refinement of TDD and ATDD practices. It starts not with a test but with an easy-to-understand scenario or user story that is used to guide development and testing. It helps facilitate communication and foster collaboration among developers, testers, and product owners. The emphasis in BDD Agile testing is on supporting specific user behaviors and business outcomes.
In exploratory testing, testers mimic the way users interact with software. Testing is typically unscripted but not random or unstructured. Testers use their creativity and critical thinking skills to experiment with and find actions that will break the software being tested. Session-based testing builds on this approach and provides additional structure. Tests are carried out in time-boxed, uninterrupted sessions, forcing testers to further focus their efforts and report on their findings from each session.
The collaborative nature of, and regular communication fostered by, Agile testing helps teams better understand product requirements and thereby deliver a better product.