QA:news – N5



                         Zbyszek Moćkun and Karol Kujawiak – Cognifide
                                                             June 2011




                            Selenium - the way of success

Intro

First, we would like to share with you when the idea of writing this article came to our mind.
A few months ago one of my colleagues sent us a link with a note - “it might be an
interesting conference for you”. We opened that link with curiosity - it was a link to the first
conference about Selenium in San Francisco (http://www.seleniumconf.com/). And it was
the moment when we realized how popular this tool is. It’s not only used by testers with
technical knowledge but by beginners too. In this article we will try to concentrate on
features and share our experience how to introduce and expand automation in projects
using Selenium.

About the conference - If you are using Selenium or want to learn more about the tool
please visit the webpage. You can find there videos from conference. On the webpage you
read in how many ways you can use it in automation.


Our experience with Selenium I and II

Figure 1 - Selenium

Authors have been using and extending Selenium for several years. A great influence on
how we use Selenium has our experience from testing tools that we had used before. What
we achieved is to moving good practices from them into Selenium - make this tool ideal :).
Trying to make automation easier and quicker we develop Selenium extensions and use
advice from Selenium community. Although we achieved a lot of using Selenium I about half
year ago we reached the point where further improvements were hard to introduce and time
consuming.

It was the moment when we had to decide about future of automation in our company. After
some research and labs we found it - the answer was quite easy - Selenium II. After less
than half of the year using Selenium II we made a big step in next level of automation.
“Exploratory Automated Test” - it’s the best description of the idea. The idea was to move
                       exploratory testing into automation (more flexible, lower costs,
                       quick to introduce, coverage most of functionalities without test
                       management costs, concentrate on aspects that are important for
                       users not on specific tests cases, concentrate on finding symptoms
                       of issues rather than verify specific functionality). Please notice that
                       automation in 99% of usage is use for regression tests.


                         Our aim is to achieve automated tests that can be written in “five”
QA:news – N5
minutes. Adding new component/functionality to tests should be as easy as writing one line
of simple code (example open a page with several version of the same component) that
shows where it is only. Scripts that are written by tester are run on that page and should
learn themselves about functionality and then use this knowledge in regression tests
(compare results with reference patterns).

Selenium against other automation tools

