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
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:
* Self managed teams
* Chicken and pigs
* Onsite customer
* Daily standups
* 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