Synchronizing Software Testing with Agile Requirements PracticPresentation Transcript
Synchronizing Software Testing with Agile Requirements Practices Jean McAuliffe, Dean Leffingwell May 2005
Background on Speakers
Product Manager, Rally Software Development
2 years Agile Development, Certified Scrum Master
Former Senior QA Manager for Rational RequisitePro.
Over 15 years experience in all aspects of software development (defining, developing, testing, training and supporting) for Software Development, Bio-Engineering and Aerospace companies
Advisor and coach to a number of developmental-stage software businesses.
Former Senior VP of Rational Software Corporation where he was responsible for the commercial introduction of the Rational Unified Process.
Lead author of the text Managing Software Requirements: Second Edition: A Use Case Approach, Addison Wesley, 2003
Agile requirements practices generally defer commitment to artifacts such as requirements until the “last responsible moment.” This challenges the test team to stay continuously synchronized with the product owners and developers as they have little lead time, if any, from the time requirements are available until the time the test artifacts must be in place.
This presentation describes the organizational and technical challenges associated with just-in-time agile requirements practices and techniques test teams can use to address them.
Context for Agile Testing
Keys for Success
Popular Agile Methods Agile Rational Unified Process (RUP) Scrum (Ken Schwaber) Feature Driven Development (Jeff DeLuca) Crystal (Alistair Cockburn) Lean Software Development (Mary Poppendieck) Adaptive Software Development (Jim Highsmith) XP (Kent Beck) Dynamic System Development Method (Dane Faulkner)
Excerpts from the Agile Manifesto
Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.
Welcome changing requirements , even late in development. Agile processes harness change for the customer's competitive advantage.
Working software is the primary measure of progress .
Deliver working software frequently , from a couple of weeks to a couple of months, with a preference to the shorter timescale.
Business people and developers must work together daily throughout the project.
Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done .
A Generalized Agile Release Process Release Iteration 1 Iteration 2 Iteration 3 Iteration …
Do Feature 1
Do Feature 2
Do Feature 3a
Do Feature 3b
Do Feature 4a
Do Feature 4b
Do Feature 5
Do Feature 4c
Do Feature 6
Do Feature 7
Agile Iteration Cadence Demo & Retro Iteration N Iteration N+1 Iteration N-1 Detailed Iteration Planning & Design Dev Feature Priority 1 Auto. Tests Feature 1 Dev Feature Priority 2 Dev Feature Priority 3 Auto. Tests Feature 3 Dev Feature Priority 4 Auto. Tests Feature 4 Dev Feature Priority 5 Auto. Tests Feature 5 Accept Accept Accept Auto. Tests Feature 2 Accept Accept Requirements Are Refined Initial Elaboration Requirements With Tests
What’s Different about Testing in Agile?
Just-In Time Requirements Elaboration
No SRS-level waterfall documents to drive testing plan
Requirements and Test Cases developed in parallel or test first strategy
More Frequent Iterations, More Frequent Releases
Testing needs to happen Early and Often
Frequent to continuous regression testing
High need to automate nearly everything
Everyone needs to Test
Two Levels of Testing
Iteration Vs. Release testing patterns
Technical Challenges Requirements are changing fast. How does test keep up? Test early and often. How exactly do we move testing forward? Need to move off manual testing and more into automation. How does this happen? Different kinds of testing need to happen at different times. How do these get managed?