blob: 663653e4e4d64255ab93e12c6bf013e241cb2450 [file] [log] [blame]
Attila Fazekas58d23302013-07-24 10:25:02 +02001============================
Sean Dague7679b482013-05-24 08:49:44 -04002Tempest Field Guide Overview
Attila Fazekas58d23302013-07-24 10:25:02 +02003============================
Sean Dague31a57ad2013-05-07 15:24:05 -04004
5Tempest is designed to be useful for a large number of different
6environments. This includes being useful for gating commits to
7OpenStack core projects, being used to validate OpenStack cloud
8implementations for both correctness, as well as a burn in tool for
9OpenStack clouds.
10
11As such Tempest tests come in many flavors, each with their own rules
Jordan Pittier74a56ab2017-04-26 16:46:20 +020012and guidelines. Below is the overview of the Tempest respository structure
Sean Dague31a57ad2013-05-07 15:24:05 -040013to make this clear.
14
Xiao Hanyua4036d12013-06-19 14:12:23 +080015| tempest/
16| api/ - API tests
Xiao Hanyua4036d12013-06-19 14:12:23 +080017| scenario/ - complex scenario tests
Jordan Pittier74a56ab2017-04-26 16:46:20 +020018| tests/ - unit tests for Tempest internals
Sean Dague31a57ad2013-05-07 15:24:05 -040019
20Each of these directories contains different types of tests. What
21belongs in each directory, the rules and examples for good tests, are
22documented in a README.rst file in the directory.
23
Matthew Treinisha9aef872014-07-25 16:03:08 -040024:ref:`api_field_guide`
25----------------------
Sean Dague31a57ad2013-05-07 15:24:05 -040026
27API tests are validation tests for the OpenStack API. They should not
Jordan Pittier74a56ab2017-04-26 16:46:20 +020028use the existing Python clients for OpenStack, but should instead use
29the Tempest implementations of clients. Having raw clients let us
guo yunxiana2216472016-08-01 16:34:43 +080030pass invalid JSON to the APIs and see the results, something we could
31not get with the native clients.
Sean Dague31a57ad2013-05-07 15:24:05 -040032
33When it makes sense, API testing should be moved closer to the
34projects themselves, possibly as functional tests in their unit test
35frameworks.
36
Sean Dague31a57ad2013-05-07 15:24:05 -040037
Matthew Treinisha9aef872014-07-25 16:03:08 -040038:ref:`scenario_field_guide`
39---------------------------
Sean Dague31a57ad2013-05-07 15:24:05 -040040
41Scenario tests are complex "through path" tests for OpenStack
42functionality. They are typically a series of steps where complicated
43state requiring multiple services is set up exercised, and torn down.
44
Jordan Pittier74a56ab2017-04-26 16:46:20 +020045Scenario tests should not use the existing Python clients for OpenStack,
46but should instead use the Tempest implementations of clients.
Sean Dague31a57ad2013-05-07 15:24:05 -040047
Sean Dague31a57ad2013-05-07 15:24:05 -040048
Matthew Treinish817a8082014-07-25 16:07:20 -040049:ref:`unit_tests_field_guide`
50-----------------------------
51
52Unit tests are the self checks for Tempest. They provide functional
Jordan Pittier74a56ab2017-04-26 16:46:20 +020053verification and regression checking for the internal components of Tempest.
54They should be used to just verify that the individual pieces of Tempest are
Matthew Treinish817a8082014-07-25 16:07:20 -040055working as expected.