You are previewing Effective Software Testing: 50 Specific Ways to Improve Your Testing.
O'Reilly logo
Effective Software Testing: 50 Specific Ways to Improve Your Testing

Book Description

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.



0201794292B12032002

Table of Contents

  1. Copyright
    1. Dedication
  2. Preface
    1. Organization
    2. Audience
  3. Acknowledgments
  4. 1. Requirements Phase
    1. Item 1: Involve Testers from the Beginning
    2. Item 2: Verify the Requirements
    3. Item 3: Design Test Procedures As Soon As Requirements Are Available
    4. Item 4: Ensure That Requirement Changes Are Communicated
    5. Item 5: Beware of Developing and Testing Based on an Existing System
  5. 2. Test Planning
    1. Item 6: Understand the Task At Hand and the Related Testing Goal
    2. Item 7: Consider the Risks
    3. Item 8: Base Testing Efforts on a Prioritized Feature Schedule
    4. Item 9: Keep Software Issues in Mind
    5. Item 10: Acquire Effective Test Data
    6. Item 11: Plan the Test Environment
    7. Item 12: Estimate Test Preparation and Execution Time
      1. Development Ratio Method
      2. Project Staff Ratio Method
      3. Test Procedure Method
      4. Task Planning Method
      5. Other Considerations
  6. 3. The Testing Team
    1. Item 13: Define Roles and Responsibilities
    2. Item 14: Require a Mixture of Testing Skills, Subject-Matter Expertise, and Experience
    3. Item 15: Evaluate the Tester's Effectiveness
      1. Test Engineer Self-Evaluation
  7. 4. The System Architecture
    1. Item 16: Understand the Architecture and Underlying Components
    2. Item 17: Verify That the System Supports Testability
    3. Item 18: Use Logging to Increase System Testability
    4. Item 19: Verify That the System Supports Debug and Release Execution Modes
  8. 5. Test Design and Documentation
    1. Item 20: Divide and Conquer
    2. Item 21: Mandate the Use of a Test-Procedure Template and Other Test-Design Standards
    3. Item 22: Derive Effective Test Cases from Requirements
    4. Item 23: Treat Test Procedures As “Living” Documents
    5. Item 24: Utilize System Design and Prototypes
    6. Item 25: Use Proven Testing Techniques when Designing Test-Case Scenarios
    7. Item 26: Avoid Including Constraints and Detailed Data Elements within Test Procedures
    8. Item 27: Apply Exploratory Testing
  9. 6. Unit Testing
    1. Item 28: Structure the Development Approach to Support Effective Unit Testing
    2. Item 29: Develop Unit Tests in Parallel or Before the Implementation
    3. Item 30: Make Unit-Test Execution Part of the Build Process
  10. 7. Automated Testing Tools
    1. Item 31: Know the Different Types of Testing-Support Tools
    2. Item 32: Consider Building a Tool Instead of Buying One
    3. Item 33: Know the Impact of Automated Tools on the Testing Effort
    4. Item 34: Focus on the Needs of Your Organization
    5. Item 35: Test the Tools on an Application Prototype
  11. 8. Automated Testing: Selected Best Practices
    1. Item 36: Do Not Rely Solely on Capture/Playback
    2. Item 37: Develop a Test Harness When Necessary
    3. Item 38: Use Proven Test-Script Development Techniques
    4. Item 39: Automate Regression Tests When Feasible
    5. Item 40: Implement Automated Builds and Smoke Tests
  12. 9. Nonfunctional Testing
    1. Item 41: Do Not Make Nonfunctional Testing an Afterthought
    2. Item 42: Conduct Performance Testing with Production-Sized Databases
    3. Item 43: Tailor Usability Tests to the Intended Audience
    4. Item 44: Consider All Aspects of Security, for Specific Requirements and System-Wide
    5. Item 45: Investigate the System's Implementation To Plan for Concurrency Tests
    6. Item 46: Set Up an Efficient Environment for Compatibility Testing
  13. 10. Managing Test Execution
    1. Item 47: Clearly Define the Beginning and End of the Test-Execution Cycle
    2. Item 48: Isolate the Test Environment from the Development Environment
    3. Item 49: Implement a Defect-Tracking Life Cycle
      1. 1. Analysis and Defect Record Entry
      2. 2. Prioritization
      3. 3. Reoccurrence
      4. 4. Closure
        1. Defect Workflow
    4. Item 50: Track the Execution of the Testing Program