Many of the terms in this chapter have multiple meanings and can be interpreted differently in different contexts. The purpose of this chapter is to bring to light several key terms that are used during discussions about software development and testing.
Human mistakes are called errors in testing speak. Errors frequently lead to software defects—bugs. Bugs may lead to software failures.
White box testing assumes having access to the source code and targets the internal structure of a system, whereas black box testing is done “from the outside” and targets the functionality.
Unit tests ensure that a small unit of code, like a function, a class, or a group of classes, works as expected. Integration tests verify that components/systems can talk to each other, but sometimes the term is used to describe tests that are somewhere between unit tests and system tests. System tests are run to verify an entire system. Finally, acceptance tests are performed by the customer to make sure that the expected system has been delivered, whereas automated acceptance tests are written by the team and executed by a testing framework to verify that a story or scenario has been implemented.
The Agile Testing Quadrants is a model that divides tests into dimensions of technology versus business oriented, as well as guiding the development versus critiquing the product.
Classifying tests can clarify discussions about responsibility and what to test, when, and how. The important thing is to use a classification that everybody in the organization agrees on (or at least is familiar with).