I recall on a number of previous projects that there was always some confusion around the type of tests that were written in development; that is, unit tests, integration tests, component tests, system tests, etc.. Of interest, then, I recently read this article from IBM developer works (a truly interesting RSS feed for those in Java software engineering).
Basically, it states that tests need to be categorised into:
- unit tests: single-class driven tests; isolating a piece of functionality (hopefully only one public interface per class!)
- component tests: multiple-class driven tests; often including core pieces of logic and functionality
- system tests: end-to-end testing; high-level, arbitrary logic executed; does the application work?