Software Testing Terminology

Testing Terminology

As with many different aspects in programming, testing disciplines have their own unique vocabulary. However, because of the number of terms, the barrier to entry is high and can scare new developers. This section is intended to get the reader up to speed on some common terms that will be used throughout the remainder of this book. The terms shown next are only intended to be a brief explanation. Each term will be discussed thoroughly in their respective chapters.


  • Test. A test is a systematic procedure to ensure that a particular unit of an application is working correctly.

  • Pass. A pass indicates that everything is working correctly. When represented on a report or user interface (UI), it is represented as green.

  • Fail. In the case of a fail, the functionality being tested has changed and as a result no longer works as expected. When represented on a report, this is represented as red.

  • xUnit. xUnit refers to the various testing frameworks which were originally ported from sUnit. Tools such as jUnit, qUnit, and nUnit fall into the xUnit family.

  • Test Fixture. Test fixtures refer to the state a test must be in before the test can be run. Test fixtures prepare any objects that need to be in place before the test is run. Fixtures ensure a known, repeatable state for the tests to be run in.

  • Test Driven Development (TDD). Test Driven Development is an Agile Software Development process where a test for a procedure is created before the code is created.

  • Behavior Driven Development (BDD). Building on top of the fundamentals of TDD, BDD aims to take more advantage of the design and documentation aspects of TDD to provide more value to the customer and business.

  • Test Double. When we cannot, or choose not, to use a real component in unit tests, the object that is substituted for the real component is called a test double.

  • Stub. A test stub is a specific type of test double. A stub is used when you need to replicate an object and control the output, but without verifying any interactions with the stub object for correctness. Many types of stubs exist, such as the responder, saboteur, temporary, procedural, and entity chain.

  • Mock. Mock objects are also a form of test double and work in a similar fashion to stub objects. Mocks are used to simulate the behavior of a complex object. Any interactions made with the mock object are verified for correctness, unlike stub objects..

  • Fake. Fake objects are yet another type of test doubles. Fake objects are similar to test stubs, but replace parts of the functionality with their own implementation to enable testing to be easier for the method.

  • Dummy Objects. Dummy objects are used when methods require an object as part of their method or constructor. However, in this case the object is never used by the code under test. As such, a common dummy object is null.

  • Unit Test. A unit test is a method used to verify that a small unit of source code is working properly. Unit tests should be independent of external resources such as databases and files. A unit is generally considered a method.

  • Developer Test. This is another term for a unit test.

  • Integration Test. This is similar to a unit test; however, instead of being an isolation unit, these test cross-application and system boundaries.

  • Functional Test. Functional tests group units of work together to test an external requirement. Testing disciplines such as graphical user interface testing and performance testing are considered functional tests.

  • GUI Test. GUI tests test the graphical user interface. GUI tests are considered functional tests. Applications are used to simulate users interacting with the system such as entering text into a field or clicking a button. Verifications are then made based on the response from the UI or system.

  • Customer Test. This is another term for an acceptance test.

  • System Test. The term system test is a term to indicate an “End To End” test of the system. System tests include unit testing, security testing, GUI testing, functional testing, acceptance testing, and accessibility testing.

  • Load Test. A large amount of connections are made to the website to determine if it will scale correctly. This type of testing is to ensure that the website can handle the peak load expected when the website is used in production without any errors or failures.

  • Stress Test. This is another name for a load test.

  • Performance Test. Performance testing measures the response of a system in normal use and when it’s placed under load. A common metric for Web Applications is Time To First Byte (TTFB) and Requests Per Second (RPS).

  • Acceptance Test. This is a formal test to indicate if a function of a software project conforms to the specification the customer expects.

  • Black Box Test. A black box test is a test created without knowing the internal workings of the feature being tested. The only information you have to base your tests on is the requirements.

  • White Box Test. A white box test is a test created with knowledge of the inner workings of the code being tested. By using your internal knowledge of the system you can adapt the inputs you use to ensure high test coverage and correctness of the system.

  • Regression Test. A regression test is a test created to ensure that existing functionality was working correctly previously and is still working as expected.

This article is excerpted from chapter 1 "Preliminary Concerns" of the book Testing ASP.NET Web Applications by by Jeff McWherter and Ben Hall (ISBN: 978-0-470-49664-0, Wrox, 2009, Copyright Wiley Publishing Inc.)



Leave a Reply

Your email address will not be published. Required fields are marked *