Skip navigation.

Log in | Sign up

REST ASSURED

Quality rants by Opera QA

MAMA: What is the Web made of?

, , , ...

I'm proud to announce a project that has been in the works in Opera's QA group for quite some time. It is a tool called MAMA (Metadata Analysis and Mining Application). MAMA was created to help us improve Opera by finding real world sites that we could test with. MAMA allows us to find any combination of CSS, Script and markup factors that we desire. In a sense, it is a search engine for Web page structures instead of content.

MAMA has been tremendously helpful in testing Opera and measuring the popularity of technologies both new and old. One of MAMA's strengths is correlation between different issues. Want to find examples of a "tty" CSS media type that also use the "@import" syntax? Fine. Documents that have over 1,000 inline images or XML documents that use both Flash and external CSS? MAMA can find them.

We know that MAMA is useful, but we think it will be very useful to others too:

  • Browser manufacturers and others can use MAMA data on the popularity of widely used technologies to prioritize bugs and justify adding support for new technology to in-progress releases.
  • Standards bodies can use the data to measure the success and adoption rates of various technologies.
  • Web developers can use the same data to justify support of various technologies in their work.
  • It can provide real-world, practical samples of the Web developer's "art", for inspiration and instruction.

MAMA has a side effect that is also one of its most beneficial features: it gives Web authors a voice to the browser and standards makers by documenting actual practice.

MAMA's results for your consideration

In MAMA's introduction, and all the files that link from it, you'll find data that has been pulled from MAMA so far. We lead off MAMA's debut with a full study of markup validation. Along with this, a much shorter, condensed validation article covers some of the broad points of MAMA's validation findings.

Quick links to MAMA's first results:

...And this is just the initial phase! In the coming weeks, a number of other articles about MAMA's findings and statistics on other Web page topics will be released. Our eventual goal is to make an interface to the MAMA data directly available at some point, but that availability will be phased in gradually when it is ready. For now, these statistics are a way to gauge and generate interest. These articles should also help spur a dialog in guiding MAMA's future collection goals - I find that the more feature requests MAMA gets, the more it improves.

Please send your comments and feedback our way, either directly on dev.opera.com's forums or here on the Opera QA blog.

Working with NIO2 - Part I - Building OpenJDK7 With NIO2

, , , ...

Hello all,

My name is Deniz, and I work in Opera QA, Systems and Processes on tools development. We mainly create tools for automation, stress testing, and various other stuff. In this first post, I will try to guide you on building the OpenJDK platform, in upcoming posts I will give samples on how to use it.

Here at QA SaP, we try to keep up with the latest technologies, and Java is no exception. After the announcement of NIO2, I had my eyes on ea(early access) builds to test the new APIs to see if it would solve my long-lasting issues with NIO.

So, what is NIO2 and why is it useful? NIO APIs in Java, compared to old regular IO, provides features for intensive I/O operations. For example, we have used NIO with our proprietary stress tester tool—which would not be possible to implement in standard IO, and it proved to be very useful. However, we had some problems with it in terms of scalability and maintenance and those were targeted by Sun in NIO2. Moreover, they introduced a bunch of new File IO APIs—such as New File System API, useful for creating a wide range of tools with ease.

Finally, Sun released the implementation—first with a patch; later it was merged to repository (mercury/hg), but they had no binary builds available.

So, I wanted to compile the source code —after they released it as a patch. However, it wasn't as easy at it may sound hence the reason for this tutorial. Luckily, Sun started providing the binaries for all platforms some time ago, but we think it is a good idea to be on the bleeding edge and to be able to build the jdk7 on your own.

I would like to mention that this tutorial is based on Rajendra's post—which really helped me a lot during the build—and Elliotte's post on java.net. I thought it would be helpful to have everything in one place, providing links to downloads, listing packages, and so forth. I tried to combine both posts, clean the obsolete packages, and provide links to files, which should speed up the process for you.

The building platform is Ubuntu 8.04 i586/x64 (I am on x64), which is up to date as of writing this post. I tried to put all Java-related files to /opt/java; by just changing the directories (/opt/java and /home/operaqa), you should have no problems compiling.

Read more...

Testing My Opera

, , , ...

