============================
Tempest Field Guide Overview
============================

Tempest is designed to be useful for a large number of different
environments. This includes being useful for gating commits to
OpenStack core projects, being used to validate OpenStack cloud
implementations for both correctness, as well as a burn in tool for
OpenStack clouds.

As such Tempest tests come in many flavors, each with its own rules
and guidelines. Below is the overview of the Tempest repository structure
to make this clear.

.. code-block:: console

   tempest/
      api/ - API tests
      scenario/ - complex scenario tests
      serial_tests/ - tests that run always in the serial mode
      tests/ - unit tests for Tempest internals

Each of these directories contains different types of tests. What
belongs in each directory, the rules and examples for good tests, are
documented in a README.rst file in the directory.

:ref:`api_field_guide`
----------------------

API tests are validation tests for the OpenStack API. They should not
use the existing Python clients for OpenStack, but should instead use
the Tempest implementations of clients. Having raw clients let us
pass invalid JSON to the APIs and see the results, something we could
not get with the native clients.

When it makes sense, API testing should be moved closer to the
projects themselves, possibly as functional tests in their unit test
frameworks.


:ref:`scenario_field_guide`
---------------------------

Scenario tests are complex "through path" tests for OpenStack
functionality. They are typically a series of steps where a complicated
state requiring multiple services is set up exercised, and torn down.

Scenario tests should not use the existing Python clients for OpenStack,
but should instead use the Tempest implementations of clients.


:ref:`serial_tests_guide`
--------------------------------

Tests within this category will always be executed serially from the rest of
the test cases.


:ref:`unit_tests_field_guide`
-----------------------------

Unit tests are the self checks for Tempest. They provide functional
verification and regression checking for the internal components of Tempest.
They should be used to just verify that the individual pieces of Tempest are
working as expected.
