Henrik Skupin on February 7th, 2010

Everyone who was not able to make it to my presentation during the FOSDEM 2010 you can dig into my slides on Slideshare. Live demonstrations are not contained.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , , ,

Henrik Skupin on February 1st, 2010

Over the next weekend the next FOSDEM will take place once more in Brussels (Belgium). It’s a two day event completely devoted to the free and open source software.

Mozilla has its own developer room again and offers a couple of interesting talks during both days. For the first time I will not only be a participant but also have my own talk. That means that everyone who is interested to hear about the basics of Mozmill and the current state of Mozmill testing is welcome to join my Mozmill talk on Sunday, Feb. 7th, at 10am. There will be a lot of live demonstrations about various areas QA is working on.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , ,

Henrik Skupin on January 29th, 2010

Starting today the Mozilla QA lab has it’s own automated Mozmill test-run in place which gets executed once a day. That means I do not have to run those tests manually anymore and we also have public available results which will give us more exposure regarding failed tests. Really, it’s a great step forward for us.

But lets talk in-detail about the progress…

During the last All Hands week in December 2009 I had to hold a presentation in one of our QA group meetings about the current state of the Mozmill tests and about the software update tests. Everyone was excited to see the improvements especially for the update tests which do not need any cumbersome file edits anymore. Finally we had an interesting discussion and collected some ideas about how to run those Mozmill tests in the future. As result we decided to setup a machine in the QA lab which will run Mozmill tests once a day against nightly builds of Namoroka and Shiretoko on OS X, Linux, and Windows. Further we wanted to use it as our machine to run Mozmill tests against release candidates and to verify the update channels. No sooner said than done…

Directly after the Christmas holidays my colleague Al ordered a Mac Mini and did the initial setup routine. He handed me over a system with 3 partitions. One for OS X 10.5, another one for OS X 10.6, and a third partition which is used for all the virtual machines and other necessary data. While talking about virtual machines the following will be in use: Ubuntu 9.10, Windows 2000, Windows XP, Windows Vista, and Windows 7.

My first task was to setup the initial Mozmill environment for all those operating systems. There is a nice documentation up on MDC which helps to make the task as easy as possible. To be able to share builds, scripts, and other stuff between the vms each of those has the shared folders feature enabled and a virtual drive connected to the data partition.

For the daily test-runs against en-US nightly builds of Firefox 3.6.x (Namoroka) and Firefox 3.5.x (Shiretoko), we decided to have OS X 10.5, Ubuntu 9.10, and Windows XP always open. With the help of the crontab on Linux and OS X, and the scheduled tasks on Windows we are able to start the tests at the same time each day. Given by the availability of the update snippets we have chosen 8am PDT for now. I’m not sure if that will work every day due to some slightly time shifts but it’s still something we have to improve. To run all the available tests I have written a wrapper script in Python which runs each of the different tests sequentially. This script will be used from any of the above mentioned vms. The order how the tests are run is given by:

  • Software Update tests: With the software update tests we check that nightly updates can be downloaded and applied via the software update dialog. Also we make sure to run the successive Mozmill tests against the most recent nightly build.
  • Normal tests: Those tests cover most of our implemented tests for the Smoketests, BFT, and FFT test group which do not require a restart of the browser.
  • Restart tests: The restart tests cover the remaining tests and are able to even test complex paths which require a restart of the browser.

Now someone may ask how do we track the results. There is no-one sitting on that machine. That’s correct. Therefor we use the rich feature set of Mozmill 1.4 which is able to send the results as a JSON object to any CouchDB server. For our usage inside QA such a server has been setup a while ago and is also used by our Mozmill tests now. It’s publicly accessible which means that everyone can check and analyze our daily results. If you are interested check-out the summary page on brasstacks. Click on any of the entries to see all the details of each test-run. For the moment the web interface is really simple and hackish but it gives us the chance to easily track failed tests.

Within the next weeks or months a couple of improvements have to be made on the client side but also for the web interface. In general it covers:

  • Finalize the decision which application information has to be acquired by Mozmill and has to be send to brasstacks.
  • Make Mozmill more robust against failures. The biggest problem we have are modal dialogs which can cause a hang of the complete test-run.
  • The software update tests have to be fixed to send results for each test module. Actually only for the first module results are available.
  • Complete new design views are needed to give an easy and structured access to all of the existent results. That is probably the biggest chunk. A separate blog post will follow once we start to work on that item.

Even with those tasks in the queue we are ready to run daily Mozmill tests continuously each day and use the same machine for our release testing work.

As usual we do not rest, so expect more to hear about Mozmill testing in the near future.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , , , ,

Henrik Skupin on January 25th, 2010

