Code bases have grown
Version 1.0.1128K
Version CS64.5M
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
1990 2012
Lin
es o
f C
od
e Tho
usa
nd
s
Year of Release
Number of lines of code for Photoshop over time
Teams have changed
2000’SPr
oje
ct T
eam
Development Department
Data Department
Design & Architecture
Testing Department
PMO
NOW
Product Team
Developer
Developer
Developer
Tester
Scrum Master
Product Owner
Device Testing
Security
Performance Profiling
AccessibilityUsability
SafariMacOS
Microservices
CloudContinuous Delivery
Firefox
Chrome
Security
Internet Explorer
Network Topology
Connectivity
A/B Testing
AutomationSelenium
iOS
AndroidAPI
REST
SOAP
JSON
YAMLConfiguration
UX
Internationalisation
Feature Toggles
Monitoring
Regression Testing
Zero downtime deployments
Test in Production
Compliance Testing
Guerrilla Testing
Finding defects later is expensive
$5 $50 $500
$5,000
$-
$1,000
$2,000
$3,000
$4,000
$5,000
$6,000
TDD Build Test Integration Test System Test
Co
st
Testing Stage
Cost of defects at Google
Mark Striebeck presentation at XPDay 2009 Developer testing, from the dark ages to the age of enlightenment
Test code bases are big!
[CELLRANGE]
[CELLRANGE]
[CELLRANGE]
0
5
10
15
20
25
Application Unit/Integration Tests BDD Tests
Lin
es o
f C
od
e
Tho
usa
nd
s
Coding Skills Coding Skills
Web Development
•HTML
•CSS
•JavaScript
Automated Testing
•Selenium
•Gherkin/Cucumber
•Unit, Integration, API testing
Security
•OWASP
•SSL
•Networking
•OAuth
Cloud
•Azure
•AWS
•GCP
•Continuous Deployment
Languages
•Python
•C#
•Java
•Ruby
•SQL
Design & Architecture
•SOLID principles
•Clean Code
Traits of a Good
TesterTesting Traits
Domain Expertise
Analytical and Logical Thinking
“Test to Break” Approach
Great Communication
Skills
Awareness of Business Impact
Takes Customer Perspective
Traits of a Good
DeveloperDeveloper Traits?
Domain Expertise
Analytical and Logical Thinking
“Test to Break” Approach
Great Communication
Skills
Awareness of Business Impact
Takes Customer Perspective
Testing SkillsTesting Skills
Risk Management
Test Approach
and Design
Ad-Hoc and Exploratory
Testing
Black and White Box
Testing
Capacity and Load Testing
Usability testing
How can we improve a teams’ testing?
Improve developer awareness of tests
01Improve tester awareness of development
Improve developer awareness of exploratory testing
02Improve developers exploratory testing skills
Move to fully automated testing pipeline
03
Step 1
Testers focus on working
through test scenarios with
dev team at start of sprint
During sprint, primarily
exploratory testing
Developers agree with
tester whether test scenarios will be unit,
integration or end to end
tests
Developers implement
agreed scenarios
Improve developer awareness of tests
Step 2
Tester pairs with developers on exploratory testing
• Upskills developers to think more like a tester
• Adds more ‘testers’ to team
Developers pair with testers on automation testing
• Improves testers’ coding skills
• Peer review of automated test coverage
Testers focus more on other areas
• Coding
• UX
• Complex testing: security, performance, etc
Improve tester awareness of development
Improve developer awareness of exploratory testing
Step 3
Developer on Test
•DoTing
Remove full-time testers from team
•Frequent review of testing
•Mentoring role for developers
Focus on automating everything
•Enables more rapid releases
•Shortens feedback cycle
•Prevents team forgetting to do something
Improve developers exploratory testing skills
Move to fully automated testing pipeline
What happens to the testing role?
Treated more like Scrum Master role
• The better you are the less the team needs you
01Treated more like consultant role
• Provides short-term upskilling on specialised skills to team
02
What happens to the testers?
Change team role
• Product Owner/Manager
• Scrum Master
• UX Designer
• Developer
01Become more specialised
• Performance
• Security
• Automation
• Accessibility
02
Step 2
Tester pairs with developers on exploratory testing
• Upskills developers to think more like a tester
• Adds more ‘testers’ to team
Developers pair with testers on automation testing
• Improves testers’ coding skills
• Peer review of automated test coverage
Testers focus more on other areas
• Coding
• UX
• Complex testing: security, performance, etc
Improve tester awareness of development
Improve developer awareness of exploratory testing