Here at Opera, we make more things than the desktop browser. Apart from the browser for all the other platforms and Opera Mini, we make some internal systems, some server-side support for the browser, and some public sites. Probably the most well known, non-browser Opera product is My Opera (yes, this very site!). Being such an important product, it's in the hands of very smart people (and me), and it goes through extensive automated testing to catch as many problems as possible, as early as possible.

The automated testing for My Opera is based on three things:

  1. A functional test suite.
  2. A unit test suite.
  3. Our beloved continuous integration server, that executes the test suite at every commit and shows the results to the whole team.


The functional test suite is built with Test::WWW::Mechanize and uses special My Opera testing installations, each one connected to its own private database. That way, we can recreate the database before each test and ensure a stable and reliable environment for the test execution. This is currently the biggest and most mature one, and it has helped a lot in avoiding regressions when refactoring code and fixing bugs.

The unit test suite is a standard Perl test suite that covers the most important modules of My Opera. Again, we use private databases for the tests that do need them, so we ensure a reliable testing environment.

Last, but not least, we have everything hooked up in continuous integration so we have testrun information for every commit. When any test suite catches errors, we are automatically notified, and we can track which changes produced which errors.

All in all, we are quite happy with the automated tests for My Opera, as they give us freedom to work with the code without fear of breaking things without noticing. There is, of course a lot of room for improvement, and we are always tweaking and enhancing it.

You can be a site compatibility wizard!

Do you want to contribute site patches to Opera's browser.js file and help make difficult websites work in Opera? Well, now you can! It's not hard if you know a bit of JavaScript and like looking under the hood of a web site to figure out what is going on.

Opera's User JavaScript is a flexible and versatile tool for changing the way a site works and repairing errors. Read the detailed documentation and feel free to ask questions in the User JavaScript forum while learning.

If you have analyzed a website and want to contribute a script, here is how: File a bug report from https://bugs.opera.com/wizard/ and include the following information:

  1. Step-by-step description of how to find the problem
  2. Quoted snippets of website code that contribute to the error
  3. Links to CSS or JS files that contain the problematic code - it's very important that we know exactly where the issue is.
  4. Tell us how important you think the site and the problem is
  5. Include a user script that solves the problem fully or partially
  6. If it is the site's fault, mention whether you have contacted the site and asked them to fix it - if you know contact details please add them.


In the "Brief summary" box, start the text with the word [SITEFIX] (include the brackets).

You will receive feedback on the script and confirmation of whether it will be accepted and released in the browser.js file.

Good luck with your site patching adventures and thanks in advance for your contributions!

Fabulous Feedback

Though Opera Software's Quality Assurance (QA) department works tirelessly to find problems that affect end-users (that's you), it's impossible to test all possible configurations and to find all possible problems. Thus, we rely on end-users to help find the problems we've missed.

There are several methods end-users can use to communicate their feedback to us:

The BTS is the best method when end-users run into issues they believe are bugs and they want them fixed. QA employees at Opera Software spend much of their time in the BTS, filing and analyzing bug reports, communicating with developers, and verifying bug fixes. The system makes it easy to track issues and compile relevant information, so any developer viewing a bug report can quickly understand the issue and spend time fixing it rather than analyzing it and gathering information.

In most cases, the bug reports we receive have all the required information, so there is no reason to contact bug reporters. In a small number of cases, we need additional information, so the bug reporter is contacted through the BTS.

The Opera Community Forums and newsgroups are a great place for end-users to discuss issues and gather information before filing bug reports. The forums and newsgroups are not an official way of contacting Opera's QA dept., though we do frequent both the forums and newsgroups. Thus, there's no guarantee that an Opera employee will see your post, let alone act upon it and follow-up internally. Developers generally do not visit the forums and newsgroups, as they're busy coding!

Under the Help menu on Opera for Desktop, users can report problems with the site they're currently viewing and provide a short description of the problem. This information is sent directly to Opera where it's collated in a database. We use this information to augment bug reports by indicating the frequency of problem reports. Reporting a site problem this way does not submit a bug report. Users comfortable reporting bugs should use the BTS instead.

Many of our development teams maintain blogs to communicate with end-users, such as the Desktop Team blog, Mac Team blog, Core Team blog, Opera Mobile blog, and Opera Mini blog. Though these blogs do allow comments, blog comments are a suboptimal means of leaving feedback on a software release. Instead, forums or newsgroups should be used for discussing issues and the BTS should be used for submitting bug reports.

Your feedback is important, so please take a moment to think about which method is most relevant for the feedback you want to provide.

