How to test updates

What is this howto about?
This howto will walk you through the process of testing package updates for Fedora. Updates, as the name implies, are changes to one or more packages in the Fedora ecosystem. They may be changes to an existing package (for instance, to sync it with upstream), bugfixes for an existing package, or a brand new package. When Fedora users are prompted to "update" their system, these updates are the ones that are applied.

Before we push an update out to all Fedora users, we want to make sure that the update itself works and does not break anything. Even if the update comes from a good and stable upstream and has been tested there, we need to test in in Fedora specifically, since upstreams are unlikely to have the same setup (compilers, libraries, etc) as Fedora. This becomes even more important if the update is a new package or a bugfix patch, because those are unlikely to have been tested upstream in the first place.

In order to keep track of which updates have been tested (and are therefore ready to be pushed to the wider Fedora community) and which ones have not been tried out yet and need to wait for more feedback, we have the notion of karma, which is essentially a count of how many people have voluntarily tried out the update under consideration, and whether or not it works for them. The karma is incremented for each positive test result and decremented for each negative test result. A +3 karma means that the number of positive reports exceeds the number of negative reports by three; this could be 3 positive and 0 negative reports, or 8 positive and 5 negative reports.

This guide is about how to install and test an update, and how to give that update karma if it works for you (and where to leave feedback if it doesn't).

How does this fit into the larger picture of Fedora?
Here is an overview of "how updates get made," and where karma and testers (like you!) fit into the whole process:


 * 1) A package maintainer checks in a update or patch or fix or new package into fedora's CVS repo.
 * 2) The package is built in the Fedora build system: http://koji.fedoraproject.org/. At this point you can go to the buildsystem and download the package and install it if you wanted to. It would not be signed as coming from the Fedora project, and you would have to manually download and use it.
 * 3) The package maintainer creates an update using the newly built package in Fedora's update system: http://admin.fedoraproject.org/updates/. When this update request is created the maintainer can specifiy things about it. One thing the maintainer can specify is whether the update should go to the updates-testing repository (usually a "yes" unless it's an urgent fix), and how much karma it needs to move to the updates repository to be publicly available (+3 karma by default).
 * 4) When the update reaches updates-testing, it now requires karma (by default, +3 karma) in order to be promoted to the updates repository (and therefore "go live" for the rest of the Fedora community). This is where you come in - by installing and testing an update and giving it karma, you enable the update to move on to the next stage. Likewise, if you report a negative test result, you help prevent the update from being released.
 * 5) Once the update gets the required amount of karma, it is promoted to the "updates" repository, and the improvements from the update are made available to all Fedora users.

Why would I do this?
You might want to test updates, or have updates tested, for several reasons:


 * The update is for a project that you care about, and you'd like to see the fixes and changes for it made available faster.
 * You're a developer/packager and would like feedback on your update before you push it to several million users, to make extra sure that everything will be all right.
 * You're looking for a way to get involved with the Fedora QA team.

Find an update to test
Look at https://admin.fedoraproject.org/updates on the left sidebar and click any of the "testing" links there. It will take you to the list of updates that need testing for that particular build.

Prepare a test image
Download the .iso for the image you are testing and start it up in a virtual machine. If you are testing for the release under development, use rawhide.

Enable the updates-testing repo
yum --enablerepo=updates-testing check-update

Verify the old behavior
Check for the current behavior of the package you are testing. (If there is a test case listed, follow it.) You will be looking for a difference in this behavior after you install the update, to see whether it adds the functionality or fixes the bug it claims to fix.

Install the update
yum --enablerepo=updates-testing update

Test the update
Now that you have installed the update, verify whether it makes change it claims to make. Compare to your earlier results from right before you installed the update. (If there is a test case, run it.)