The new version of Mozmill brings some under the hood changes to the Python back-end.

The patch on Bug 533227 adds report support for restart tests which can push results to a couchdb instance now. With Mozmill 1.3 only normal Mozmill tests had that capability.

Further we have improved the handling of Python callbacks from within Mozmill tests. While the former version of Mozmill has only supported those callbacks for restart tests, you can use them in normal tests (Bug 538058) now. The only restriction is that the test-run has to be started from the command line client. Users with only the extension installed will not have access to this feature. In the future we will probably use it to implement handling of system level elements and events. Ongoing work can be checked on Bug 525060.

Another great enhancement we are proud to announce are the simplified steps to install Mozmill as command line client on Windows. The only requirement we have is the Mozilla Build environment. There is no need to install Python or the pywin32 extension in parallel anymore. Complete instructions can be found on MDC. A big thanks goes to Atul Varma for his contribution. You helped us a lot!

For more information check-out the complete list of fixes.

Mozmill 1.4 is still in the review queue on addons.mozilla.org. It will take a bit until it is officially available there. So for now grab a copy from Mikeal’s repository and give it a try.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , ,

Henrik Skupin on January 22nd, 2010

Yesterday, the Mozilla Corporation has been released the brand new Firefox 3.6 which is the successor of Firefox 3.5 and has a couple of interesting new features and speed enhancements aboard. Let’s have a quick look at the release notes and checkout what makes it a shiny and brilliant new version:

  • With the Lightweight Themes support users will be able to skin their browser chrome without having to install Personas. Browse through the list of the most popular Personas and hover the different themes to see a preview directly pinned onto your browser. A click on “Wear It” will finally choose the skin.
  • The new outdated plug-in protection checks the installed plug-ins on your system and will warn you when a newer and safer version is available.
  • Enjoy full-screen playback for HTML5 video elements.
  • Improved start-up times, better responsiveness and faster Javascript execution which were a main focus for 3.6.
  • Support for new CSS attributes like gradients, background sizing, and pointer events.
  • Support for new DOM and HTML5 specifications including the Drag & Drop API and the File API.
  • Firefox 3.6 blocks unknown and vulnerable libraries to lower the risk of crashes. In the past a couple of 3rd party tools have been circumvent the official way in installing add-ons which lead to a significant number of crashes after an upgrade of Firefox.
  • Full list of features.

With a release cycle of only 7 months Mozilla has been shown that it’s possible to release a new major version of the Firefox browser in such a short interval. And that’s absolutely necessary when comparing Firefox with products of other browser vendors. Bringing the newest technology as fast as possible to our users will full-fill their needs and finally help the continuously increment of market share.

But all that work wouldn’t have been possible without the help of the overwhelming community around Firefox. Thousands of contributors spent hours of their spare time in developing, localizing and testing Firefox. We can always repeat: Thank you soo much!!

For myself it was the second Firefox release I have worked on as an employee of the Mozilla Corporation and each week has been shown that it is a pleasure to work with all those amazing people around the world. I’m feeling great to be able to spend all my time fully devoted to Firefox. It was a great experience and a path of learning new technology, improving social interactions, and making the web better.

Given Firefox 3.6 I was able to work on projects like:

  • DLL blocklisting / Components folder lockdown: 3rd party applications which install their own modules inside the components folder of Firefox or LSP’s (Layered Service Provider) which get bind to the Firefox process can crash Firefox. With DLL blocklisting those crashing or malicious modules will be blacklisted and not loaded anymore. On the other hand only known XPCOM modules will be loaded thanks to the components folder lockdown feature. Both features have been tested with various top100 3rd party applications.
  • Tab Network Prioritization: Restoring a Firefox session with a dozen of open tabs in one or multiple windows slows down the restoration process more or less. Until now there was no specification in which order those tabs get loaded. Means tabs outside of the visible tabbar or in underlying windows were restored in parallel. As result you had to wait longer until the currently selected tab has been finished loading. From now on the current tab has the highest priority, followed by visible tabs in the same window and tabs in underlying windows. As tests have been shown this feature works very well in Firefox 3.6. More improvements will come with the next version.
  • Crashkill: To lower the number of crashes for Firefox the Crashkill project has been initiated a while back. In the last quarter I was able to work on a couple of those bugs. Thanks goes to Chris Hofmann who showed me a couple of nifty tricks and tools regarding crash analysis.
  • Mozmill: As the lead of the Mozmill test automation process I had to put focus on Firefox 3.6. So all manual tests from the Smoketest and BFT testgroup, which have been already automated, can be used to run automated functional tests against Firefox 3.6. The same applies to the automated software update tests which make sure that update paths are working as expected. As seen for the previous 3.6 beta and 3.5.x security releases all those tests are very helpful and give time for QA to focus testing on more important areas.

