Google Test

Google Test
Developer(s) Google Inc.
Stable release
1.8 / August 22, 2016 (2016-08-22)
Development status Active
Written in C++
Operating system Linux, Windows, Mac OS X
Type Unit testing tool
License BSD 3-clauses
Website github.com/google/googletest/

Google Test is a unit testing library for the C++ programming language, based on the xUnit architecture.[1] The library is released under the BSD 3-clause license.[2] It can be compiled for a variety of POSIX and Windows platforms, allowing unit-testing of C sources as well as C++ with minimal source modification. The tests themselves could be run one at a time, or even be called to run all at once. This makes the debugging process very specific and caters to the need of many programmers and coders alike.

Types of Google Tests

Google introduced its own classification of test types.[3] Instead of categorizations like unit, functional or integration test they have only three categories: small, medium, and large scale tests:

Small Tests (Unit Tests)

Small tests are mostly (but not always) automated and exercise the code within a single function or module. The focus is on typical functional issues, data corruption, error conditions, and off-by-one mistakes. Small tests are of short duration, usually running in seconds or less. They are most likely written by a Software Engineer (SWE), less often by a Software Engineer in Test (SET), and hardly ever by a Test Engineer (TE).[4] Small tests generally require sample environments to run and be tested in. Software developers rarely write small tests but might run them when they are trying to diagnose a particular failure. The question a small test attempts to answer is, “Does this code do what it is supposed to do?”[4]

Medium Tests (Integration Tests)

Medium tests are usually automated and involve two or more interacting features. The focus is on testing the interaction between features that call each other or interact directly.[4] Software engineers drive the development of these tests early in the product cycle as individual features are completed and developers are heavily involved in writing, debugging, and maintaining the actual tests. If a medium test fails or breaks, the developer takes care of it autonomously. The question a medium test attempts to answer is, “Does a set of near adjacent functions operate with each other the way they are supposed to?”[4]

Large Tests (Acceptance Tests)

Large tests cover three or more features and represent real user scenarios with real user data sources. There is some concern with overall integration of the features, but large tests tend to be more results-driven, checking that the software satisfies user needs. All three roles are involved in writing large tests and everything from automation to exploratory testing can be the vehicle to accomplish them. The question a large test attempts to answer is, “Does the product operate the way a user would expect and produce the desired results?”[5]

Fidelity

This test will fail under the condition that the code has failed during a test case or the test process itself. In other words; when the code breaks, the test is failed. [6]

Resilience

The test should not fail if a test case does not pass. The test only fails when there is a breaking change that is implemented to the code being tested. [6]

Precision

When the test fails, the exact error will be located and notified to the tester. This type of test does not work well with functions that relies on string inputs.[6]

Others

Projects using Google Test

Besides being developed and used at Google, many other projects implement Google Test as well:

Google Test UI is test runner that runs one's test binary, allows one to track its progress via a progress bar, and displays a list of test failures. Clicking on one shows failure text. Google Test UI is written in C#.[8]

Popular Tools used in Chrome with association to Google Test:

Fixtures

Fixture testing is crucial in computer code because it allows the testing of time and memory management.[1] If these areas are lacking, bugs may arise, and ultimately the code may become incompatible or even fail to run in the first place. Google Test can specifically handle and run this type of test. When doing so, it can also recognize the type of fixture test required. Fixtures more or less in Google Tests are considered a class and can be instantiated as one as well. There are also details when understanding how fixtures work, and here are some of these details:

See also

References

  1. 1 2 3 4 5 6 A quick introduction to the Google C++ Testing Framework, Arpan Sen, IBM DeveloperWorks, 2010-05-11, retrieved 2016-04-12
  2. Google Test's repository, retrieved 2016-04-12, cites New BSD as license. The license file is at github.com/google/googletest/blob/master/googletest/LICENSE
  3. Test Sizes, retrieved 2015-04-16
  4. 1 2 3 4 Whittaker 2012, p. 12.
  5. Whittaker 2012, p. 13.
  6. 1 2 3 The Google Test and Development Environment, Anthony Vallone, 2014-01-21, retrieved 201-05-10
  7. Gromacs Testing Framework
  8. Google Test UI retrieved 2016-04-12
  9. Whittaker 2012, p. 251.

Further Reading

External links

This article is issued from Wikipedia - version of the 12/1/2016. The text is available under the Creative Commons Attribution/Share Alike but additional terms may apply for the media files.