Agile Testing
Patrik Wikström
Agenda
What is Agile?
Agile Testing
• Techniques
• Agile values in practice
• Skills
Agile development
Short iterations of working software
Provide business value continuously
Extreme Programming, Scrum, Lean Software
Development…
The software process steps
Traditional development
Agile development
Main variables of software development
Locked
Scope Time Cost
Time Cost Scope
Traditional Agile
development development
The cost of defects
Cost of defect Cost of defect
Time Time
Testing Testing
Traditional Agile
development development
Agile testing
Work with the customer to define acceptance test
Provide continuous feedback
• To the customer
• To the programmers
Exploratory testing
Automated testing
Programmers do unit testing
Test levels
Unit test Unit test
Integration test
System test
Acceptance test Acceptance test
Traditional Agile
development development
Unit testing
Developer feedback
TDD – Test Driven Development
• Design technique
Run at each check-in
xUnit
Continuous integration
Acceptance testing (1)
Customer feedback
Test the functionality in the current iteration
Run often
Should be automated
Can be done test-first (ATDD)
Acceptance testing (2)
Tools: Open-source, build your own, or commercial
• FitNesse – Table-based acceptance test framework using Wiki
• WATIR – ”Web Application Testing in Ruby” – next seminar
Automation
• Below the GUI
• Collaborate with developers on testability
What’s in an iteration?
Iteration 1
Story 1 Story 2
Acceptance
Acceptance test 1.1 AT 1.2 AT 1.3
test 2
…
Unit test 1.1.1 UT 1.1.2 UT 1.1.3 UT 1.2 UT 1.3 Unit test 2
Code 1.1.1 C 1.1.2 C 1.1.3 C 1.2 C 1.3 Code 2
Story 3
...
Exploratory testing
Exploratory testing is simultaneous learning, test design,
and test execution.
What’s the best test I can perform, right now?
James Bach
Tutorial: Exploratory Testing Explained
Malmö, March 9
Non-functional testing
Security, performance, usability
Performed by
• Specialist
• Team
Performed in
• Every iteration
• Last iteration
Pair testing
With testers
• Distribute knowledge between testers
With developers
• Testers learn about the technology used and about
automation
• Developers learn about testing
With customers
• Testers learn about the domain
• Customers learn about testing
Agile Values in practice
Individuals and interactions over process and tools
• Work as one team, do not act as the quality police
• Face-to-face communication
Working software over comprehensive documentation
• Lightweight test reporting – “dashboard”
• Automated unit and acceptance tests
Customer collaboration over contract negotiation
Responding to change over following a plan
• Just-in-time test planning
• No BDUF of automation framework
• Refactor automated tests
Controversy / Confusion
All acceptance tests must be automated
All manual tests must be fully scripted with expected
outcomes
Programmer-centric view (No testers are needed?)
Terminology
Skills
“Traditional” testing skills
Automation / development
Exploratory testing
Communication and collaboration
• With developers in their language
• With customers in their language
Benefits of being an agile tester
Work together as one team towards a common goal
Less risk of squeezed test period
Test all the time, not just at the end
Thank you for listening!
Any questions?
[Link]@[Link]
References
Beck, K. (1999) Extreme Programming Explained: Embrace
Change. Addison-Wesley.
Cockburn, A. (2004) Crystal Clear: A Human-Powered
Methodology for Small Teams. Addison-Wesley.
Crispin, L., & House, T. (2002) Testing Extreme Programming.
Addison-Wesley.
Hendrickson, E. (2004) Agility for Testers. Pacific Northwest
Software Quality Conference 2004.
Kohl, J. (2004) Pair Testing. Better Software, Jan 2004.
Pettichord, B. (2004) Agile Testing Challenges. Pacific Northwest
Software Quality Conference 2004.
Poppendieck, M. & Poppendieck, T. (2003) Lean Software
Development. Addison-Wesley.
Schwaber, K. & Beedle, M. (2001) Agile Software Development
with SCRUM. Prentice Hall.