Finally I can say that I’m feeling great with Firefox 3.6 as my daily companion but also looking forward to any upcoming work which has to be done for the next major version of Firefox…

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , , ,

Henrik Skupin on December 28th, 2009

Even when having an ISDN phone connection at home you will be able to send a fax. There is no analog connection needed. The only requirement is an installed Fritz!Box Fon from AVM which acts as your telephone system. Via its configuration web interface you can already specify a number to receive faxes. But also sending a fax is possible in some simple steps.

Download and install Fritz!Fax on your Windows machine. A printer driver is installed automatically which is used to send b/w or colored faxes. Works like a charm.

Thanks AVM even it is an unsupported software.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , ,

Henrik Skupin on December 18th, 2009

Some weeks ago a member of the Mozilla community asked me if we can also use Github for our Mozmill test repository which was at this time only available at hg.mozilla.org/qa/mozmill-tests/. I agreed but only with the requirement that there has to be a simple way to synchronize both remote repositories. Then Mikeal Rogers who leads the Mozmill project pointed me to Hg-Git which is a tiny Mercurial plugin and implements the Git protocol.

Yesterday I was finally able to play around with this plugin and promptly run in a couple of problems due to wrong application dependencies. Most of my applications have been installed via MacPorts while for Mozmill and hg-git setuptools has been used. As result Mercurial wasn’t able to find the hg-git plugin. It has been taken nearly half an hour before I figured out whats going on. So for any future reference and as a tutorial for others I will give instructions below how to get this plugin working on your Mac.

To install other software on your Mac it’s mostly helpful to do this via MacPorts. The installation package and needed instructions can be found on their website. Just download the appropriate build for your version of OS X and install it.

Now use MacPorts to install Python and setuptools. The command below can take a while to execute depending on the power of your machine:
$ sudo port install python25 py-setuptools

With setuptools installed you can use easy_install to install all the remaining packages:
$ sudo easy_install mercurial hg-git

To activate the hg-git plugin the following lines have to be added to the .hgrc file in your home directory:
[extensions]
hgext.bookmarks =
hggit =

And that’s all! Now you can use hg-git to synchronize your local copy of the repository with the remote one via hg or git. As example I will use our Mozmill test repository which has two branches (default and mozilla1.9.1).

Create a local copy of the remote repository and change into its folder.
$ hg clone http://hg.mozilla.org/qa/mozmill-tests
destination directory: mozmill-tests
requesting all changes
adding changesets
adding manifests
adding file changes
added 251 changesets with 840 changes to 132 files (+1 heads)
updating to branch default
98 files updated, 0 files merged, 0 files removed, 0 files unresolved
$ CD mozmill-tests/

Because we have two branches we will have to create two bookmarks. Both are used to map those branches to separate branches in the git repository. Then push all the data to the github repository:
mozmill-tests$ hg bookmark -r default master
mozmill-tests$ hg bookmark -r mozilla1.9.1 1.9.1
mozmill-tests$ hg push git+ssh://git@github.com/whimboo/mozmill-tests.git
pushing to git+ssh://git@github.com/whimboo/mozmill-tests.git
importing Hg objects into Git
creating and sending data
git::refs/heads/mozilla-1.9.1 => GIT:70300757
git::refs/heads/master => GIT:092e7cf3

If you want to pull updates from the Github repository to include those into your local version just run a normal pull command in hg with the appropriate URL:
mozmill-tests$ hg pull git+ssh://git@github.com/whimboo/mozmill-tests.git
pulling from git+ssh://git@github.com/whimboo/mozmill-tests.git
importing Hg objects into Git
Total 0 (delta 0), reused 0 (delta 0)
importing Git objects into Hg
(run 'hg update' to get a working copy)

If you do not want to add the path of the remote github repository each time you can simply add it to the .hg/hgrc file:
cat .hg/hgrc
mozmill-tests$ cat .hg/hgrc
[paths]
default = http://hg.mozilla.org/qa/mozmill-tests
git = git+ssh://git@github.com/whimboo/mozmill-tests.git

And run this command afterward:
mozmill-tests$ hg pull -u git

As you can see it’s really simple to keep your Mercurial and Github repository in sync. Personally I will move to Github now which makes handling patches on different branches much easier.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...
Henrik Skupin on November 23rd, 2009

Given the quick review on AMO (many thanks to you guys that this happened under a week!) the Mozmill team can call out that Mozmill 1.3 has been released. It’s available for download on addons.mozilla.com.

