Common Language
Eliciting Requirements
Advance Clarity
Conditions of Satisfaction
Ripple Effects
Thin Slices, Small Chunks
How Do We Know We’re Done?
Tests Mitigate Risk
Testability and Automation
Summary
Chapter 9. Toolkit for Business-Facing Tests that Support the Team
Business-Facing Test Tool Strategy
Tools to Elicit Examples and Requirements
Checklists
Mind Maps
Spreadsheets
Mock-Ups
Flow Diagrams
Software-Based Tools
Tools for Automating Tests Based on Examples
Tools to Test below the GUI and API Level
Tools for Testing through the GUI
Strategies for Writing Tests
Build Tests Incrementally
Keep the Tests Passing
Use Appropriate Test Design Patterns
Keyword and Data-Driven Tests
Testability
Code Design and Test Design
Automated vs. Manual Quadrant 2 Tests
Test Management
Summary
Chapter 10. Business-Facing Tests that Critique the Product
Introduction to Quadrant 3
Demonstrations
Scenario Testing
Exploratory Testing
Session-Based Testing
Automation and Exploratory Testing
An Exploratory Tester
Usability Testing
User Needs and Persona Testing
Navigation
Check Out the Competition
Behind the GUI
API Testing
Web Services
Testing Documents and Documentation
User Documentation
Reports
Tools to Assist with Exploratory Testing
Test Setup
Test Data Generation
Monitoring Tools
Simulators
Emulators
Summary
Chapter 11. Critiquing the Product Using Technology-Facing Tests
Introduction to Quadrant 4
Who Does It?
When Do You Do It?
“ility” Testing
Security
Maintainability
Interoperability
Compatibility
Reliability
Installability
“ility” Summary
Performance, Load, Stress, and Scalability Testing
Scalability
Performance and Load Testing
Performance and Load-Testing Tools
Baseline
Test Environments
Memory Management
Summary
Chapter 12. Summary of Testing Quadrants
Review of the Testing Quadrants
A System Test Example
The Application
The Team and the Process
Tests Driving Development
Unit Tests
Acceptance Tests
Automation
The Automated Functional Test Structure
Web Services
Embedded Testing
Critiquing the Product with Business-Facing Tests
Exploratory Testing
Testing Data Feeds
The End-to-End Tests
User Acceptance Testing
Reliability
Documentation
Documenting the Test Code
Reporting the Test Results
Using the Agile Testing Quadrants
Summary
Part IV. Automation
Chapter 13. Why We Want to Automate Tests and What Holds Us Back
Why Automate?
Manual Testing Takes Too Long
Manual Processes Are Error Prone
Automation Frees People to Do Their Best Work
Automated Regression Tests Provide a Safety Net
Automated Tests Give Feedback, Early and Often
Tests and Examples that Drive Coding Can Do More
Tests Are Great Documentation
ROI and Payback
Barriers to Automation—Things that Get in the Way
Bret’s List
Our List
Programmers’ Attitude—“Why Automate?”
The “Hump of Pain” (The Learning Curve)
Initial Investment
Code that’s Always in Flux
Legacy Code
Fear
Old Habits
Can We Overcome These Barriers?
Summary
Chapter 14. An Agile Test Automation Strategy
An Agile Approach to Test Automation
Automation Test Categories
Test Automation Pyramid
What Can We Automate?
Continuous Integration, Builds, and Deploys
Unit and Component Tests
API or Web Services Testing
Testing behind the GUI
Testing the GUI
Load Tests
Comparisons
Repetitive Tasks
Data Creation or Setup
What Shouldn’t We Automate?
Usability Testing
Exploratory Testing
Tests that Will Never Fail
One-Off Tests
What Might Be Hard to Automate?
Developing an Automation Strategy—Where Do We Start?
Where Does It Hurt the Most?
Multi-Layered Approach
Think about Test Design and Maintenance
Choosing the Right Tools
Applying Agile Principles to Test Automation
Keep It Simple
Iterative Feedback
Whole-Team Approach
Taking the Time to Do It Right
Learn by Doing
Apply Agile Coding Practices to Tests
Supplying Data for Tests
Data Generation Tools
Avoid Database Access
When Database Access Is Unavoidable or Even Desirable
Understand Your Needs
Evaluating Automation Tools
Identifying Requirements for Your Automation Tool
One Tool at a Time
Choosing Tools
Agile-Friendly Tools
Implementing Automation
Managing Automated Tests
Organizing Tests
Organizing Test Results
Go Get Started
Summary
Part V. An Iteration in the Life of a Tester
Chapter 15. Tester Activities in Release or Theme Planning
The Purpose of Release Planning
Sizing
How to Size Stories
The Tester’s Role in Sizing Stories
An Example of Sizing Stories
Prioritizing
Why We Prioritize Stories
Testing Considerations While Prioritizing
What’s in Scope?
Deadlines and Timelines
Focus on Value
System-Wide Impact
Third-Party Involvement
Test Planning
Where to Start
Why Write a Test Plan?
Types of Testing
Infrastructure
Test Environments
Test Data
Test Results
Test Plan Alternatives
Lightweight Test Plans
Using a Test Matrix
Test Spreadsheet
A Whiteboard
Automated Test List
Preparing for Visibility
Tracking Test Tasks and Status
Communicating Test Results
Release Metrics
Summary
Chapter 16. Hit the Ground Running
Be Proactive
Benefits
Do You Really Need This?
Potential Downsides to Advance Preparation
Advance Clarity
Customers Speak with One Voice
Story Size
Geographically Dispersed Teams
Examples
Test Strategies
Prioritize Defects
Resources
Summary
Chapter 17. Iteration Kickoff
Iteration Planning
Learning the Details
Considering All Viewpoints
Writing Task Cards
Deciding on Workload
Testable Stories
Collaborate with Customers
High-Level Tests and Examples
Reviewing with Customers
Reviewing with Programmers
Test Cases as Documentation
Summary
Chapter 18. Coding and Testing
Driving Development
Start Simple
Add Complexity
Assess Risk
Coding and Testing Progress Together
Identify Variations
Power of Three
Focus on One Story
Tests that Critique the Product
Collaborate with Programmers
Pair Testing
“Show Me”
Talk to Customers
Show Customers
Understand the Business
Completing Testing Tasks
Dealing with Bugs
Is It a Defect or Is It a Feature?
Technical Debt
Zero Bug Tolerance
It’s All about Choices
Decide Which Bugs to Log
Choose When to Fix Your Bugs
Choose the Media You Should Use to Log a Bug
Alternatives and Suggestions for Dealing with Bugs
Start Simple
Facilitate Communication
Testers Facilitate Communication
Distributed Teams
Читать дальше