Agile software development and testing

Agile software development and testing

So what makes an iterative development process “Agile”:

1. Each iteration delivers working software.
2. Phases within each iteration are nearly concurrent.
3. Code base is kept fresh and flexible using continous integration and automated build
processes.
4. Team are self-managing.
5. Lean principles and techniques are employed to eliminate waste and rigid processes.
Emphasis is put on adhoc and “as needed” meetings and communication.

Agile practice fall into two camps:
Management Practices:
* Self managed teams
* Chicken and pigs
* Onsite customer
* Daily standups

Engineering practices:
* Pair programming
* Test driven development
* Continous integration
* Collective code ownership
* Merciless refactoring
* Simple design
* Coding standards
* Automated acceptance testing

Definition of Agile testing

Features are not done until they’re shippable, so all testing needs to happen within iterationTesting and development phases are concurrentMaximize feedbackTest driven development and automated testing is essentialImportance of build process:Teams use continous integration and build process to get track and estimate progressAutomated unit tests provide frequent feedbackAgile teams are cross functional and include expertise in every area of applicaiton development. Each team has team lead/project manager, business analyst, architect, developers (of course) and testers. Additionaly, Individuals in a team are themselves cross functional, which means BA will do more of testing, developers will do more architecture and testing in addition to development.Not all testing can happen within development iteration. UAT, stress testing, non functional testing generally happen after development phase is complete