agile testing
DESCRIPTION
TRANSCRIPT
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
Scope
ScopeTime
Time
Cost
Cost
Traditional development
Agiledevelopment
Locked
The cost of defects
Cost of defect
Time
Testing
Cost of defect
Time
Testing
Traditional development
Agiledevelopment
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
Integration test
System test
Acceptance test
Unit test
Acceptance test
Traditional development
Agiledevelopment
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?
Story 1 Story 2
Iteration 1
…
...
Acceptance test 1.1Acceptance
test 2
Unit test 1.1.1 Unit test 2
Code 2
AT 1.2 AT 1.3
UT 1.1.2 UT 1.1.3 UT 1.2 UT 1.3
Code 1.1.1 C 1.1.2 C 1.1.3 C 1.2 C 1.3
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
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.