Effective Software Testing explores fifty
critically important best practices, pitfalls, and
solutions. Gleaned from the author's extensive practical
experience, these concrete items will enable quality
assurance professionals and test managers to immediately
enhance their understanding and skills, avoid costly
mistakes, and implement a state-of-the-art testing
program.
This book places special emphasis on the integration of
testing into all phases of the software development life
cycle--from requirements definition to design and final
coding. The fifty lessons provided here focus on the key
aspects of software testing: test planning, design,
documentation, execution, managing the testing team, unit
testing, automated testing, nonfunctional testing, and
more.
You will learn to:
- Base testing efforts on a prioritized feature
schedule
- Estimate test preparation and execution
- Define the testing team roles and responsibilities
- Design test procedures as soon as requirements are
available
- Derive effective test cases from requirements
- Avoid constraints and detailed data elements in test
procedures
- Make unit-test execution part of the build process
- Use logging to increase system testability
- Test automated test tools on an application
prototype
- Automate regression tests whenever possible
- Avoid sole reliance on capture/playback
- Conduct performance testing with production-sized
databases
- Tailor usability tests to the intended audience
- Isolate the test environment from the development
environment
- Implement a defect tracking life cycle
Throughout the book, numerous real-world case studies
and concrete examples illustrate the successful application
of these important principles and techniques.
Effective Software Testing provides ready access to the
expertise and advice of one of the world's foremost
software quality and testing authorities.
Contents
I. REQUIREMENTS PHASE
- Involve Testers from the Beginning
- Verify the Requirements
- Design Test Procedures as Soon as Requirements Are
Available
- Ensure That Requirement Changes Are Communicated
- Beware of Developing and Testing Based on an Existing
System
II. TEST PLANNING
- Understand the Task at Hand and the Related Testing
Goal
- Consider the Risks
- Base Testing Efforts on a Prioritized Feature
Schedule
- Keep Software Issues in Mind
- Acquire Effective Test Data
- Plan for the Test Environment
- Estimate Test Preparation and Execution Time
III. THE TESTING TEAM
- Define the Roles and Responsibilities
- Require a Mixture of Testing Skills, Subject Matter
Expertise, and Experience
- Evaluate the Testers' Effectiveness
IV. THE SYSTEM ARCHITECTURE
- Understand the Architecture and Underlying
Components
- Verify That the System Supports Testability
- Use Logging to Increase System Testability
- Verify That the System Supports Debug vs. Release
Execution Modes
V. TEST DESIGN AND DOCUMENTATION
- Divide and Conquer
- Mandate the Use of a Test Procedure Template, and Other
Test Design Standards
- Derive Effective Test Cases from Requirements
- Treat Test Procedures as "Living" Documents
- Use System Design and Prototypes
- Use Proven Testing Techniques When Designing Test Case
Scenarios
- Avoid Constraints and Detailed Data Elements in Test
Procedures
- Apply Exploratory Testing
VI. UNIT TESTING
- Structure the Development Approach to Support Effective
Unit Testing
- Develop Unit Tests in Parallel or before the
Implementation
- Make Unit Test Execution Part of the Build Process
VII. AUTOMATED TESTING TOOLS
- Know the Different Types of Testing-Support Tools
- Consider Building a Tool Instead of Buying One
- Know the Impact of Automated Tools on the Testing
Effort
- Focus on the Needs of Your Organization
- Test the Tools on an Application Prototype
VIII. AUTOMATED TESTING-SELECTED BEST PRACTICES
- Do Not Rely Solely on Capture/Playback
- Develop a Test Harness When Necessary
- Use Proven Test Script Development Techniques
- Automate Regression Tests Whenever Possible
- Implement Automated Builds and Smoke-Tests
IX. NONFUNCTIONAL TESTING
- Do Not Make Nonfunctional Testing an Afterthought
- Conduct Performance Testing with Production Sized
Databases
- Tailor Usability Tests to the Intended Audience
- Consider All Aspects of Security, for Specific
Requirements and System-Wide
- Investigate the System's Implementation to Plan for
Concurrency Tests
- Setup an Efficient Environment for Compatibility
Testing
X. MANAGING THE TEST EXECUTION
- Clearly Define the Beginning and the End of the Test
Execution Cycle
- Isolate the Test Environment from the Development
Environment
- Implement a Defect Tracking Life-Cycle
- Track the Execution of the Test Program