2. Four Schools of Software Testing
Analytical
School
Factory
School
Quality
Assurance
School
Context-
Driven
School
2
3. Analytical School: Core Beliefs
• Software is a logical artifact
• Testing is a branch of CS/Mathematics
• Objective, rigorous, comprehensive
• Testing techniques must have a logico-mathematical form
• “one right answer”
• Testing is technical
Key Question:
• Which techniques should we use?
sees testing as rigorous and technical with many proponents in academia
3
4. Factory School: Core Beliefs
• Software development is a project
• Testing is a measure of progress
• Testing must be managed
• Predictable, repeatable, planned
• Testing must be cost-effective
• Low-skilled workers require direction
• Testing is following rules
Key Question:
• How can we measure whether we’re making progress? When will we be done?
sees testing as a way to measure progress with emphasis on cost and repeatable
standards
4
5. Quality Assurance School: Core Beliefs
• Software quality requires discipline
• Testing determines whether development processes are being
followed.
• Testers may need to police developers to follow the rules
• Testers have to protect users from bad software
Key Question:
• Are we following a good process?
emphasizes process, policing developers and acting as the
gatekeeper
5
7. The Seven Basic Principles of the Context-
Driven School
1. The value of any practice depends on its context.
2. There are good practices in context, but there are no best practices.
3. People, working together, are the most important part of any project’s context.
4. Projects unfold over time in ways that are often not predictable.
5. The product is a solution. If the problem isn’t solved, the product doesn’t work.
6. Good software testing is a challenging intellectual process.
7. Only through judgment and skill, exercised cooperatively throughout the entire project, are
we able to do the right things at the right times to effectively test our products.
Key Question:
What tests would be most valuable right now?
emphasizes people, seeking bugs that stakeholders care about
7
8. Examples
EXPLORATORY TESTING
◦ Concurrent test design and test execution
◦ Rapid learning
- develops team understanding of risks
- develops tester’s ability to design tests for
identified risks
8
9. A fifth testing
school?
AGILE SCHOOL
uses testing to prove
that development is
complete;
Emphasizes
automated testing
9
10. Agile School: Core Beliefs
• Software is an ongoing conversation
• Testing tells us that a development story is complete
• Tests must be automated
Key Question:
• Is the story done?
10
12. Differences Between Perspectives
12
Analytical School Factory School Quality Assurance School Context-Driven School
Usability Testing
Not a form of
testing.
Outside the testing skill
set. Let someone else do
it.
Do it if requested by
management.
Reluctant.
Hard to prove
noncompliance.
Definitely do it.
Usability bugs are bugs.
Testing Without Specs Impossible
Some kind of spec is
necessary
Force developers to
follow the process
Do what you can
to be useful
Ask questions if
necessary
Dig up “hidden”
specs
Tester Certification
Little preference
either way
Make testers
easier
to hire, train and manage
Increase status
Existing
certifications
are based on practice, not
skill
13. What is testing?
13
Analytical School Factory School Quality
Assurance
School
Context-Driven
School
Agile Testing
School
A branch of
computer science
and mathematics
A managed
process
A branch of
software QA
A branch of
development
Part of customer
role
15. Questions?
◦What happens when people of
different schools work together?
◦Can we cross-fertilize between
schools?
◦Do I have to pick a school?
15
16. Resources
◦ Lessons Learned in Software Testing: A Context-Driven Approach
- Cem Kaner, James Bach & Bret Pettichord
◦ Schools of software testing, Cem Kaner http://kaner.com/?p=15
◦ http://context-driven-testing.com/
Origin of this Analysis: “Lessons
Learned in Software Testing”
16
Code Coverage
aka “Structural” testing
Dozens of code-coverage metrics have been designed and compared
Provides an objective “measure” of testing
Implications
Precise and detailed specifications are a prerequisite for testing
Testers verify that the software behavior conforms to its specification
Most prevalent
Academia
High-reliability industry (e.g. Telecom)
Authors
Boris Beizer, Paul Jorgensen, Robert V. Binder, John Musa
Requirements Traceability
Make sure that every requirement has been tested
Implications
Require clear boundaries between testing and other
activities (start/stop criteria)
" Resist changing plans (complicates progress tracking)
" Software testing assembly line (V-model)
" Accept management assumptions about testing
" Encourage standards, “best practices,” and certification
Most Prevalent
IT projects
Government projects
Authors
Rex Black, Dorothy Graham
Ex
The Gatekeeper - The software isn’t ready until QA says it’s ready
Implications
Prefer “Quality Assurance” over “Testing”
Testing is a stepping stone to “process improvement”
May alienate developers
Most Prevalent
Large bureaucracies
Organizations under stress
Authors
Alka Jarvis
Context-driven testers choose their testing objectives, techniques, and deliverables (including test documentation) by looking first to the details of the specific situation, including the desires of the stakeholders who commissioned the testing. The essence of context-driven testing is project-appropriate application of skill and judgment. The Context-Driven School of testing places this approach to testing within a humanistic social and ethical framework.
Ultimately, context-driven testing is about doing the best we can with what we get. Rather than trying to apply “best practices,” we accept that very different practices (even different definitions of common testing terms) will work best under different circumstances.
Context-Driven School: Core Beliefs
Software is created by people.
People set the context. Testing finds bugs.
A bug is anything that could bug a stakeholder.
Testing provides information to the project
Testing is a skilled, mental activity
Testing is multidisciplinary
Key Question: What tests would be most valuable right now?
Context-Driven School
Implications
Expect changes. Adapt testing plans based on test results
Unchallenged assumptions are dangerous.
Pragmatism
Effectiveness of test strategies can only be determined with field research
Focus on skill over practice
Most Prominent
Commercial, Market-driven Software
Authors
Cem Kaner, Brian Marick, James Bach
Unit Tests
" Used for test-driven development
Implications
" Developers must provide automation frameworks
" Slow to appreciate value of exploratory testing
Most Prevalent
" IT Consulting
" ASP Development
Institutions
" Pattern Workshops