Google
 
   
Login
Username:

Password:


Lost Password?

Register now!
Search
Main Menu
top books
Polls
What do you think about php-deluxe.net?
Excellent!
Cool
Hmm..not bad
What the hell is this?
encyclopedia
recommendation
compare webbrowser
Freenet DSL
Who's Online
2 user(s) are online (2 user(s) are browsing encyclopedia)

Members: 0
Guests: 2

more...
browser tip
Unix Befehle
manual of unix befehle
recommendation!
Sponsored
partner

Unit test

In computer programming, a unit test is a procedure used to verify that a particular module (programming) of source code is working properly. The idea about unit tests is to write test cases for all functions and method (computer science)s so that whenever a change causes a Regression testing, it can be quickly identified and fixed. Ideally, each test case is separate from the others; constructs such as mock objects can assist in separating unit tests. This type of testing is mostly done by the Software developers and not by end-users.

=Benefits=

The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. Unit testing provides a strict, written contract that the piece of code must satisfy. As a result, it affords several benefits.

==Facilitates change==

Unit testing allows the programmer to refactor code at a later date, and make sure the module still works correctly (i.e. regression testing). This provides the benefit of encouraging programmers to make changes to the code since it is easy for the programmer to check if the piece is still working properly.

==Simplifies integration==

Unit testing helps eliminate uncertainty in the pieces themselves and can be used in a Top-down and bottom-up design testing style approach. By testing the parts of a program first and then testing the sum of its parts, integration testing becomes much easier.

==Documentation==

Unit testing provides a sort of living document . Clients and other developers looking to learn how to use the class can look at the unit tests to determine how to use the class to fit their needs and gain a basic understanding of the Application programming interface.

==Separation of Interface from Implementation==

Because some classes may have code, minimizing dependencies in the system.

=Limitations=

Unit-testing will not catch every error in the program. By definition, it only tests the functionality of the units themselves. Therefore, it will not catch integration errors, Performance testing problems and any other system-wide issues. In addition, it may not be easy to anticipate all special cases of input the program unit under study may receive in reality. Unit testing is only effective if it is used in conjunction with other Software testing#Software testing activities.

It is unrealistic to test all possible input combinations for any non-trivial piece of software. A unit test can only show the presence of errors; it cannot show the absence of errors.

=Applications=

==Extreme Programming==

While Unit Testing is often associated with Extreme Programming, it existed a long time before Extreme Programming was invented. The unit testing concept is part of the Extreme Programming method of software engineering. Various unit testing frameworks, based on a design by Kent Beck, have come to be known collectively as xUnit, and are available for many programming languages and development platforms. Unit testing is the building block to test driven development (TDD). Extreme Programming and most other methods use unit tests to perform black box testing.

Note that many in the Extreme Programming community favor the terms developer testing or programmer testing over the term unit testing, since many other test activities (like function or acceptance test) can now be done at developer-time.

== Techniques ==

Conventionally and as a well accepted industry practice, unit testing is conducted in an Test automation environment through the use of a third party supplied component or List_of_unit_testing_frameworks. However, one reputable organization, the Institute of Electrical and Electronics Engineers, prescribes neither an automated nor manual approach. This leaves open the option to conduct unit testing through the use of a step-by-step instructional document. Nevertheless, the objective in unit testing is to isolate a unit and verify its correctness. Automation is much more efficient and enables the many benefits listed in this article. In fact, manual unit testing is arguably a form of integration testing and thus precludes the achievement of most (if not all) of the goals established for unit testing.

To fully realize the effect of isolation, the unit or code body subjected to the unit test is executed within a framework outside of it s natural environment, that is, outside of the product for which it was originally created. This metaphorical severing of the unit from it s product ensures that no dependencies exist that couple the unit to other units or data spaces in the product that would be restored during integration.

Consequently, unit testing is traditionally a motivator for programmers to create Dependency (computer science) and cohesive code bodies which promotes healthy habits in software development and in turn supports the software applicable -Ilities of system engineering. Design pattern (computer science) and unit testing often go hand-in-hand.

poo

==Language support==

The D programming language offers direct support for unit testing.

Due to its demands on Modularity (programming) in design and implementation, unit testing is particularly suitable for object-oriented programming languages. Most of these have List_of_unit_testing_frameworkss that help simplify the process of unit testing.

=See also=

  • Extreme Programming
  • Regression testing
  • Test case
  • List of unit testing frameworks
  • =External links=

  • [http://www.xprogramming.com/testfram.htm Kent Beck s original testing framework paper]
  • [http://www.testdriven.com Community site on unit testing and Test Driven Development]