Bugzilla:QA: Difference between revisions

From MozillaWiki
Jump to navigation Jump to search
mNo edit summary
No edit summary
Line 1: Line 1:
== QA team ==
== QA team ==
Since July 11, 2005, [http://www.bugzilla.org/news two days] after the release of Bugzilla 2.18.3, the QA team has been created to improve the quality of future releases. [http://www.bugzilla.org/releases/2.20/ Bugzilla 2.20] has been our most stable version ever released, with many security bugs fixed. This result has been possible partly thanks to the hard work done by the QA team. But all the testing has been done manually, which required both a lot of time and a lot of people (the QA team has less than 10 members) to test the most important features of Bugzilla.
The QA team has been created on July 11, 2005, two days after the release of Bugzilla 2.18.3, to improve the quality of future releases. [http://www.bugzilla.org/releases/2.20/ Bugzilla 2.20], which was released two months later, became our most stable version ever released, with many security bugs fixed. This result has been possible partly thanks to the hard work done by the QA team which found several tens of bugs. But all the testing has been done manually, which required both a lot of time and a lot of people (the QA team had less than 10 members) to test the most important features of Bugzilla.


As repeating the same tests manually again and again for each new release quickly became rather boring, we tried to automate the process as much as possible. To help us in this task, the QA team use a [http://www.openqa.org/selenium/index.html Selenium] installation on [http://landfill.bugzilla.org/selenium/bugzilla/index.html landfill] (access restricted, sorry) which can be run from a web browser. That's how Bugzilla 2.20.x, 2.22.x and 3.0.x are being tested. Since Bugzilla 3.2 RC1, the QA team uses Selenium scripts written in Perl, which offers many advantages over their HTML equivalent.
As repeating the same tests manually again and again for each new release quickly became boring, we decided to automate the process as much as possible using [http://seleniumhq.org/ Selenium]. For Bugzilla 2.20.x, 2.22.x and 3.0.x, we used [http://landfill.bugzilla.org/selenium/bugzilla/index.html test installations on landfill], which are using HTML Selenium scripts. Since Bugzilla 3.2 RC1, the QA team uses [http://bzr.bugzilla.org/selenium/ Perl Selenium scripts], which offer many advantages over their HTML equivalent.


== How to contribute? ==
== How to contribute? ==
As Selenium cannot do everything, and because someone has to write these scripts anyway, we are always looking for new testers. If you are interested in helping us making Bugzilla better and more stable, feel free to join us. The best way to start is to join us in the [irc://irc.mozilla.org/qa-bugzilla #qa-bugzilla] channel on IRC, or to write to [mailto:qa@bugzilla.org qa@bugzilla.org] telling us that you are interested. Of course, you can also report bugs you discovered to [https://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla b.m.o] directly. If you want to help with automated tests, you are highly encouraged to read below, and download our existing test scripts.
As Selenium cannot do everything, and because someone has to write these scripts anyway, we are always looking for new testers. If you are interested in helping us making Bugzilla better and more stable, feel free to join us. The best way to start is to join us in the [irc://irc.mozilla.org/qa-bugzilla #qa-bugzilla] channel on IRC, or to write to [mailto:qa@bugzilla.org qa@bugzilla.org] telling us that you are interested in contributing. Of course, you can also report bugs you discover to [https://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla b.m.o] directly. If you want to help with automated tests, you are highly encouraged to read below, and download our existing test scripts.


Since mid-2006, we use a [http://landfill.bugzilla.org/bugzillaqa Testopia installation] to track testing progress and to let us easily manage remaining tests to do. That's a great tool to help us work efficiently, avoiding testing what has already been (automatically) tested.
Since mid-2006, the QA team uses a [http://landfill.bugzilla.org/bugzillaqa Testopia installation] (basically, Bugzilla with the Testopia extension) to track testing progress and to let us easily manage remaining tests to do. That's a great tool to help us work efficiently, avoiding testing what has already been (automatically) tested. We still run some tests manually, despite more and more of them are converted to Selenium scripts (and to be honest, the number of tests to run manually now is close to zero). If you don't know how to write Selenium scripts, you can still help us either by writing new testcases, or by running existing ones manually. If you prefer to write Selenium scripts, that's even better!


We still do some tests manually, despite more and more of them are converted to Selenium scripts. If you don't know how to write Selenium scripts, you can still help us either by writing new testcases, or by running existing ones manually. If you prefer to write Selenium scripts, that's even better!
== Running Selenium scripts ==
Till Bugzilla 3.0.x, Selenium tests were all written in HTML, which were the executed from a web browser. It has been decided for Bugzilla 3.2 RC1 and newer to convert them to Perl, giving us more flexibility and control. We no longer write test scripts in HTML.


== Writing Selenium scripts ==
All our current Selenium scripts can be downloaded using bzr. For instance, to download Perl scripts for Bugzilla 3.4, type:
Scripts executed from a web browser and those called from a Perl script use a different syntax, the first ones being pure HTML, the second ones being written using Perl language.
 
=== Scripts running from a web browser ===
Till Bugzilla 3.0.x, Selenium tests were all written in HTML. It has been decided for Bugzilla 3.2 RC1 and newer to convert them to Perl, giving us more flexibility and control. We no longer write test scripts in HTML.
 
HTML and/or Perl Selenium scripts can be downloaded using bzr. For instance, to download Perl scripts for Bugzilla 3.4, type:
  bzr co bzr://bzr.bugzilla.org/selenium/3.4
  bzr co bzr://bzr.bugzilla.org/selenium/3.4


Line 25: Line 20:
  bzr co bzr+ssh://your_login@bzr.bugzilla.org/var/www/html/bzr/selenium/3.4
  bzr co bzr+ssh://your_login@bzr.bugzilla.org/var/www/html/bzr/selenium/3.4
where your_login is your user account name on landfill.
where your_login is your user account name on landfill.
'''Note:''' Do not expect the HTML scripts to work as is. They were based on a given test installation on landfill having some given user accounts, products, components and parameters, and so they won't run on a fresh test installation. They are only available so that you can see what we did till Bugzilla 3.0.




Do not expect HTML scripts to work as is (for 3.0 and older. These HTML scripts no longer exist in 3.2 and newer). They were based on a given test installation on landfill having some given user accounts, products, components and parameters, and so they won't run on a fresh test installation. They are only available so that you can see what we did till Bugzilla 3.0. Note that the 3.0 branch has a t/ directory with test scripts related to WebService. As these scripts point to the same test installations as above, they also won't run as is on a fresh test installation.
Bugzilla 3.2 and newer have a script named <em>config/generate_test_data.pl</em> which populates your fresh new installation automatically so that you can run our Selenium and WebService tests yourself on your own installation.


=== Perl Selenium scripts ===
'''Note 1:''' your Bugzilla installation must already exists, and you must already have configured most important parameters (such as the urlbase, cookiepath, and mail_delivery_method* parameters (* set it to 'Test' ideally, unless you really want to get bugmail)).
To avoid the problem mentioned above, we highly improved the QA process during the Bugzilla 3.2 cycle and decided to write a script which would populate your fresh new installation automatically so that you can also run our Selenium and WebService tests. This script is located in <em>config/generate_test_data.pl</em>, and requires that you first set parameters in <em>config/selenium_test.conf</em> correctly. It must match your local configuration, especially the url to your installation, which must already exist (but should contain nothing more than what checksetup.pl created, i.e. your admin account, the TestProduct and system groups), as well as the path to your browser (if possible, use Firefox 2. In Firefox 3, the EULA license is displayed on startup with a new profile, which prevents Selenium to work). If you set mail_delivery_method to 'Testfile', you can define fake user accounts in the config file. Once the DB is populated, you can start the Selenium server and run our scripts located in t/.


The fastest way to write Selenium scripts is to use [http://openqa.org/selenium-ide/ selenium-IDE] ([https://addons.mozilla.org/extensions/moreinfo.php?application=firefox&category=Newest&numpg=10&id=2079 amo], formerly [http://seleniumrecorder.mozdev.org/ Selenium Recorder]). Selenium-IDE is a Firefox extension which writes scripts for you. It records your actions and converts them into a valid Selenium script. If you decide to install this extension, you don't need to install Selenium separately; everything is included in the XPI package (samples and docs are not included though). You can also write Selenium scripts with a text editor, but this is longer and can be pretty painful.
'''Note 2:''' Before running <em>generate_test_data.pl</em>, make sure that you set parameters in <em>config/selenium_test.conf</em> correctly. This configuration file must match your local configuration, especially the url to your installation (urlbase), as well as the path to your browser ([http://seleniumhq.org/download/ Selenium RC 1.0.1] works like a charm with Firefox 3.5). If you set mail_delivery_method to 'Test', you can define fake user accounts in the config file.


In order to run these Perl scripts, you first have to install 2 Perl modules, both of which are available on CPAN:
Once the DB is populated, you can start the Selenium server and run our scripts located in t/. To start the Selenium server, you can either run <em>config/selenium_server_start.t</em> (which requires the [http://search.cpan.org/~lukec/Alien-SeleniumRC/ Alien::SeleniumRC] Perl module to be installed) or you can type:
[http://search.cpan.org/~lukec/Alien-SeleniumRC/ Alien::SeleniumRC]
  java -jar /path/to/selenium-server.jar
  [http://search.cpan.org/~lukec/Test-WWW-Selenium/ Test::WWW::Selenium]


Each command is then of the form $sel->command_name_ok('field', 'value', 'description'), where $sel is the test object created by Test::WWW::Selenium and which will do the interface between your test script and your Bugzilla installation. The description is optional, but gives very useful information. A typical output is of the form:
which is exactly what Alien::SeleniumRC is doing. If you didn't install Alien::SeleniumRC, then you must extract <em>selenium-server.jar</em> from the [http://seleniumhq.org/download/ Selenium RC] ZIP file (generally, the JAR file provided by SeleniumRC is more recent than the one found in Alien::SeleniumRC). To run the scripts, go into the t/ directory and type:
prove -v --timer *.t


#perl test_enter_new_bug.t
-v will make the output verbose and --timer will display the time it takes to run each script. Both options are optional. Note that you must have the [http://search.cpan.org/~lukec/Test-WWW-Selenium/ Test::WWW::Selenium] Perl module installed in order to have the scripts to run as it will be the interface between Perl and Selenium!
ok 1 - open, /bugzilla/
 
ok 2 - Enter admin login name
== Writing Selenium scripts ==
ok 3 - Enter admin password
The fastest way to write new Selenium scripts is to use the [http://seleniumhq.org/download/ Selenium IDE] extension for Firefox. It records all your actions and converts them into a valid Selenium script. You can also write Selenium scripts manually with a text editor, but this is longer and can be pretty painful.
ok 4 - Submit credentials
ok 5 - open, /bugzilla/enter_bug.cgi?product=TestProduct
ok 6 - Display enter_bug.cgi for the selected product (bypass classifications)
ok 7 - Enter bug summary
ok 8 - Enter bug description
ok 9 - Submit bug data to post_bug.cgi
ok 10 - Bug created
1..10


What you can read here are the descriptions given for each command of the script. This makes debugging much easier!
Each command is of the form $sel->command_name_ok('field', 'value', 'description'), where $sel is the test object created by Test::WWW::Selenium. The description is optional, but may give some useful information.


Selenium scripts being under development/review can be found in open bugs depending on [http://landfill.bugzilla.org/bugzillaqa/show_bug.cgi?id=3065 bug 3065]. Those shouldn't be considered as "safe" till they are available using bzr.
Selenium scripts being under development/review can be found in open bugs depending on [http://landfill.bugzilla.org/bugzillaqa/show_bug.cgi?id=3065 bug 3065]. Those shouldn't be considered as "safe" till they are available via bzr. If you want to submit a script, please file it [http://landfill.bugzilla.org/bugzillaqa/enter_bug.cgi?product=QA%20tests&component=Selenium%20scripts here], which is the Bugzilla installation used by the QA team.





Revision as of 18:29, 15 July 2009

QA team

The QA team has been created on July 11, 2005, two days after the release of Bugzilla 2.18.3, to improve the quality of future releases. Bugzilla 2.20, which was released two months later, became our most stable version ever released, with many security bugs fixed. This result has been possible partly thanks to the hard work done by the QA team which found several tens of bugs. But all the testing has been done manually, which required both a lot of time and a lot of people (the QA team had less than 10 members) to test the most important features of Bugzilla.

As repeating the same tests manually again and again for each new release quickly became boring, we decided to automate the process as much as possible using Selenium. For Bugzilla 2.20.x, 2.22.x and 3.0.x, we used test installations on landfill, which are using HTML Selenium scripts. Since Bugzilla 3.2 RC1, the QA team uses Perl Selenium scripts, which offer many advantages over their HTML equivalent.

How to contribute?

As Selenium cannot do everything, and because someone has to write these scripts anyway, we are always looking for new testers. If you are interested in helping us making Bugzilla better and more stable, feel free to join us. The best way to start is to join us in the #qa-bugzilla channel on IRC, or to write to qa@bugzilla.org telling us that you are interested in contributing. Of course, you can also report bugs you discover to b.m.o directly. If you want to help with automated tests, you are highly encouraged to read below, and download our existing test scripts.

Since mid-2006, the QA team uses a Testopia installation (basically, Bugzilla with the Testopia extension) to track testing progress and to let us easily manage remaining tests to do. That's a great tool to help us work efficiently, avoiding testing what has already been (automatically) tested. We still run some tests manually, despite more and more of them are converted to Selenium scripts (and to be honest, the number of tests to run manually now is close to zero). If you don't know how to write Selenium scripts, you can still help us either by writing new testcases, or by running existing ones manually. If you prefer to write Selenium scripts, that's even better!

Running Selenium scripts

Till Bugzilla 3.0.x, Selenium tests were all written in HTML, which were the executed from a web browser. It has been decided for Bugzilla 3.2 RC1 and newer to convert them to Perl, giving us more flexibility and control. We no longer write test scripts in HTML.

All our current Selenium scripts can be downloaded using bzr. For instance, to download Perl scripts for Bugzilla 3.4, type:

bzr co bzr://bzr.bugzilla.org/selenium/3.4

Other available branches are listed here.

Users having write access to our bzr repository must use this command:

bzr co bzr+ssh://your_login@bzr.bugzilla.org/var/www/html/bzr/selenium/3.4

where your_login is your user account name on landfill.

Note: Do not expect the HTML scripts to work as is. They were based on a given test installation on landfill having some given user accounts, products, components and parameters, and so they won't run on a fresh test installation. They are only available so that you can see what we did till Bugzilla 3.0.


Bugzilla 3.2 and newer have a script named config/generate_test_data.pl which populates your fresh new installation automatically so that you can run our Selenium and WebService tests yourself on your own installation.

Note 1: your Bugzilla installation must already exists, and you must already have configured most important parameters (such as the urlbase, cookiepath, and mail_delivery_method* parameters (* set it to 'Test' ideally, unless you really want to get bugmail)).

Note 2: Before running generate_test_data.pl, make sure that you set parameters in config/selenium_test.conf correctly. This configuration file must match your local configuration, especially the url to your installation (urlbase), as well as the path to your browser (Selenium RC 1.0.1 works like a charm with Firefox 3.5). If you set mail_delivery_method to 'Test', you can define fake user accounts in the config file.

Once the DB is populated, you can start the Selenium server and run our scripts located in t/. To start the Selenium server, you can either run config/selenium_server_start.t (which requires the Alien::SeleniumRC Perl module to be installed) or you can type:

java -jar /path/to/selenium-server.jar

which is exactly what Alien::SeleniumRC is doing. If you didn't install Alien::SeleniumRC, then you must extract selenium-server.jar from the Selenium RC ZIP file (generally, the JAR file provided by SeleniumRC is more recent than the one found in Alien::SeleniumRC). To run the scripts, go into the t/ directory and type:

prove -v --timer *.t

-v will make the output verbose and --timer will display the time it takes to run each script. Both options are optional. Note that you must have the Test::WWW::Selenium Perl module installed in order to have the scripts to run as it will be the interface between Perl and Selenium!

Writing Selenium scripts

The fastest way to write new Selenium scripts is to use the Selenium IDE extension for Firefox. It records all your actions and converts them into a valid Selenium script. You can also write Selenium scripts manually with a text editor, but this is longer and can be pretty painful.

Each command is of the form $sel->command_name_ok('field', 'value', 'description'), where $sel is the test object created by Test::WWW::Selenium. The description is optional, but may give some useful information.

Selenium scripts being under development/review can be found in open bugs depending on bug 3065. Those shouldn't be considered as "safe" till they are available via bzr. If you want to submit a script, please file it here, which is the Bugzilla installation used by the QA team.

Ja