Chapter 18. JUnit and Cactus

Testing software is arguably the most important success factor in software engineering. No matter how elegant your architecture, no matter how compelling the features and user interface, and no matter how well a system is marketed, untested or poorly tested software is failure waiting to happen. Software that’s tested is software that works, and working software is a pleasure, or at least a pleasant surprise.

Software testing has many dimensions. You can perform black box functional testing to determine whether an application operates correctly from an external standpoint without concern for the internal workings of the software. You can perform white box functional testing to validate the internal workings of the system at various levels. You can test the performance of software to determine how quickly it executes tasks under typical usage levels. You can perform load testing to determine the load threshold at which the system fails (or executes so slowly that it becomes effectively useless). You can perform user-acceptance testing, which tests software at an aggregate level to verify that a system performs acceptably to the target users, with metrics ranging from functional correctness to speed to interface aesthetics.

Software quality assurance is a subject of study in itself, and we won’t presume to summarize it broadly in a single chapter. Instead, what we cover here is the subset of software testing referred to as unit testing, which attempts to ...

Get Java Enterprise in a Nutshell, Third Edition 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.