Software testing traditionally has been separated between unit testing - testing classes in isolation - and integration testing - testing across all layers. Whereas unit testing is the domain of developers, integration testing is the domain of analysts. Moreover, most of the time, those tests are not automated and are painfully reexecuted by hand each time they are needed.