Software Testing Strategies

Book description

Unlock the true potential of software testing to achieve seamless software performance with this comprehensive guide

Key Features

  • Gain a solid understanding of software testing and master its multifaceted strategies
  • Empower yourself to effectively overcome software testing challenges
  • Develop actionable real-world testing skills for succeeding in any role
  • Purchase of the print or Kindle book includes a free PDF eBook

Book Description

In today’s world, software is everywhere—from entertainment apps to mission-critical systems that support our health, finance, and infrastructure. Testing plays a vital role in ensuring these systems work reliably. Whether you're a software developer, hobbyist, or IT professional, this book will guide you in mastering the art of testing. It’s about asking the right "What if?" questions, uncovering vulnerabilities, and ensuring software performs as expected throughout its lifecycle.

Testing isn't just about automation; it’s a human-driven, creative process that requires skill, and a deep understanding of software behavior. With practical examples and expert insights, this book helps you craft your own test strategies and explore novel approaches to problem-solving in the testing world. With its help, you’ll hone your testing skills with techniques and methodologies rather than tool-based solutions.

Authored by experts Matt Heusser and Michael Larson, the book provides valuable strategies for making testing both effective and engaging. Matt is known for his leadership in project rescue initiatives, while Michael’s work in accessibility testing has helped shape industry standards.

By the end of this book, you’ll be equipped to enhance your testing practices and ensure high-quality software in an ever-evolving tech landscape.

What you will learn

  • Explore accessibility, functional testing, performance testing, and more as an integral part of testing
  • Find out how to implement a wide range of testing approaches
  • Develop the skills needed to create effective testing strategies tailored to your project's needs
  • Discover how to prioritize and execute the most impactful test ideas
  • Gain insight into when and how to apply different testing elements
  • Defend your chosen testing strategy with a comprehensive understanding of its components

Who this book is for

This book is for a broad spectrum of professionals engaged in software development, including programmers, testers, and DevOps specialists. Tailored to those who aspire to elevate their testing practices beyond the basics, the book caters to anyone seeking practical insights and strategies to master the nuanced interplay between human intuition and automation. Whether you are a seasoned developer, meticulous tester, or DevOps professional, this comprehensive guide offers a transformative roadmap to become an adept strategist in the dynamic realm of software quality assurance.

