[openstack-dev] [QA][all] Propose to remove negative tests from Tempest

Ken'ichi Ohmichi ken1ohmichi at gmail.com
Fri Mar 18 00:06:56 UTC 2016

2016-03-17 4:05 GMT-07:00 Andrea Frittoli <andrea.frittoli at gmail.com>:
> On Thu, Mar 17, 2016 at 2:57 AM Ken'ichi Ohmichi <ken1ohmichi at gmail.com>
> wrote:
>> 2016-03-16 19:41 GMT-07:00 Jim Rollenhagen <jim at jimrollenhagen.com>:
>> > On Wed, Mar 16, 2016 at 06:20:11PM -0700, Ken'ichi Ohmichi wrote:
>> >> Hi
>> >>
>> >> I have one proposal[1] related to negative tests in Tempest, and
>> >> hoping opinions before doing that.
>> >>
>> >> Now Tempest contains negative tests and sometimes patches are being
>> >> posted for adding more negative tests, but I'd like to propose
>> >> removing them from Tempest instead.
>> >>
>> >> Negative tests verify surfaces of REST APIs for each component without
>> >> any integrations between components. That doesn't seem integration
>> >> tests which are scope of Tempest.
>> >> In addition, we need to spend the test operating time on different
>> >> component's gate if adding negative tests into Tempest. For example,
>> >> we are operating negative tests of Keystone and more
>> >> components on the gate of Nova. That is meaningless, so we need to
>> >> avoid more negative tests into Tempest now.
>> >>
>> >> If wanting to add negative tests, it is a nice option to implement
>> >> these tests on each component repo with Tempest plugin interface. We
>> >> can avoid operating negative tests on different component gates and
>> >> each component team can decide what negative tests are valuable on the
>> >> gate.
>> >>
>> >> In long term, all negative tests will be migrated into each component
>> >> repo with Tempest plugin interface. We will be able to operate
>> >> valuable negative tests only on each gate.
>> >
>> > So, positive tests in tempest, negative tests as a plugin.
>> >
>> > Is there any longer term goal to have all tests for all projects in a
>> > plugin for that project? Seems odd to separate them.
>> Yeah, from implementation viewpoint, that seems a little odd.
>> but from the main scope of Tempest and to avoid unnecessary gate
>> operation time, that can be acceptable, I feel.
>> Negative tests can be corner cases in most cases, they don't seem
>> integration tests.
> I think it's difficult to define a single black and white criteria for
> negative tests, as they encompass a wide range of types of tests.
> I agree that things that only testing the API level of a service (not even a
> DB behind) do not necessarily belong in tempest - i.e. testing of input
> validation done by an API.  We could have a guideline for such tests to be
> implemented as unit/functional tests in tree of the service.

Yeah, it is difficult to distinguish corner cases or not on negative
tests as the criteria.
If necessary to do that, we(QA team) need to read the implementation
code of the core six services deeply during Tempest reviews. Then I
rushed to remove all of them. My first proposal is not good according
to feedback, but I'm happy to get feedback to see our direction :-)

The guideline is a nice idea.
If necessary to add more negative tests into Tempest, how about
requiring to write the reason which explains new tests are not corner
cases in the commit message?
We can know the merit of new negative ones when reviewing.

> However Tempest is also interoperability, so we should keep at least a few
> negative API checks in tempest (for the core six services) to enforce that
> return codes do not change inadvertently in negative cases, which could
> break existing clients and applications.

This also is a nice point.
How to change error return codes is unclear to me at this time.
In Nova, there are some exceptions for changing error return code
without microversion bumping as [1]. This kind of guideline will be
discussed later.

Now I am fine to keep the existing negative tests in Tempest, anyway.

Ken Ohmichi

[1]: https://github.com/openstack/nova/blob/master/doc/source/api_microversion_dev.rst#f2

More information about the OpenStack-dev mailing list