Chapter 20. Testing

No amount of testing can prove a software right, a single test can prove a software wrong.

Amir Ghahrai

20.0 Introduction

Working without automated test coverage in prior decades was challenging, as developers had to rely heavily on manual testing and debugging to catch and fix issues in their software. Manual testing involves running software through a series of tests designed to check its functionality, performance, and stability. This process is time consuming and prone to human error, as testers may miss certain scenarios or overlook critical defects.

Without automated tests, developers had to spend a considerable amount of time debugging and fixing issues, which could slow down the development process and delay the release of new features or updates. It was also difficult to ensure consistent and reliable results across different platforms and environments. Developers had to manually test their software on various operating systems, browsers, and hardware configurations, which could result in unexpected defects and compatibility issues. There was no guarantee that resolving an issue or developing a new feature would prevent known scenarios from breaking in the future, and end users were accustomed to experiencing unexpected failures in previously functioning features.

Today, writing tests is a mandatory discipline for good developers. You can change the software anytime you want if you have written tests for the previous functionality. There are many ...

Get Clean Code Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.