Testing for Software Engineers
Testing is often misunderstood or overlooked in the software development process, but it is a crucial aspect that can make or break the quality and reliability of your applications. This book is not just about teaching you how to write tests, but about helping you build the mindset and skills necessary to create software that is inherently testable and maintainable.
Testing for Software Engineers is a comprehensive guide designed for software developers who want to master the art of testing. It combines theoretical insights with practical examples, taking you through the entire process of building testable systems, understanding modern test automation practices, and applying them to real-world scenarios. With a focus on automation and quality, this book is your gateway to becoming a more proficient, confident developer who understands the critical role of testing in the software development lifecycle.
Among other things, you'll learn:
- The difference between testing and checking, and how the "Testing Industrial Complex" can lead to poor practices.
- Core concepts around testability and the essential characteristics of testable systems.
- How to integrate testing seamlessly into your development workflow, with a focus on continuous integration and delivery (CI/CD).
- Best practices for building deterministic systems, separating deployments from releases, and using feature toggles effectively.
- A detailed guide to various testing methods, including unit testing, smoke testing, API testing, end-to-end testing, and more.
- How to apply testing in modern, distributed, microservice-based architectures, with real-world examples using serverless technologies on AWS.
Whether you're a frustrated developer looking to improve your processes or a seasoned engineer seeking to refine your testing approach, Testing for Software Engineers offers the tools and insights you need to succeed. It is designed to be accessible to developers of all skill levels, whether you're just starting out or looking to deepen your understanding of testing.
This book is an essential resource for any software engineer who wants to elevate their testing skills and build more reliable, maintainable software.
Building Testable Systems.
Learn what makes a system testable and how to design your software with testability in mind from the start.
Modern Test Automation Practices.
Explore the latest trends in test automation, including confidence-based testing, good automation tools, and the importance of context-aware testing.
Practical Testing Techniques.
From static code analysis to complex system testing, gain hands-on knowledge of a wide range of testing methods, complete with examples and best practices
Example Testing Scenarios.
See how to apply these practices to specific scenarios, such as front-end applications, back-end systems using third-party services, and serverless event-driven architectures
How the book is structured:
-
Introduction
An overview of the importance of testing in software engineering, debunking common myths, and setting the stage for why testability matters. -
Getting Started
An introduction to the key concepts and methodologies that underpin the practices discussed in the book, including a breakdown of the different types of testing. -
Building Testable Systems
In-depth discussions on what makes a system testable, including deterministic systems, continuous integration, and the use of feature toggles and modern technical practices. -
Towards Modern Test Automation Practices
A comprehensive guide to various testing models, confidence-based testing, and how to choose and implement the right automation tools for your needs. -
Running Tests in Practice
Practical advice and examples for implementing a wide range of tests, including static code analysis, unit testing, API testing, and end-to-end testing in real-world scenarios. -
Example Testing Scenarios
Detailed walkthroughs of how to tackle testing in different environments, from front-end applications to complex serverless and event-driven systems. -
In Summary
A concise wrap-up of the key points covered in the book, reinforcing the importance of testing and providing final thoughts on how to integrate these practices into your daily workflow. -
References and Resources
A curated list of additional reading materials and resources to help you further explore the topics covered in the book and expand your knowledge.
Get straight-to-the-point, proven content with tons of resources, example code, and lifetime updates in your preferred format—HTML, EPUB, or PDF