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 ...

Get Design – Build – Run: Applied Practices and Principles for Production-Ready Software Development 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.