PerformingSRUVerification

Differences between revisions 30 and 31
Revision 30 as of 2008-08-06 16:59:53
Size: 4915
Editor: localhost
Comment:
Revision 31 as of 2009-06-19 20:30:30
Size: 4915
Editor: 208-151-246-43
Comment: Fix up Include end marker
Deletions are marked like this. Additions are marked like this.
Line 43: Line 43:
<<Include(StableReleaseUpdates,,from="== Verification ==", to="[[Anchor")>> <<Include(StableReleaseUpdates,,from="== Verification ==", to="<<Anchor")>>

SRU Verification is the process of testing packages from the -proposed repository, that have been updated to fix bugs. These packages need testing to ensure that the package continues to function as designed and that the bug is fixed. It is also important to ensure no regression has been introduced by the fix. More information about the process can be found at Stable Release Update page. To find out how to enable -proposed look at the Enable Proposed page.

How to find bugs needing verification

There are many ways to find bugs needing SRU verification: by viewing the SRU To Do or Pending Ubuntu SRUs or by querying Launchpad for the bug tag verification-needed or by looking at bugs which the SRU verification team is subscribed.

The Pending Ubuntu SRUs are generated by parsing the changelogs of the packages in -proposed repository. By clicking on changelog bugs entry you will be taken to the Launchpad bug report (if it exists). Some bugs resolved by -proposed packages require specific hardware and these can be identified by the hw-specific tag in Launchpad or by the (hw) next to the bug number at the Pending Ubuntu SRUs page.

Identifying how to test

The first step in identifying how to test, is determining the release or releases of Ubuntu affected by the particular bug. This can be done by looking at the bug report and determining the release affected by the bug.

In the example below the Postgresql8.1 bug affects the Dapper, Feisty, Gutsy and Hardy releases of Ubuntu and should be verified in each one.

  • https://wiki.ubuntu.com/QATeam/PerformingSRUVerification?action=AttachFile&do=get&target=bug.png

    Click to zoom

Alternatively, at the Pending Ubuntu SRUs page there are sections for each release of Ubuntu that is currently supported.

In addition to knowing the release or releases of Ubuntu affected you also need to have detailed steps to recreate the bug. These can be found in the "TEST CASE" section at the end of the bug's description. Bug 172264 has an example of what the test case will look like.

How to perform the test

After booting into the affected release of Ubuntu the following steps should be taken:

  1. Ensure that your system is up to date by installing all available updated packages from the -updates and -security repositories
  2. Verify that you do not have the proposed package installed by checking the package version using 'dpkg -l PKGNAME | cat'
  3. Recreate the bug using the steps identified in the "TEST CASE"
  4. Modify your '/etc/apt/sources.list' file to include the -proposed repository
  5. Execute 'sudo apt-get update'
  6. Install the proposed package via 'sudo apt-get install PKGNAME' or 'sudo apt-get install PKGNAME=VERSION-NUM'
  7. Verify that you installed the correct package version using 'dpkg -l PKGNAME | cat'
  8. Reboot the system
  9. Try to recreate the bug using the steps identified in the "TEST CASE"
  10. Use the software installed by the package in common ways

Updating the bug report

Verification must be done in a software environment as close as is feasible to that which will exist after the package is copied to *-updates. Generally this will be with a system that is up to date from *-release, *-security, and *-updates, but not with other packages from *-proposed (except other packages built from the affected source package - they must be updated if generally installed) or *-backports. While not ideal it is also possible for the uploader of the fix to perform the verification of the package in *-proposed, however it must still be done in a software environment as close as is feasible to that which will exist after the package is copied to *-updates.

If they discover that your fix is insufficient, or the test case is not sufficient to reproduce the bug, they will:

  1. Set the bug task to Status: In Progress

  2. Describe why the fix was insufficient or broken in a comment to the bug report.
  3. Modify the verification-needed-$RELEASE tag to a verification-failed-$RELEASE tag on the bug report where $RELEASE is the release name which you tested.

The SRU verification team may also discover that your fix is good. They will:

  1. Modify the 'verification-needed-$RELEASE' tag to a 'verification-done-$RELEASE' tag on the bug report where $RELEASE is the release name of the upload you have tested e.g. verification-done-precise. The tag global verification-needed should be left on the bug until all release tasks have been verified.

  2. Describe the general steps taken to verify the package (and any special difficulties) in a comment on the bug.

Verification feedback from bug reporters and subscribers is greatly appreciated, too, especially if the update is hardware specific. In this case we consider an update as verified if it has at least two positive, no negative testimonials in the bug report, and the verification team just checks whether the new version still works for the main use cases (to check for major regressions).