Table of contents

  1. Software Testing Strategies
  2. Contributors
  3. About the authors
  4. About the reviewers:
  5. Preface
    1. Our scope - beyond button-pushing
      1. What is Testing?
    2. Who this book is for
    3. What this book covers
    4. To get the most out of this book
    5. Download the example code files
    6. Download the color images
    7. Conventions used
    8. Get in touch
    9. Share your thoughts
    10. Download a free PDF copy of this book
  6. Part 1:The Practice of Software Testing
  7. Chapter 1: Testing and Designing Tests
    1. Jumping into testing
    2. The impossibility of complete testing
      1. What is the EVP asking for?
      2. Toward a theory of error
      3. Testing software – an example
    3. Testing software – an analysis
      1. Quick attacks – the airdropped tester
      2. Test design – input space coverage
      3. Equivalence classes and boundaries
      4. Decision tables
      5. Decision trees
      6. All-pairs and pairwise testing
      7. High volume automated approaches
      8. Other approaches
    4. Data and predictability – the oracle problem
    5. Summary
    6. Further reading
  8. Chapter 2: Fundamental Issues in Tooling and Automation
    1. Technical requirements
    2. No silver bullets – you can’t radically fix the test cycle
    3. The minefield regression problem
      1. Coverage model
    4. The Battleships problem – testing versus checking
      1. Comparing Battleships to bugs
      2. Automation rarely beats human intuition
    5. The maintenance problem
      1. The dangers of comprehensive tests
    6. The money problem
    7. Lessons from the fundamental issues
    8. Summary
  9. Chapter 3: Programmer-Facing Testing
    1. Technical requirements
    2. The programmer’s view
      1. Testing and reliability
      2. The hexagonal architecture
    3. Introducing FizzBuzz
    4. Unit tests
    5. TDD
      1. Consequences of TDD
    6. Unit test and unit code design
      1. Using test doubles to create seams
    7. Mutation testing
    8. Web APIs from a test perspective
      1. Web API testing strategy
    9. Testing functional and legacy code
    10. A Roman Numerals Kata
    11. Summary
  10. Chapter 4: Customer-Facing Tests
    1. Technical requirements
    2. A word of warning
    3. Human Or Tooling—is it either/or?
    4. GUI test automation patterns
      1. Eliminating redundancy with domain-specific libraries
      2. Eliminating redundancy through object locators
      3. Do you need conditionals, looping structures, and variables?
      4. The tradeoff between assertion and image recognition
    5. Designing your own system
      1. Toward specification by example
      2. Specification by example
    6. Low-code and no-code test automation
    7. Batch- and model-driven test automation
    8. This chapter is completely wrong
    9. Summary
  11. Chapter 5: Specialized Testing
    1. Technical requirements
    2. Understanding load and performance testing
      1. Getting to know the basics of load testing
      2. Setting up a load test
    3. Exploring security testing
      1. Security concepts
      2. Checking out common security vulnerabilities
      3. Learning about industry standards
      4. Investigating some security testing tools
    4. Delving into accessibility testing
      1. What is accessibility?
      2. Advocating for accessibility
      3. Investigating the distinctions between accessibility and inclusive design
      4. Learning about the WCAG standard
      5. Investigating some accessibility testing tools
    5. Internationalization and localization
      1. Preparing for internationalization and localization
      2. Investigating tools for internationalization and localization
    6. CI
      1. CI and the pipeline
      2. Getting involved with build management as a tester
      3. Investigating CI tools
    7. Regulated testing
      1. Navigating regulatory requirements
    8. Summary
  12. Chapter 6: Testing Related Skills
    1. Technical requirements
    2. Finding bugs
      1. Oracles in software testing
      2. Inattentional blindness and Oracles
      3. About the word bug
    3. Writing bug reports
      1. Effective bug reports
      2. Effective reproduction steps
    4. Planning testing – cases and plans
      1. Test cases in practice
    5. Metrics and measurement
      1. Metric dysfunction
    6. Project projections
    7. Influencing change
      1. Summarizing information
    8. Summary
  13. Chapter 7: Test Data Management
    1. Technical requirements
    2. The test data problem
      1. Test data and database apps
    3. The standard data seed
      1. Table-driven – when test data drives behavior
    4. Scriptable users and structure
    5. Exploring synthetic users
    6. Leveraging production refreshes
    7. Exploring development, test, and production environments
    8. Understanding the regulatory issues in test data management
      1. The user spy feature
    9. Summary
  14. Part 2:Testing and Software Delivery
  15. Chapter 8: Delivery Models and Testing
    1. Technical requirements
    2. Waterfall
      1. The advantages of and place for the waterfall
      2. The V-Model
      3. Iterative, incremental, and mini waterfalls
    3. Extreme Programming (XP)
      1. The context of XP
    4. Scrum and SAFe
      1. The context of Scrum
      2. SAFe and its context
    5. House-rules software development
      1. The Agile Manifesto
      2. Context-driven testing
      3. Illustrations of the principles in action
      4. Kanban as a house rule
    6. Continuous delivery and deployment
    7. DevOps, Platform Engineering, SRE
    8. Summary
    9. Further reading
  16. Chapter 9: The Puzzle Pieces of Good Testing
    1. Technical requirements
    2. Recipes – how to do hard things
      1. Defining recipes
      2. Shouldn’t recipes just be automated?
      3. Do recipes overlap with technical documentation?
    3. Coverage – did we test the right things well enough?
      1. Precise code coverage measures
      2. Closing out coverage
    4. Defects – what is the status of the software?
    5. Schedule and risk – too many test ideas, not enough time
      1. Iterative testing
    6. Strategy – what are our risks and priorities?
    7. Dashboard – how do we communicate what we know?
    8. Summary
  17. Chapter 10: Putting Your Test Strategy Together
    1. What are we doing now?
      1. Getting the form filled out
      2. The elevator pitch
    2. A census of risk
      1. Defining a real risk census
    3. Setting priorities, time management, and scope
    4. Today’s strategy versus tomorrow’s goals
    5. Summary
  18. Chapter 11: Lean Software Testing
    1. Lean software testing defined
      1. From ideas in practice to the term “Lean”
    2. The seven wastes
      1. Waste #1 – transport
      2. Waste #2 – inventory
      3. Waste #3 – motion
      4. Waste #4 – waiting
      5. Waste #5 – overprocessing
      6. Waste #6 – overproduction
      7. Waste #7 – defects
      8. (New) waste #8 – ability
      9. Removing waste in testing
    3. Flow
      1. Visualizing flow – an example
      2. Multitasking
      3. Measurement – lead time versus cycle time
      4. Efficiency and congestion
      5. Metric – touch time
      6. Batch size
      7. Queues and efficiency
      8. Arrival time pacing
      9. Limiting work in progress to create a pull system
      10. Release cadence
    4. One-piece flow and CD
    5. Summary
  19. Part 3:Practicing Politics
  20. Chapter 12: Case Studies and Experience Reports
    1. RCRCRC at scale
      1. The 1-day test plan
      2. RCRCRC in the enterprise
    2. A coverage dashboard
      1. Test coverage blinders
    3. Pair and tri-programming
      1. Discovering the expertise paradox
      2. Making expertise transparent
    4. The evolution of the test strategy
      1. The alternative to evolution – information hiding
    5. Professional pushback – dealing with bullies
      1. Power in the workplace
      2. One way to say it
      3. Boundaries in the enterprise
      4. Narcissistic communication
      5. Boundary enforcement – the power move
      6. If you choose to stay
    6. Summary
  21. Chapter 13: Testing Activities or a Testing Role?
    1. Technical requirements
    2. The cultural conflict with a testing role
      1. How we got here – the bad news
      2. How we got here – developing at internet speed
    3. Building a risk mitigation team
      1. The purpose of the risk exercise
    4. Faith-based versus empirical test automation
      1. The math behind faith-based test automation
      2. Possible outcomes
    5. Shift left and shift right
    6. (Actually) continuous testing
    7. Summary
  22. Chapter 14: Philosophy and Ethics in Software Testing
    1. Philosophy and why it matters in testing
      1. Sprint Length: it depends
      2. Shu Ha Ri: learning by osmosis
      3. A tough question: what do you want?
    2. Ethics and ethical reasoning in testing
      1. Ethical frameworks
      2. Classic ethical challenges
    3. Practical ethical issues in testing
      1. Skipping test steps and the good news
      2. Decisions are not made in meetings
    4. Scientific thinking and logical fallacies
      1. Logical fallacies
    5. How we wind up in hell and how to escape
      1. Put the responsibility in the right place
    6. Summary
    7. Additional readings for the serious philosopher
  23. Chapter 15: Words and Language About Work
    1. Context-driven testing and the other schools
      1. The Agile school
      2. The DevOps or CD school
      3. The analytical school
      4. The factory school
      5. The quality school
      6. The context-driven school
    2. Precise language
    3. Wordsmatter
      1. The benefits of being imprecise
    4. Process versus skill
      1. Testing and checking
      2. Yes, we can assure quality
    5. Summary
    6. Further reading
  24. Chapter 16: Testing Strategy Applied
    1. A mobile test strategy example
      1. Our sample mobile app
      2. Designing a test program
      3. Mobile system coordination and deployment
      4. The human element
    2. AI in software testing
      1. The state of AI tools
      2. Possible ways to use AI for testing
      3. Other forms of AI in testing
      4. The bottom line for AI testing
    3. A few thoughts to leave with
      1. Thoughts on documentation
    4. Summary
  25. Index
    1. Why subscribe?
  26. Other Books You May Enjoy
    1. Packt is searching for authors like you
    2. Share your thoughts
    3. Download a free PDF copy of this book

Product information

  • Title: Software Testing Strategies
  • Author(s): Matthew Heusser, Michael Larsen
  • Release date: December 2023
  • Publisher(s): Packt Publishing
  • ISBN: 9781837638024