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.
Preface 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