There is a lot of discussion on web which tool is better. Especially the war is between
Selenium and WebTest. Almost all blogs/discussions begin with or refer to Marc Gillemont
blog     -     and     his    comparison     between      WebtTest      and    Selenium
(http://mguillem.wordpress.com/II007/I0/II9/webtest-vs-selenium-webtest-wins-I3-5/).

We disagree with Marc opinion (please notice that he wrote it as WebTest committer) at
several points, its good place to start and compare your thoughts (as different features are
more important for you). Moreover, this blog post was written four years ago and
applications have changed a lot since then.

We don’t want to concentrate on that point in this article or try to compare Selenium with
other tools. We would rather concentrate on Selenium itself.

Selenium IDE - quick and easy to start

Selenium IDE is the most powerful part of Selenium. We think (and in our case it’s how it
was) IDE decided about Selenium popularity. Thanks this Selenium is not a tool for narrow
part of testers’ community who has developed skills but it can be used by all, even not a
testers. IDE provides a quick start which allows to show business side very quick results of
automation and gets money for further growing (for example develop programming skills).

From IDE to RC

For very beginners there is a record function, which has an ability to store actions like clicks
or typing. But only a very simple test could be recorded. When testing target is more
sophisticated, a tester has to raise his knowledge and learn some commands and their
usage. After that, designing even a complex test script isn’t so difficult.

Selenium IDE has many ready to use extensions which could extend its functionality such as
flow control, loops etc. Testers could also write extensions on their own. All that is needed is
more or less JavaScript knowledge.

Worth mentioning is that scripts written in Selenium IDE can be fully integrated with
continuous integration server, and run not only against Firefox but also against Internet
Explorer or other browsers. After the test run there is a detailed report generated which
provides information about test progress and possible errors. This report is not great but is
quite easy to read in compare with JUnit reports.

What more could we expect from testing tools? From our point of view many companies limit
their tests to which we have described previously. But if you look deeper there are some
areas which Selenium IDE or even RC with object oriented languages doesn’t cover. Here
comes Selenium II.
QA:news – N5

Selenium II

Selenium II in a new web testing framework which provides new opportunities, but also puts
new demands on the QA. In Selenium II test cases are written in high-level object oriented
programming languages such as C# or Java so HTML is no longer supported. Tester who
would like to write test scripts in this framework has to have knowledge of C# or Java
basics. But high-level object languages give an opportunity to make it fit your needs.
Functionality can be automated not only by simple step by step test case. These steps can
be concentrated in parameterized functions, which are simple to maintain.

Our goal is to provide high-quality products while keeping costs at an acceptable level. Apart
from functional tests we also wanted to run layout tests, check if site meets WC3 standards
and also if the analytics engine works as expected. We also wanted to have an ability to run
tests on collections of migrated sites (or after backend changes like new version of
Hibernate), to check if there are some differences. All of these automatically of course. Our
approach forced us to create our own framework, which gives us such possibilities. The main
advantage of our framework is that test cases written in it could catch issues that might be
unnoticed by manual tests.

Other reason why we created our framework was to have an ability to provide some
standalone testing tools for our clients. Especially when migration of huge collection of sites
comes into play, standalone tools are very helpful. In this case the only effort that clients
have to make is to create a set of original and migrated url’s.




                                       Figure 2 - Four aspects



Testing mobile devices

If there is a client whose main targets are iPhone and Android phone users, website has to
meet some specific requirements. It’s easy to figure out that these requirements could be
tested only on native environment. Selenium II provides such functionality. Test scripts can
QA:news – N5
be run on the device or on the emulator. There is no need to prepare separate test suites to
run in mobile device environment. The same piece of code can be used for testing
standalone and mobile browser.

Current beta version is partly underdeveloped, so not everything works how it should, but I
am sure that final version will give us possibility to attract potential clients with such
opportunity.

Selenium II – imperfections

Reports

Reports are one of the most important parts for automation. Selenium I has a built- in
report generator for HTML tests, which by default provides detailed information about the
test progress and failures. Quick debug which give you enough information (no need to
rerun test, all results saved, all data for debug available). It’s very important, because we
want to run our test in Continuous Integration environment (each commit/daily) so we will
check them minimum once daily.

When we run Selenium tests in Java - we use JUnit framework which means that is case of
any errors we get only stack-trace. It’s very difficult to debug and it consumes a lot of time
to discover what was the cause of error - particularly when issue is not I00% reproductive or
without specific java knowledge. Bad reports as JUnit only complicates it, additionally in
most of cases require rerun test manually.

WebTest is an example of how reporting part should work. Fortunately, it was not difficult to
implement the same for Selenium and effort returned after a few weeks. The main
advantage of custom report is that it could be well fitted to our demands, and could contain
some customization like JSON files generated by firebug, screen-shots, WC3 validation
details, source code etc.

Lack of HTML support

As mentioned before Selenium II is based on high-level programming languages and no
longer supports html scripts. It could be hard for beginners to learn how to automate using
C# or Java, but you can look at it from the other side, and treat Selenium IDE as first
degree of initiation. Writing in Selenium II would for sure improve testers’ technical skills
and broaden their horizons.

Google contribution to the development

Worth mentioning is that the main developer of Selenium II framework is Google Inc. Google
launched wide accessible bug tracking system, which allows testers from all over the world
to notify about all of the issues and suggestions that they may have. It was also an impulse
to grow a huge community of Selenium users, which could communicate with themselves
and share their experience and know-how. That confirms our belief that the final version
Selenium II will be a high quality product with solid support from Google and community
side.
QA:news – N5

HTML against java

The most interesting survey which we have made during last few years was about Selenium
programming languages: java vs. HTML (by html we mean test created by Selenium IDE not
converted to other languages). The same teams in almost identical projects were trying to
achieve two goals: to cover by automated tests about 20% of functionality and maintain
them during the project life-cycle. The result was a little surprising. Coding in HTML and
maintenance these type of tests takes 50% less time than java. It shows a very important
fact and I think this one decided about Selenium popularity - ease of use, quickness of
creation, no need of technical knowledge so almost all team members can work on Selenium
HTML tests. Flexibility of Java wasn’t an argument even for Java developers. Of course
please notice that the aim was to automate about 20% of test cases (about 100-200 tests).
If we want to achieve better coverage probably java flexibility dominates html.

Continuous Integration

Integration with CI environment shows the strength of open source community. There is no
problem with configuration, because it was described on several blogs/pages and thanks this
was quick and easy. There is also a number of plug-ins which could improve functionality of
CI environment, which already have been written by open source community.
Developers could get test reports on demand and instantly. They can run our tests on
nightly builds, their development machines after each commit/change using one click
feature. Reports (rewrote from WebTests) was so clear that give them all information about
errors. Thanks this they send to QA high quality software with minimum of regression
issues. Less time spend on testing/retesting bugs allowed us to invest more in automation.

Please notice that Selenium suite contains Selenium Grid - a tool to run the same test in
parallel on different browsers/machines. We don’t want to describe it here, as our
experience is not big. We have just tried it and when realize that the same you can achieve
using CI tool (CruiseControl/Jenkins) stop researching. It’s better to minimize the number of
used tools.




                             Figure 3 - Continuous Integration Environment
QA:news – N5
Selenium II - future of automation and few our thoughts

Why have we called article - the way of success. It’s because Selenium allows us to
introduce automation successfully in long term and short term project, minimize automation
cost and gave us ability to automate almost all aspects that are important for users or
customers.

Thanks Selenium II we are able to think about future of testing. We called it - Exploratory
Automated Tests. Tests are learning using results from reference run and then only verify it
when rerun again. The idea is not to write test case for all functionalities separately - rather
to use pages created during manual (functionality) tests and run on them robots specified
for application. Robots are looking for symptoms of errors (changes on layouts, JavaScript
errors, performance issues, w3c validation, content comparison, link checker, errors in logs
...). Most of errors have some symptoms which can be found by above approach.



ABOUT THE AUTHORS

Karol Kujawiak and Zbyszek Mockun are       working for Cognifide (http://www.cognifide.com)
- Digital Technology Agency where they      was engaged in long or short term projects for
variety of clients (worldwide recognized    brands). Authors gather their experience about
automation in previous companies too         - thanks this they have wide recognition of
automation tools and approaches.

Last few years they have been working in Agile environment where clients demand
forced approach which is described in this article. If we summary our achievements this
approach is quicker, give better results and is cheaper for clients than standard one.




Karol Kujawiak                     Zbyszek Moćkun

Selenium - The Way Of Success

  • 1.
    QA:news – N5 Zbyszek Moćkun and Karol Kujawiak – Cognifide June 2011 Selenium - the way of success Intro First, we would like to share with you when the idea of writing this article came to our mind. A few months ago one of my colleagues sent us a link with a note - “it might be an interesting conference for you”. We opened that link with curiosity - it was a link to the first conference about Selenium in San Francisco (http://www.seleniumconf.com/). And it was the moment when we realized how popular this tool is. It’s not only used by testers with technical knowledge but by beginners too. In this article we will try to concentrate on features and share our experience how to introduce and expand automation in projects using Selenium. About the conference - If you are using Selenium or want to learn more about the tool please visit the webpage. You can find there videos from conference. On the webpage you read in how many ways you can use it in automation. Our experience with Selenium I and II Figure 1 - Selenium Authors have been using and extending Selenium for several years. A great influence on how we use Selenium has our experience from testing tools that we had used before. What we achieved is to moving good practices from them into Selenium - make this tool ideal :). Trying to make automation easier and quicker we develop Selenium extensions and use advice from Selenium community. Although we achieved a lot of using Selenium I about half year ago we reached the point where further improvements were hard to introduce and time consuming. It was the moment when we had to decide about future of automation in our company. After some research and labs we found it - the answer was quite easy - Selenium II. After less than half of the year using Selenium II we made a big step in next level of automation. “Exploratory Automated Test” - it’s the best description of the idea. The idea was to move exploratory testing into automation (more flexible, lower costs, quick to introduce, coverage most of functionalities without test management costs, concentrate on aspects that are important for users not on specific tests cases, concentrate on finding symptoms of issues rather than verify specific functionality). Please notice that automation in 99% of usage is use for regression tests. Our aim is to achieve automated tests that can be written in “five”
  • 2.
    QA:news – N5 minutes.Adding new component/functionality to tests should be as easy as writing one line of simple code (example open a page with several version of the same component) that shows where it is only. Scripts that are written by tester are run on that page and should learn themselves about functionality and then use this knowledge in regression tests (compare results with reference patterns). Selenium against other automation tools There is a lot of discussion on web which tool is better. Especially the war is between Selenium and WebTest. Almost all blogs/discussions begin with or refer to Marc Gillemont blog - and his comparison between WebtTest and Selenium (http://mguillem.wordpress.com/II007/I0/II9/webtest-vs-selenium-webtest-wins-I3-5/). We disagree with Marc opinion (please notice that he wrote it as WebTest committer) at several points, its good place to start and compare your thoughts (as different features are more important for you). Moreover, this blog post was written four years ago and applications have changed a lot since then. We don’t want to concentrate on that point in this article or try to compare Selenium with other tools. We would rather concentrate on Selenium itself. Selenium IDE - quick and easy to start Selenium IDE is the most powerful part of Selenium. We think (and in our case it’s how it was) IDE decided about Selenium popularity. Thanks this Selenium is not a tool for narrow part of testers’ community who has developed skills but it can be used by all, even not a testers. IDE provides a quick start which allows to show business side very quick results of automation and gets money for further growing (for example develop programming skills). From IDE to RC For very beginners there is a record function, which has an ability to store actions like clicks or typing. But only a very simple test could be recorded. When testing target is more sophisticated, a tester has to raise his knowledge and learn some commands and their usage. After that, designing even a complex test script isn’t so difficult. Selenium IDE has many ready to use extensions which could extend its functionality such as flow control, loops etc. Testers could also write extensions on their own. All that is needed is more or less JavaScript knowledge. Worth mentioning is that scripts written in Selenium IDE can be fully integrated with continuous integration server, and run not only against Firefox but also against Internet Explorer or other browsers. After the test run there is a detailed report generated which provides information about test progress and possible errors. This report is not great but is quite easy to read in compare with JUnit reports. What more could we expect from testing tools? From our point of view many companies limit their tests to which we have described previously. But if you look deeper there are some areas which Selenium IDE or even RC with object oriented languages doesn’t cover. Here comes Selenium II.
  • 3.
    QA:news – N5 SeleniumII Selenium II in a new web testing framework which provides new opportunities, but also puts new demands on the QA. In Selenium II test cases are written in high-level object oriented programming languages such as C# or Java so HTML is no longer supported. Tester who would like to write test scripts in this framework has to have knowledge of C# or Java basics. But high-level object languages give an opportunity to make it fit your needs. Functionality can be automated not only by simple step by step test case. These steps can be concentrated in parameterized functions, which are simple to maintain. Our goal is to provide high-quality products while keeping costs at an acceptable level. Apart from functional tests we also wanted to run layout tests, check if site meets WC3 standards and also if the analytics engine works as expected. We also wanted to have an ability to run tests on collections of migrated sites (or after backend changes like new version of Hibernate), to check if there are some differences. All of these automatically of course. Our approach forced us to create our own framework, which gives us such possibilities. The main advantage of our framework is that test cases written in it could catch issues that might be unnoticed by manual tests. Other reason why we created our framework was to have an ability to provide some standalone testing tools for our clients. Especially when migration of huge collection of sites comes into play, standalone tools are very helpful. In this case the only effort that clients have to make is to create a set of original and migrated url’s. Figure 2 - Four aspects Testing mobile devices If there is a client whose main targets are iPhone and Android phone users, website has to meet some specific requirements. It’s easy to figure out that these requirements could be tested only on native environment. Selenium II provides such functionality. Test scripts can
  • 4.
    QA:news – N5 berun on the device or on the emulator. There is no need to prepare separate test suites to run in mobile device environment. The same piece of code can be used for testing standalone and mobile browser. Current beta version is partly underdeveloped, so not everything works how it should, but I am sure that final version will give us possibility to attract potential clients with such opportunity. Selenium II – imperfections Reports Reports are one of the most important parts for automation. Selenium I has a built- in report generator for HTML tests, which by default provides detailed information about the test progress and failures. Quick debug which give you enough information (no need to rerun test, all results saved, all data for debug available). It’s very important, because we want to run our test in Continuous Integration environment (each commit/daily) so we will check them minimum once daily. When we run Selenium tests in Java - we use JUnit framework which means that is case of any errors we get only stack-trace. It’s very difficult to debug and it consumes a lot of time to discover what was the cause of error - particularly when issue is not I00% reproductive or without specific java knowledge. Bad reports as JUnit only complicates it, additionally in most of cases require rerun test manually. WebTest is an example of how reporting part should work. Fortunately, it was not difficult to implement the same for Selenium and effort returned after a few weeks. The main advantage of custom report is that it could be well fitted to our demands, and could contain some customization like JSON files generated by firebug, screen-shots, WC3 validation details, source code etc. Lack of HTML support As mentioned before Selenium II is based on high-level programming languages and no longer supports html scripts. It could be hard for beginners to learn how to automate using C# or Java, but you can look at it from the other side, and treat Selenium IDE as first degree of initiation. Writing in Selenium II would for sure improve testers’ technical skills and broaden their horizons. Google contribution to the development Worth mentioning is that the main developer of Selenium II framework is Google Inc. Google launched wide accessible bug tracking system, which allows testers from all over the world to notify about all of the issues and suggestions that they may have. It was also an impulse to grow a huge community of Selenium users, which could communicate with themselves and share their experience and know-how. That confirms our belief that the final version Selenium II will be a high quality product with solid support from Google and community side.
  • 5.
    QA:news – N5 HTMLagainst java The most interesting survey which we have made during last few years was about Selenium programming languages: java vs. HTML (by html we mean test created by Selenium IDE not converted to other languages). The same teams in almost identical projects were trying to achieve two goals: to cover by automated tests about 20% of functionality and maintain them during the project life-cycle. The result was a little surprising. Coding in HTML and maintenance these type of tests takes 50% less time than java. It shows a very important fact and I think this one decided about Selenium popularity - ease of use, quickness of creation, no need of technical knowledge so almost all team members can work on Selenium HTML tests. Flexibility of Java wasn’t an argument even for Java developers. Of course please notice that the aim was to automate about 20% of test cases (about 100-200 tests). If we want to achieve better coverage probably java flexibility dominates html. Continuous Integration Integration with CI environment shows the strength of open source community. There is no problem with configuration, because it was described on several blogs/pages and thanks this was quick and easy. There is also a number of plug-ins which could improve functionality of CI environment, which already have been written by open source community. Developers could get test reports on demand and instantly. They can run our tests on nightly builds, their development machines after each commit/change using one click feature. Reports (rewrote from WebTests) was so clear that give them all information about errors. Thanks this they send to QA high quality software with minimum of regression issues. Less time spend on testing/retesting bugs allowed us to invest more in automation. Please notice that Selenium suite contains Selenium Grid - a tool to run the same test in parallel on different browsers/machines. We don’t want to describe it here, as our experience is not big. We have just tried it and when realize that the same you can achieve using CI tool (CruiseControl/Jenkins) stop researching. It’s better to minimize the number of used tools. Figure 3 - Continuous Integration Environment
  • 6.
    QA:news – N5 SeleniumII - future of automation and few our thoughts Why have we called article - the way of success. It’s because Selenium allows us to introduce automation successfully in long term and short term project, minimize automation cost and gave us ability to automate almost all aspects that are important for users or customers. Thanks Selenium II we are able to think about future of testing. We called it - Exploratory Automated Tests. Tests are learning using results from reference run and then only verify it when rerun again. The idea is not to write test case for all functionalities separately - rather to use pages created during manual (functionality) tests and run on them robots specified for application. Robots are looking for symptoms of errors (changes on layouts, JavaScript errors, performance issues, w3c validation, content comparison, link checker, errors in logs ...). Most of errors have some symptoms which can be found by above approach. ABOUT THE AUTHORS Karol Kujawiak and Zbyszek Mockun are working for Cognifide (http://www.cognifide.com) - Digital Technology Agency where they was engaged in long or short term projects for variety of clients (worldwide recognized brands). Authors gather their experience about automation in previous companies too - thanks this they have wide recognition of automation tools and approaches. Last few years they have been working in Agile environment where clients demand forced approach which is described in this article. If we summary our achievements this approach is quicker, give better results and is cheaper for clients than standard one. Karol Kujawiak Zbyszek Moćkun