From Fedora Project Wiki

(Add link to package sanity test plan)
m (no need for revision history on a wiki)
Line 2: Line 2:


{{admon/note|Use discussion|Don't forget to check [[User talk:Kparal/Proposal:Package update acceptance test plan|discussion]] page.}}
{{admon/note|Use discussion|Don't forget to check [[User talk:Kparal/Proposal:Package update acceptance test plan|discussion]] page.}}
= Revision history =
2010-02-11 kparal - First draft


= Introduction =
= Introduction =

Revision as of 11:28, 19 April 2010

Warning.png
This page is a draft only
It is still under construction and content may change. Do not rely on the information on this page.
Note.png
Use discussion
Don't forget to check discussion page.

Introduction

The purpose of this document is to present a set of rules that determine whether a package update is considered ACCEPTED (i.e. it is ready to be committed to repository), REJECTED (i.e. the build should be discarded and a fix should be requested) or NEEDS_INSPECTION (i.e. similar to REJECTED at the moment, but it becomes ACCEPTED if all errors are waived).

Test Strategy

The test plan is divided into three main sections:

  1. Mandatory tests
  2. Introspection tests
  3. Advisory tests

Test Priority

Mandatory tests are executed as the first ones, in arbitrary order. After all mandatory tests have been executed and passed, the introspection and advisory tests are executed in arbitrary order.

Scope

This test plan contains only tests that can be automated, i.e. executed without human intervention. No manual tests will be performed. (But this does not reject human intervention when inspecting the test results, like waiving false errors.)

Test Pass/Fail Criteria

All mandatory tests must pass. If some of mandatory tests fail then the package update is considered REJECTED.

All introspection tests must pass. If an introspection test fails, other tests continue to be executed. If some of introspection tests fail, the package is considered NEEDS_INSPECTION. An eligible person may inspect errors of an failed introspection test and waive them.

The package update is considered ACCEPTED when:

  • all tests have finished
  • there are no failed mandatory tests
  • all failed introspection tests are waived

The results of advisory tests have no impact on package update validity.

Test Deliverables

  • A decision if a particular package update has been ACCEPTED, REJECTED or NEEDS_INSPECTION
  • A full log of individual test cases' output containing infos, errors or warnings
  • A special output marked as informative from any test case that passed but wants to convey additional information
  • Any test scripts used for automation or verification

Test Cases

Note: More tests are going to be added in the future (init-scripts test, manpage test, desktop-file test, etc).

Mandatory tests

  • package sanity - must be installable, uninstallable, upgradeable, etc
  • Repo sanity - the update must not break dependencies of other packages
  • Conflicts - there must be no file/package conflicts
  • Upgrade path - the update must not break upgrade path

Introspection tests

  • Rpmlint - no errors present
    • alternative: no new errors present
  • Initscripts - no errors

Advisory tests

  • Rpmlint - no warnings present
  • Rpmguard - no warnings present

Can we move some rpmguard checks into introspection tests?

Test Environment

  • AutoQA (the automated test execution framework) must be packaged and deployed in Fedora infrastructure. It will be used for test execution.
  • Test cases will be executed on all hardware platforms relevant for that particular package build. The only exception being test cases which can be executed in a platform-neutral way.
  • For those test cases, for which it makes sense, their execution should be done in a software environment as close as is feasible to that which will exist after the package is pushed to 'updates' repository. Generally this will be with a system that is up to date from 'fedora' and 'updates' repositories, but does not contain other packages from 'updates-testing' repository (except for the dependencies or other packages built from the affected source package - they should be updated in generally installed).

Responsibilities and permissions

  • It is the responsibility of the waiver to ensure that he/she waives only false errors, not real problems.
  • When all introspection tests failures are waived, the state change from NEEDS_INSPECTION to ACCEPTED is to be handled automatically by Quality Assurance team tools.
  • Groups of people that are allowed to waive errors may also re-execute the test plan on a particular package.

Schedule

This test plan is executed on every package update build and on all new packages builds.

Risks

  • If AutoQA needed for automated testing is not available (outage, crash) and test plan execution is not possible, the package updates may be stalled, automatically refused or automatically accepted, depending on Quality Assurance team decision.

Reviewers

References