.. _scenario_field_guide:

Tempest Field Guide to Scenario tests
=====================================


What are these tests?
---------------------

Scenario tests are "through path" tests of OpenStack function.
Complicated setups where one part might depend on the completion
of a previous part. They ideally involve the integration between
multiple OpenStack services to exercise the touch points between them.

Any scenario test should have a real-life use case. An example would be:

- "As an operator, I want to start with a blank environment":

  1. upload a glance image
  2. deploy a vm from it
  3. ssh to the guest
  4. create a snapshot of the vm


Why are these tests in Tempest?
-------------------------------

This is one of Tempest's core purposes, testing the integration between
projects.


Scope of these tests
--------------------

Scenario tests should always use the Tempest implementation of the
OpenStack API, as we want to ensure that bugs aren't hidden by the
official clients.

Tests should be tagged with which services they exercise, as
determined by which client libraries are used directly by the test.


Example of a good test
----------------------

While we are looking for interaction of 2 or more services, be
specific in your interactions. A giant "this is my data center" smoke
test is hard to debug when it goes wrong.

A flow of interactions between Glance and Nova, like in the
introduction, is a good example. Especially if it involves a repeated
interaction when a resource is setup, modified, detached, and then
reused later again.
