[TIP] Test categories and terminology (was: Declarative style acceptance tests)

Ben Finney ben+python at benfinney.id.au
Mon Jan 6 17:47:05 PST 2014


Paul Moore <p.f.moore at gmail.com> writes:

> It may be that the reason is that what you're referring to as
> acceptance tests is not what I'm trying to create (see below).

The different levels have different purposes, and are pretty much
exclusive and complementary:

* Unit tests are for isolating smallest-unit pieces to verify they
  reliably behave how the programmers need them to behave.

* Integration tests are for testing that larger parts of the system
  interact correctly under various conditions.

* Acceptance tests are for testing that the *whole* system does what is
  promised. (These are sometimes referred to as “functional tests”, but
  that is vague enough to apply to any level, so I prefer the focus on
  acceptance by the customer.)

There are also different *aspects* of tests: behaviour tests,
documentation tests, performance tests, stress tests, fuzz tests, etc.
Those can be applied at various levels and are not exclusive.

> Is there a good reference for the differences between unit,
> functional, integration and acceptance tests? (And any other similar
> terms I might not have thought of.)

Here is a good Stack Overflow answer on the different levels of tests,
and what names are usually used to refer to them
<URL:http://stackoverflow.com/a/4904533/70157>.

-- 
 \         “Simplicity and elegance are unpopular because they require |
  `\           hard work and discipline to achieve and education to be |
_o__)                                appreciated.” —Edsger W. Dijkstra |
Ben Finney




More information about the testing-in-python mailing list