Alexa Global Top 500 Validation Research

, ,

As part of a much larger effort to identify validation trends, in January 2008 I validated URLs from Amazon's Alexa Global Top 500 (January 2008 snapshot). In a recent discussion thread on the W3C's Validator mailing list, I brought up some of the results of this process.

A request was floated to make the full results of validating the Alexa Global Top 500 available for examination, so here they are.

I ended up successfully validating 487 of the URLs from the Top 500 list as part of this wider validation study covering millions of URLs. This Alexa list has some quirks due to its global coverage - the most prominent being that regional variants of some of the most popular sites are heavily (over)represented. 61 of Alexa's Global Top 500 are all Google regional variants!

The results overview covers the usual details that the validator produces: the character set used to validate, the Doctype FPI, the number of warnings, general errors and fatal errors, along with pass/fail validation judgment. The ultra-brief version of these results is: 32 of the 487 URLs passed validation (6.57%).

For those wishing to dig even deeper, a full list of the error types and error counts for each type is also available for every one of these URLs.

Detailed Error Results Pages: 1, 2, 3, 4, 5

Continuous Integration: Team Testing

, , , ...

As you know, Continuous Integration is a set of simple practices that reduces software integration time and problems. It also improves general software quality with little overhead. Just having a testrun per every commit is quite handy for two reasons: early regression finding and easier debugging.

One of the most important virtues of CI is giving the tests a "social dimension". Martin Fowler's "Everyone can see what's happening" is actually one of the most powerful, yet subtle virtues of Continuous Integration. Letting everyone know about the status of the tests is not about assigning blame when something fails, it's about making the tests part of the development process. We wholeheartedly agree with the vision of automated tests that are incorporated upstream into the development process and run on a continuous basis.

What happens when you make the tests part of the process? Several interesting things:

  • The team focuses on avoiding and fixing regressions due to clear and quick feedback - less "getting out of the door quickly" with more stability.
  • The team has confidence in the code - more refactoring or rewriting of suboptimal modules.
  • Certain processes like deployment are streamlined - easier, clearer and more reliable.


We feel that these benefits make Continuous Integration a natural extension to automated tests for development teams, a bit like "the version control system of tests". Here at Opera we are using Continuous Integration for selected server-side projects, notably the Opera Link server and My Opera. It has had a huge and positive impact on both of these projects, providing a crucial role when refactoring and improving code.

If you are not using Continuous Integration in your project yet, you should start now!

Welcome to Rest Assured

, , , ...

Welcome to "Rest Assured", quality rants by Opera's Quality Assurance department.

My name is Snorre M. Grimsby, and I am the head of Opera's QA department. We would like to tell the world more about what testers and QA engineers at Opera do, and also discuss more general quality assurance issues. Therefore, posts on this blog will relate less to specific Opera products and technologies (and/or the testing of them). In other words, this is not the place to report bugs.

So, who are we?

Today, we have people in seven of Opera's offices, organized in five sub-departments to align with our development lifecycle. We are responsible for testing and assuring the quality of all Opera deliveries and technologies, from Core versions to end-user and business products.

What is testing?

Internally, we use this definition of testing:

Testing
Activities, including development of test-supporting tools and systems, that directly or indirectly examine, observe, or evaluate (without access to the source code) the state (for example quality, usability, operability, compatibility, accessibility) of features and functions in the Opera browser.

Activities that fall under the definition would be

  • Planning and managing testing of products
  • Writing, reviewing, and running test suites
  • Web compatibility and interoperability verification
  • Tracking, analysis, and assignment of all reported defects

We also develop, deploy, maintain, and administrate testing infrastructures, tools, and systems.

Beyond testing

We often say that [t]he object of good testing is to find as many bugs as possible, and that [t]he object of good quality assurance is to find as few bugs as possible. What we mean by that, of course, is that testing is about detection and that quality assurance is about prevention. Work on process improvements (SPI), therefore, also falls under our QA department.

But our responsibilities actually go beyond testing and quality assurance:

  • Reading, reviewing, and writing specifications
  • Setting up non-testing infrastructures and systems (e.g. guidelines)
  • Internal, customer, and public technical and non-technical documentation
  • End-user and customer support and community interaction
  • Product localization

If you have an interest in Web technologies, software testing, and/or quality assurance, we hope that you will find this a blog worth subscribing to.