Test double

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

In computer programming and computer science, especially in object-oriented programming, programmers and developers employ a technique called automated unit testing to enhance the quality of the software. Frequently, the final release software consists of a complex set of objects or procedures interacting together to create the final result. In automated unit testing, it may be necessary to use objects or procedures that look and behave like their release-intended counterparts, but are actually simplified versions that reduce the complexity and facilitate testing. A test double is a generic (meta) term used for these objects or procedures.

Types of test doubles

Gerard Meszaros[1] identified several different terms for what he calls, "Test Doubles." Using his vocabulary, there are at least five types of Test Doubles:

  • Test stub (used for providing the tested code with "indirect input")
  • Mock object (used for verifying "indirect output" of the tested code, by first defining the expectations before the tested code is executed)
  • Test spy (used for verifying "indirect output" of the tested code, by asserting the expectations afterwards, without having defined the expectations before the tested code is executed)
  • Fake object (used as a simpler implementation, e.g. using an in-memory database in the tests instead of doing real database access)
  • Dummy object (used when a parameter is needed for the tested method but without actually needing to use the parameter)

While there is no open standard for test double and the various types, there is momentum for continued use of these terms in this manner. Martin Fowler used these terms in his article, Mocks Aren't Stubs[2] referring to Meszaros' book. Microsoft also used the same terms and definitions in an article titled, Exploring The Continuum Of Test Doubles.[3]

See also

References

  1. Lua error in package.lua at line 80: module 'strict' not found.
  2. Lua error in package.lua at line 80: module 'strict' not found.
  3. Lua error in package.lua at line 80: module 'strict' not found.

External links

Gerard Meszaros:

Martin Fowler:


<templatestyles src="Asbox/styles.css"></templatestyles>