Book Image

Software Testing Strategies

By : Matthew Heusser, Michael Larsen
Book Image

Software Testing Strategies

By: Matthew Heusser, Michael Larsen

Overview of this book

Software Testing Strategies covers a wide range of topics in the field of software testing, providing practical insights and strategies for professionals at every level. With equal emphasis on theoretical knowledge and practical application, this book is a valuable resource for programmers, testers, and anyone involved in software development. The first part delves into the fundamentals of software testing, teaching you about test design, tooling, and automation. The chapters help you get to grips with specialized testing areas, including security, internationalization, accessibility, and performance. The second part focuses on the integration of testing into the broader software delivery process, exploring different delivery models and puzzle pieces contributing to effective testing. You’ll discover how to craft your own test strategies and learn about lean approaches to software testing for optimizing processes. The final part goes beyond technicalities, addressing the broader context of testing. The chapters cover case studies, experience reports, and testing responsibilities, and discuss the philosophy and ethics of software testing. By the end of this book, you’ll be equipped to elevate your testing game and ensure software quality, and have an indispensable guide to the ever-evolving landscape of software quality assurance.
Table of Contents (22 chapters)
1
Part 1:The Practice of Software Testing
9
Part 2:Testing and Software Delivery
14
Part 3:Practicing Politics

What this book covers

Chapter 1, Testing and Designing Tests, this chapter introduces testing as a risk management activity, focusing on powerful test ideas for important software parts. It discusses the theory of error, unscripted testing, and various methods including model-driven and soak testing.

Chapter 2, Fundamental Issues in Tooling and Automation, addresses common pitfalls in test automation and shares lessons from years of experience. It covers concepts like the minefield regression problem and the battleship problem, concluding with solutions to these automation challenges.

Chapter 3, Programmer-Facing Testing, focuses on developer testing and covers unit testing, test-driven development, and testing web APIs, among other topics. It concludes with a practical exercise in creating unit tests, using Ruby as an example.

Chapter 4, Customer-Facing Tests, explores the nuances of customer-facing test automation, discussing GUI automation patterns, specification by example, and low-code/no-code tools, aiming to enable readers to analyze and optimize user interface testing.

Chapter 5, Specialized Testing, delves into specialty areas of testing and covers performance and load testing, security, accessibility, internationalization, and regulated testing, each with its unique challenges and methodologies.

Chapter 6, Testing Related Skills, expands beyond test design and execution and focuses on skills like recognizing bugs, communicating problems, planning and documenting work, and metrics, and influencing change in testing processes.

Chapter 7, Test Data Management, addresses the test data management problem and provides techniques for creating, storing, editing, deleting, and restoring data states to drive efficient application testing and reliable test tools.

Chapter 8, Delivery Models and Testing, broadens the scope of how testing interacts with software delivery models like Waterfall, Scrum, and DevOps. Through this, this chapter helps readers understand and optimize the interaction between testing and these models.

Chapter 9, The Puzzle Pieces of Good Testing, breaks down the components of testing, like recipes, coverage, and defects, and encourages readers to reassemble these elements into a cohesive test strategy tailored to their needs.

Chapter 10, Putting Your Test Strategy Together, builds on the previous chapter, to guide readers through analyzing current testing states, prioritizing risks, and communicating and implementing a comprehensive test strategy.

Chapter 11, Lean Software Testing, introduces Lean Software Testing and combines test and operations management techniques. It covers topics like the Seven Wastes, flow, constraints, and a lean approach to metrics and measurement.

Chapter 12, Case Studies and Experience Reports, uses case studies and experience reports, and offers real-life lessons and strategies from the field, providing practical insights into testing challenges and solutions.

Chapter 13, Testing Activities or a Testing Role?, explores the nuances of who should perform testing activities, discussing cultural conflicts, risk mitigation teams, and various testing models like shift-left and continuous testing.

Chapter 14, Philosophy and Ethics in Software Testing, ventures into the philosophical and ethical dimensions of testing. This chapter examines the limitations of testing, the value of ethical reasoning, and the importance of clear communication in testing processes.

Chapter 15, Words and Language About Work, focuses on communication and emphasizes the importance of precise language and context in testing, exploring different testing schools of thought and the distinction between process and skill.

Chapter 16, Testing Strategy Applied, applies the book’s concepts to practical scenarios, including a reference implementation for a mobile test strategy and a critical examination of AI in software testing, offering a comprehensive view of testing strategy application.