If you encounter a regression in a package that has been uploaded to *-proposed, please:

  1. File a bug report against the package, describing the nature of the regression you have encountered, including any special steps needed to reproduce the regression.
  2. Mark this bug with the tag regression-proposed

  3. Ask a bug supervisor to target the bug to the appropriate Ubuntu releases.

  4. Follow up on the SRU bug report referenced from the package changelog, pointing to the new bug. If there is more than one bug in the SRU changelog, follow up to the bug that is most closely related to the regression.
  5. Set the verification-failed-$RELEASE tag on the corresponding SRU bug report where $RELEASE is the release name of the upload you tested.

If you want to help us to verify Stable Release Updates then read how to perform a Stable Release Update verification

Verification Notes

  1. There is a standing agenda item for the SRU & LTS meeting to make sure all stakeholders are able to raise issues as early as possible.

  2. Ensure all critical and high importance bugs are verified in a timely manner. If not, the SRU QA Engineer will perform the testing.
  3. The SRU QA Engineer will specifically ask at the SRU & LTS meeting if there are specific bugs that need verification that aren't being done by the bug reporter. If necessary, a QA team member will do the verification. If not able (e.g. lack of specific HW), will do more calls for testing and nag the bug reporter again.

  4. If necessary, the QA team will set up separate SRU verification program, for big packages like eglibc, python, X.

Autopkgtest Regressions

Packages accepted into -proposed as per the SRU process automatically trigger related autopkgtests, similarly to how it happens for the development series. Once those tests are finished, the pending SRU page provides links to any failures that have been noticed for the selected upload. The responsibility of the uploader (and/or the person performing update verification) is to make sure the upload does not cause any regressions - both in manual and automated testing.

In the case where an SRU upload triggers an autopkgtest regression, the target package will not be released into -updates until the failure is resolved. There are a few ways that can happen:

  • If the reported autopkgtest regression is a real regression caused by the upload, the update should be considered verification-failed and the package should be re-uploaded with the regression fixed. Otherwise the update will be removed from -proposed as per the usual procedures.

  • If the reported autopkgtest regression is not a real regression or not a regression caused by the proposed update (but instead broken by some other dependency), the analysis of this has to be documented for the SRU team. The generally recommended way is commenting on one of the SRU bugs for the upload. Once the rationale is submitted and approved/validated by an SRU member, the SRU team will add a badtest or reset-test hint for the broken package and release the update as per usual procedures (once validation and aging is complete). Alternatively, the uploader/verifier can modify the hints and provide an MP in the bug along with the rationale. Useful input here can be re-running the failing test against only the release/updates pocket, as documented in the ProposedMigration wiki page.

  • If the reported autopkgtest regression is the result of a flaky test, the uploader can try re-running the test to see if it is indeed just a transient issue. If the issue still persists but the analysis clearly shows that it is not a real regression, a rationale for that should be provided in one of the SRU bugs.

It is important to remember that firstly it is the uploader's responsibility to make sure the package is in a releasable state and that all the autopkgtests triggered by the upload are either passing or badtested. Of course, it is not the uploader's responsibility to provide the hints for badtests themselves, but it is it's responsibility to perform the analysis and verification of each listed regression.

Expected resolution for reported autopkgtest failures

If an SRU did not cause a regression, the update is intended to land but autopkgtest regressions are still found, then the possible resolutions for this situation are as follows:

  • An SRU must not be released if outstanding autopkgtest regressions are reported on the Pending SRU Report.

  • Ideally regressions can be fixed with new uploads to the proposed pockets as required. Fixes for autopkgtests are generally always acceptable. However uploads providing only test fixes will generally be staged using block-proposed-<series> (in which case they need a bug reference).

  • A regression not caused by the SRU may be badtest or reset-tested away (doesn't matter which for SRUs).

Removal of updates

If a bug fixed by an update does not get any testing/verification feedback for 90 days an automated call for testing comment will be made on the bug report. In the event that there is still no testing after an additional 15 days, that's a total of 105 days without any testing, the Stable Release Managers will remove the package from -proposed and usually close the bug task as "Won't Fix", due to lack of interest. Removal will happen immediately if a package update in -proposed is found to introduce a nontrivial regression.

Regressions

Ways to test using virtual machines

In the event that your current release of Ubuntu is not the same as the release of Ubuntu affected by the bug there are still many ways for you to perform the verification of the Stable Release Update without installing the affected release on your hardware. This can be done by using an emulator such as Virtual Box, kvm, qemu or VMware. Virtual machines images for VMware are available at http://isv-image.ubuntu.com/vmware/. Depending on the nature of the bug report it may also be possible to use a chroot to perform the verification.

QATeam/PerformingSRUVerification (last edited 2017-09-27 12:43:57 by vorlon)