A Practical Guide to Software Testing
Much has been written about the difficulty of software testing. Often these laments are accompanied by cautionary words about how careful one has to be to ensure testing is done properly. However, there is a dearth of resources that give practical guidance on the nuts and bolts of testing. Essential Software Testing: A Use-Case Approach describes testing methods and techniques in a common sense manner that is easy to understand, helping readers to quickly and effectively implement project-specific testing solutions.
Divided into three parts, the book first discusses ways to make testing agile, providing insight into how testing can be done efficiently in different process environments. Next, the book supplies an overview of testing concepts. Lastly, it demonstrates how to perform the actual test, detailing specific testing activities that can be used on almost any project, with specific attention given to use-case driven testing. It describes how to test using Use Cases regardless of the specific requirements of the project.
The author weaves helpful war stories throughout the text, placing the concepts in a concrete framework. This guide gives software testers a firm grasp of all testing fundamentals: how to determine what to test and how to test it, how to select proper tests to match the plan, techniques to build and trace tests, and finally, how to conduct and record tests.
Why this book is important
Who this book is for
How to use this book
Acknowledgments
Testing Essentially
On Being A Tester
Testing Perceptions and Realities
Perceptions
Reality
Another testing approach to deal with reality
Testing In an Agile Way.... But Not Agile Testing
Being Agile and Proactive
Dealing With Governance
Basic Concepts Boot Camp
The Real Basics
Black Box Testing
White Box Testing
Unit Testing
Functional Requirements
Non-Functional Requirements
Stakeholder Needs
Features
Testing Concepts
Traceability
Coverage
Varieties of Essential Requirements
Traditional Requirements
Use Cases
User Stories
Safety Critical Requirements
High Level Requirements
Low Level Requirements
Derived Requirements
Organizing Your Testing
Test Plans
Test Cases
Test Procedures
Test Scripts
Examples From My Experience We’ll Work With
Experience 1: Rinkratz
The Testing Perspective
Experience 2: The Conveyor System Project
The Testing Perspective
Experience 3: Aircraft Engine Monitoring System
The Testing Perspective
What is Essential Testing?
Testing The Right Things
Testing To The Right Level of Detail
Testing At The Right Time
Bad Tester
Essential and Efficient Testing
The Idea of Agility
Agile Methodologies
Applying Agile Methodologies to Testing
Agile Testing
How Agile Folks See Agile Testing
Essential Testing and Agile Testing
Apply Agility to Any Development Methodology
How Essential Testing Addresses Agility
Being Essentially Agile
The Agility Basics
Understand What Needs To Be Done
Know Your Environment
Communicate A Lot
Expect Change
Be A Minimalist
Be Ready To Explain Yourself
Don’t Sleepwalk
Encourage Feedback
Courage
Respect
Conclusion
Build Testing Agility Into Any Project
Agile Iterative
Applying Essential Testing to Agile Iterative
Heavy Iterative
Applying Essential Testing to Heavy Iterative
Heavy Waterfall
Applying Essential Testing to Heavy Waterfall
Safety Regulated Systems (for example FAA D0178b)
What Regulated Systems Are
Certifying Regulated Systems
Applying Essential Testing to Regulated Systems
Conclusion
Fundamentals For Testing Success
Requirements – Fundamentals For Testing
Success
Good Requirements
What Makes Up Good Requirements
Not So Good Requirements
What To Do When Requirements Aren’t So Good
Be Proactive: Anticipate Requirements
Use Cases For Testers
Working With Use Cases
Use Case Diagrams
Use Case Specifications
Why Use Use Cases
Use Cases In Essential Testing
Perceived Problems Testing Against Use Cases
Make ‘Em If You Aint Got ‘Em
Building A Test Process That Fits
Test Process: Scoping
Stakeholder Needs and Perceptions
Big vs. Small
Test Process: Inputs and Outputs
Requirements as Test Inputs
Design Artifacts as Test Inputs
Outputs
Shaping The Test Process
Understand Project Needs
Plan For The Minimum Artifact Set To Get By With
Team Dynamics
Delivery
Things To Worry About
The Successful Testing Process
Essential Test Planning
Test Planning Realities
Test Planning Tasks
Planning Starts With Understanding
Understand What It Will Take To Prove The System
Understand What Input Artifacts Are Available
Understand What Can Be Done With Artifacts
After Understanding, Analyze
Bag of Tricks
Patterns
Creating A Testing Solution
Bring The Pieces Together
Grouping Requirements With Use Cases
You Need Use Cases to Be Use Case Driven
The Problems With Testing Individual Requirements, and Why Use
Cases Are The Solution
Example of Grouping Traditional Requirements With Use
Cases
The Business Context
Initial System View
Understanding The Requirements
Essential Testing Analysis
Supplied Software Requirements: A Sample
Requirements Sample Considered
Getting To Use Cases
A Use Case Example
Extending Use Cases For Testing
Some Definitions
Condition
Operational Variable
System State
Nominal Tests
Off Nominal Tests
The Extended Use Case Test Design Pattern
Binder’s Premises
The Extended Use Case Solution
Adapting the pattern
The Essential Test Identification Approach
Identifying Operational Variables
Discovering Operational Variables Example Based on Open a Lane
Use Case For The Conveyor System
Identifying Tests
Overview
Organizing A Variant Table
Filling In A Variant Table
Conclusion
Essential Test Cases
Grouping Tests into Test Cases
An Example using the process
Selecting Tests
Determine What Tests MUST Be Run
Eliminate Unnecessary Tests
Drop Insignificant Tests
Defining Essential Test Cases
Filling In Test Cases I: The Test Definition Section
Test Case Example 1
Comments On This Example
Adding Test Design To Your Test Case
Test Environment
An Example of Test Environment
Test Participants
Procedures: How A Test Will Be Performed
Activity Diagrams For Testers
Describing the Test With An Activity Diagram
An Example Of An Activity Diagram For a Test Case
Creating Tests
Harvesting Tests
Creating Test Procedures
Use Activity Diagrams to Create Test Procedures
Test Procedure Components
The First Pass
The Final Pass
A Test Procedure Example for the Open Lane Basic Flow Positive Test
Test Case
Conclusion
Executing Tests
Execution Problems and Their Solution
DOA Deliveries
Changing Stakeholder Perception
Timing of Tests
Special Considerations at Test Execution Time
Executing Regression Tests
Executing Manual and Automatic Tests
Recording and Reporting Test Results
Test Recording
Test Reporting
Knowing When to Stop Testing
Essential Traceability
Traceability
Tracing Artifacts
Coverage
Requirements Coverage
Design Coverage
Code Coverage
Showing Coverage via Traces
Other Things To Trace
Traceability In Practice
A Requirements Perspective
The Impact of Change
Problems With Traceability - And Some Suggested
Solutions
What Really Needs To Be Traced?
Who Will Do The Tracing And When
Whether/What Tools To Use In Managing Traceability
Conclusion
It All Comes Together Like This
Situation
First steps
Test Planning
Lay out the test process
Requirements help and Use Cases creation
Identify tests by Use Case
Low Level Requirements delivered
Requirements Baselined for 2nd time
Design tests
Develop tests
Execute Tests
Coverage analysis
Code Inspections
Create white box tests
Refactoring Tests
Final build delivered
Final coverage analysis
Traceability
Follow Up
Synopsis
Conclusion
Appendix A
Additional Information for Top Notch Conveyor System
Technical explanation of a typical conveyor system
Appendix B Examples
Variant Table example for Open a Lane Basic Flow
Example of Multiple Variant Tables for a Single Use Case
Flow
Example of a Test Procedure For a Manual GUI Test
Test Environment Set Up
Appendix C Templates
A Test Case Template
A Test Procedure Template
Index
Biography
Greg Fournier