Extreme Programming Information
Extreme Programming (XP) is a software development approach for small teams on risk-prone projects with unstable requirements. It was created by Kent Beck who described the approach in his book ‘Extreme Programming Explained’. Testing (‘extreme testing’) is a core aspect of Extreme Programming. Programmers are expected to write unit and functional test code first – before writing the application code. Test code is under source control along with the rest of the code. Customers are expected to be an integral part of the project team and to help develope scenarios for acceptance/black box testing. Acceptance tests are preferably automated, and are modified and rerun for each of the frequent development iterations. QA and test personnel are also required to be an integral part of the project team. Detailed requirements documentation is not used, and frequent re-scheduling, re-estimating, and re-prioritizing is expected. For more info on XP and other ‘agile’ software development approaches (Scrum, Crystal, etc.)
Agile and XP Testing Resources
Manifesto for Agile Software Development: The origin of the ‘Agile’ approach and the twelve guiding principles of agile software development.
Agile Testing Articles: Large collection of articles realted to Agile testing at Agile Alliance web site.
Agile Methodologies: Martin Fowler’s online discussion of ‘agile’ methodologies (XP, Scrum, Crystal, FDD, DSDM, etc.) includes summaries of various approaches as well as reference information, and factors to consider in choosing these approaches.
Perils and Pitfalls of Agile Adoption: Article by Matt Heuser at InformIT site, includes discussion of risks such as that agile methods are easy to misunderstand, that it’s easy to think you’re doing Agile right, and be wrong, and that agile methods make value (or lack of value) visible.
Agile Testing: Series of agile-testing oriented articles by Jonathan Kohl on the InformIT site, includes articles on ‘Test-Driven Development from a Conventional Software Testing Perspective’, ‘Exploratory Testing on Agile Teams’, ‘Conventional Software Testing on an Extreme Programming Team’, ‘Conventional Software Testing on a Scrum Team’.
Agile Testing – What is it? Can it work? PDF version of an article by Bret Pettichord that summarizes considerations and issues in testing in agile environments.
An Uncomfortable Truth about Agile Testing: Article by Jeff Patton on the StickyMinds site about some of the potential difficulties of testing on an Agile project.
XP Resources: Large collection of resources from Ron Jeffries about ‘Extreme Programming’ including a discussion of how QA fits into the XP approach, XP Magazine archives with articles such as ‘Test-First Design’, ‘Incremental Requirements’, ‘Extreme Programming and the CMM’, and more. Also see ‘The Rules and Practices of Extreme Programming ‘ at the www.extremeprogramming.org web site.
XP in a Safety-Critical Environment: Interesting article by Mary and Tom Poppendieck concerning the applicability of XP practices in safety-critical software development.
Scrum: Web site of Advanced Development Methods, Inc and their Scrum methodology, a team-based agile approach to iteratively, incrementally develop software with rapidly changing requirements.
Crystal: Web site about Allistair Cockburn’s collection of ‘shrink-to-fit, human-powered software development methodologies’ based on the premise that each project needs an approach appropriate to its particular member talents and people issues, and that efficiency is best maximized via frequent deliveries and improved communications. Methodology suggestions are grouped by team size (no larger than 50 as of 2004) and recommended for teams at a single geographic location working on non-life-critical projects.
image credit: umsl.edu