Design – Build – Run: Applied Practices and Principles for Production-Ready Software Development
by Dave Ingram
Chapter 23. Designing for Testing
This chapter takes a look at how to design your solutions to incorporate features that will help you test more efficiently and effectively, as well as ensure that the system meets the quality characteristics. From a core development perspective, testing consists of unit testing and integration testing. After the software leaves the development team, it is in the hands of the functional and technical testers. You need to ensure that you've tested as much as possible to avoid an influx of defects that will overly burden the development or fix team. As developers, we have a tendency to feel that we own the components we develop and that we are responsible for them throughout their lifetime. This may be true in some organizations. However, it is not always guaranteed. When the software is released for formal testing and defects are uncovered, it is very possible that someone else will be responsible for implementing a fix. The components should be well-documented and well-tested, as these activities are vitally important as the project progresses. At some point during the project there are typical "wash up" meetings. In these meetings, the participants look at the number of defects raised, their overall severity and, more important, where they could have been caught (and fixed) earlier in the lifecycle — in particular, where defects could have been detected and fixed through thorough unit and integration testing. The outcomes of the meetings provide ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access