This release is a big step forward by adding a couple of new features and fixing some important bugs which have been found by users and have been introduced by the last release. A complete list can be found on Bugzilla.

Let’s give a short overview and mention some of the fixes/features:

  1. Bug 509912: We have updated the maxVersion for all applications. So Mozmill is not compatible up to Firefox 3.7a1pre, Thunderbird 3.1a1pre, and SeaMonkey 2.1a1
  2. Bug 508643: From now on new profiles are created by Firefox itself. Before that fix we have used the files from within the default profile folder of the default application. That caused failures for localized builds because the profile has been initialized with wrong profile data.
  3. Bug 516729: Tests failed by clicking on elements inside the content area if the window was too small. Now with this fix elements will be scrolled into view before clicking on them.
  4. Bug 522990: Nested elements in the content or chrome document weren’t correctly reported by the inspector which didn’t let you get an element string.
  5. Bug 512789: Both controller.check and controller.radio functions have been updated to work now.
  6. Bug 515072: A second parameter has been added for controller.assertJS which let you specify an object which can be accessed via “subject” from within that function. It allows to show a more detailed information for a failing test.
  7. Bug 500987: Restart tests can pass variables between test modules. There is a persisted property available by default which can be used to set/get user-defined values.
  8. Bug 515209: Restart tests can have a callback handler written in Python which can be called asynchronously.

If something has been regressed since the last version please file a bug under Testing/Mozmill on Bugzilla.

If you are interested and want to know more about Mozmill then join us in #QA on IRC or subscribe to the Mozmill developer list.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , ,

Henrik Skupin on November 18th, 2009

Release testing which has to be done by QA right before a new release of Firefox will be offered to our users is still an area where lot of manual work is involved. That means we run Smoketests and the Basic Functional Tests (BFT’s) against the build candidate. As I have already written there is ongoing work with Mozmill to get those work fully automated in the future. But that are not the only tests we have to run…

Since ever Firefox is supporting automatic updates we also have to check that each and every user will get the right update package for the installed version of Firefox. Most of our users should run the latest version of Firefox but there are also cases where people don’t update immediately or even don’t want to upgrade to the next major version of Firefox. Given that updates have to be delivered to each of the supported branches (e.g. Firefox 3.0.0.x and Firefox 3.5.x) and also as major update for upgrading to the next major version. We also have a community beta program running where users can help testing beta versions of the next Firefox version. Those users will get a separate update offer on another update channel.

Finally there are 4 different channels we have to test for en-US and some of our P1 localized builds. In detail those are in the right order:

  • betatest: This channel makes sure that updates which will be delivered to beta users will pass.
  • beta: Beta testers will get their updates on that channel.
  • releasetest: This channel tests the update snippets which have been pushed to our official download mirrors.
  • release: Default channel for all Firefox installations to get the next version.

For each of those mentioned channels we offer partial and complete updates. The former one will be used if the latest minor version of Firefox is in use, e.g. a user wants to update from 3.5.4 to 3.5.5, while the latter one is for all other versions of the same branch. If an update fails to apply which could happen due to different reasons like a download problem, users will not get stuck on their installed version. In such a case a fallback update will be downloaded which is identical to the complete update. If that fails too the same process will be started again after a given time.

Until now these tests had to be done manually by us. An example can be seen in the update section of the Firefox 3.5.5 test plan. So we normally tests updates on all supported platforms, for each update type (minor, major), and make sure that fallback updates will pass.

With the new software update tests for Mozmill which I have finished two days ago, we can easily automate this process now. The only manual steps which have to be done is to prepare the tests by downloading the necessary builds for all the platforms and place them in their own folders. Once that is done the automated test can be started. It will use all builds within a given folder and runs tests updates for the specified channel. The results are printed in wiki format to the console and only have to be copied to the appropriate Wiki page.

If you are interested in running those update tests you have to install Mozmill on your machine and clone our Mozmill test repository. Detailed steps can be found in the Mozmill test creation tutorial on QMO.

This is a big step forward in a direction where we can run update checks against each localized build of Firefox and can make sure that updates are successfully applied and don’t fail or cause any sort of failure. And it will give QA more time to focus on other topics.

If you are interested and want to know more about Mozmill then join us in #QA on IRC or subscribe to the Mozmill developer list.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: , , , , , ,

Henrik Skupin on November 17th, 2009

That’s pretty cool! Years ago I was fascinated by watching minimalism pictures but today I noticed something which is much much better. Keith Loutit from Sydney uses the same technique to create own videos with the same effect. I cannot get enough from it… See on of his shorts movies to get fascinated too:

Bathtub IV from Keith Loutit on Vimeo.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Tags: ,