Summary

Packages in Ubuntu should be tested automatically to ensure that they meet basic standards. Packages should at least be installable and uninstallable and files installed should not conflict with those in other packages.

Various tools exist to ensure package quality and should be evaluated for regular package checks.

Release Note

Ubuntu is now automatically testing all packages in the Ubuntu repositories to ensure that they will install, upgrade, and remove cleanly and without error.

Rationale

Packages should always be cleanly installable and uninstallable. If a package cannot be installed or removed by the user without encountering an error, this makes the package broken and is a serious concern from a usability standpoint.

Automated testing to ensure that packages meet basic requirements will improve the quality of the software distributed by Ubuntu and ensure a clean user experience.

User stories

Assumptions

Design

Once a package is built, an automatic package probe system will see the new package and assign it for testing on a test system. If these tests fail, the uploader will be notified that the package tests failed (and will be provided with the output from the tests).

Implementation

Initial Step / Feasibility Test

As a first step, QA will set up a server with a chroot environment and conflictchecker. The packages already in the archive will be tested with conflictchecker and a list of conflicts will be created.

Automated Implementation

If the results of the initial step prove to be useful and the initial test is working properly, QA will work with the Foundations team to develop a plan for conducting tests after package builds, possibly using virtual machines in the cloud (see https://blueprints.edge.launchpad.net/ubuntu/+spec/server-karmic-automate-pkg-testing-in-the-cloud ).

The package prober is already in place as a part of the certification environment. Some extensions may be necessary to add individual package testing functionality; these extensions will be evaluated during the feasibility testing phase.

Test Extension

After the automated environment is working to test packages for file conflicts, further tests may be added by other teams (Foundations, Server). piuparts is the most likely candidate for use but the specific tool(s) to be used will be determined during this phase.

Test/Demo Plan

Testing will be performed in phases as the system is implemented. As the true value of automated package testing is unknown, the initial phase itself is a test of feasibility for the specification as a whole.

  1. Initial testing will be done on an isolated server in a chroot environment. This will include testing the packages in the archive for file conflicts.
  2. During the second phase, testing will be performed by manually monitoring the tests on initial package builds.
  3. After an initial period of manual monitoring, audits of the test logs should be performed to ensure that the package tests are performing properly.

Unresolved issues

BoF agenda and discussion

Goal

Tools

Want to move piuparts sessions into the cloud

Historically we get most bang for our buck by doing large-scale system testing

Would be great to pool resources and do all this package testing together... Currently just have people doing it ad-hoc

When should we run these tools?

When do we not want to run these?

Where do we run these?

Proposals

lintian

Upgrade Testing

First Step

Next Steps


CategorySpec

QATeam/Specs/PackageTesting (last edited 2009-06-10 10:40:46 by cpc4-oxfd8-0-0-cust39)