Testing for Software Engineers

Learn everything you wanted to know about testing but didn't dare to ask.

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:

  1. Introduction
    An overview of the importance of testing in software engineering, debunking common myths, and setting the stage for why testability matters.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. Example Testing Scenarios
    Detailed walkthroughs of how to tackle testing in different environments, from front-end applications to complex serverless and event-driven systems.
  7. 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.
  8. 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.

€15

Master your craft for less than you'd spend on that one (too small) drink with a teensy umbrella.

What you get:

  • A book that's to the point, no longer than needed (~250 pages in PDF)
  • Downloadable HTML, EPUB, and PDF formats
  • Useful and proven content
  • Access to any updates
  • Chock-full of resources and references
  • Example code
  • Written for Javascript/Typescript but translates anywhere

Recommended
PDF, EPUB, and HTML formats