Bugzilla:QA: Difference between revisions

1,914 bytes removed ,  5 August 2016
Update to reference Github
(Update to reference Github)
 
(17 intermediate revisions by one other user not shown)
Line 2: Line 2:
The QA team was 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.
The QA team was 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 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 test installations on landfill, which were using HTML Selenium scripts. Since Bugzilla 3.2 RC1, the QA team uses [http://bzr.mozilla.org/bugzilla/qa/ Perl Selenium scripts], which offer 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]. The QA team uses [https://git.mozilla.org/?p=bugzilla/bugzilla.git;a=tree;f=xt;hb=HEAD Perl Selenium scripts].


== 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 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.
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/bugzilla #bugzilla] channel on IRC 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, 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!


== Running Selenium scripts ==
== Running Selenium scripts ==
Prior to Bugzilla 3.2, Selenium tests were all written in HTML and executed from a web browser. As of Bugzilla 3.2 RC1 they have been converted to Perl, allowing more flexibility and control.
A read-only copy of the current Selenium scripts can be downloaded using git:
 
  git clone https://github.com/bugzilla/bugzilla.git
A read-only copy of the current Selenium scripts can be downloaded using bzr with:
  bzr co bzr://bzr.mozilla.org/bugzilla/qa/3.6
 
A read/write copy can also be downloaded with:
bzr co bzr+ssh://''login''@bzr.mozilla.org/bugzilla/qa/3.6
where ''login'' is your LDAP account. All available releases are listed [http://bzr.mozilla.org/bugzilla/qa/ here].


'''Note:''' The HTML scripts to work as is. They were based on a particular landfill installation which contained specific user accounts, products, components and parameters. Thus, they will not run on a fresh test installation. They are only available to show how the tests worked prior to Bugzilla 3.2.
A read/write copy can also be downloaded:
  git clone git@github.com:bugzilla/bugzilla.git


As of Bugzilla 3.2, a script named <em>config/generate_test_data.pl</em> will automatically populate new installations, allowing the Selenium and WebService tests to be executed.
A script named <em>xt/config/generate_test_data.pl</em> will automatically populate new installations, allowing the Selenium and WebService tests to be executed.


'''Note 1:''' The Bugzilla installation to test must already exist, and must already have its important parameters configured (i.e. ''urlbase'', ''cookiepath'', and ''mail_delivery_method''). It is recommended that ''mail_delivery_method'' be set to '''Test''', unless "actual" bug mail is desired.
'''Note 1:''' The Bugzilla installation to test must already exist, and must already have its important parameters configured (i.e. ''urlbase'', ''cookiepath'', and ''mail_delivery_method''). It is recommended that ''mail_delivery_method'' be set to '''Test''', unless "actual" bug mail is desired.


'''Note 2:''' Before executing <em>generate_test_data.pl</em>, make sure the parameters in <em>config/selenium_test.conf</em> are set correctly. This configuration file must match the Bugzilla configuration, especially the ''urlbase'' parameter and the path to the browser ([http://seleniumhq.org/download/ Selenium RC 1.0.3 and 2.0] work with Firefox 3.6). If ''mail_delivery_method'' is set to '''Test''', fake user accounts can be defined in the config file.
'''Note 2:''' Before executing <em>generate_test_data.pl</em>, make sure the parameters in <em>xt/config/selenium_test.conf</em> are set correctly. This configuration file must match the Bugzilla configuration, especially the ''urlbase'' parameter and the path to the browser. If ''mail_delivery_method'' is set to '''Test''', fake user accounts can be defined in the config file.


Once the DB is populated, start the Selenium server and execute the scripts in t/. To start the Selenium server, either execute <em>config/selenium_server_start.t</em> (which requires the [http://search.cpan.org/~hisso/Alien-SeleniumRC/ Alien::SeleniumRC] Perl module to be installed) or enter:
Once the DB is populated, start the Selenium server and execute the scripts in xt/selenium. To start the Selenium server, type:
  java -jar /path/to/selenium-server.jar
  java -jar /path/to/selenium-server-standalone-2.x.x.jar


which is exactly what Alien::SeleniumRC does. If Alien::SeleniumRC was not installed, 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 execute the scripts, go into the t/ directory and enter:
The Selenium Server can be downloaded from the [http://seleniumhq.org/download/ Selenium] website. To execute the scripts, go into the t/ directory and enter:
  prove -v --timer *.t
  prove -v --timer *.t


Line 36: Line 29:


== Writing Selenium scripts ==
== Writing Selenium scripts ==
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.
The fastest way to write new Selenium scripts is to use the [http://seleniumhq.org/download/ Selenium IDE] extension for Firefox (note that [http://release.seleniumhq.org/selenium-ide/1.0.12/selenium-ide-1.0.12.xpi Selenium IDE 1.0.12] is the last version to export Selenium scripts to the Perl language! Starting with version 1.1.0, the Perl exporter is no longer available). 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. All available commands are listed [http://search.cpan.org/~lukec/Test-WWW-Selenium/lib/WWW/Selenium.pm here], and are fully documented.
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. All available commands are listed [http://search.cpan.org/~mattp/Test-WWW-Selenium/lib/WWW/Selenium.pm here], and are fully documented.


Selenium scripts being under development/review can be found [http://landfill.bugzilla.org/bugzillaqa/buglist.cgi?quicksearch=OPEN here]. Those shouldn't be considered as "safe" till they are available via bzr. There are also many other bugs which need a test. You can [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=FIXED+testcase%3F pick one of them] and write a test, either by improving one of the existing tests, or by writing a completely new one. 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.
There are [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=FIXED+testcase%3F many bugs] which need a test. You can pick one of them and write a test, either by improving one of the existing tests, or by writing a completely new one. There are also some other [https://bugzilla.mozilla.org/buglist.cgi?quicksearch=prod%3ABugzilla+comp%3AQA existing scripts] which need improvements. If you want to submit a script, please file it [https://bugzilla.mozilla.org/enter_bug.cgi?product=Bugzilla&component=QA%20Test%20Scripts here].




Account confirmers, Anti-spam team, Confirmed users, Bureaucrats and Sysops emeriti
4,925

edits