Wednesday, September 3, 2014

Selenium use at PicScout

At PicScout, we believe that every step in our development workflow that can be automated should be. Testing is one of those steps where automation is needed. Automated testing allows us to implement new features quickly, as we can always prove that the product still works as we expect.

In order to automate our testing process, we chose to work with Selenium among other tools we are using. Selenium is an open source set of tools for automating browser-based applications across many platforms. It is mainly used for web applications testing purposes, but is certainly not limited to just that.

Our approach is that most of the automation should run locally to keep the continuous integration environment clean as much as possible. This is very important step for stepping up to continuous deployment. Therefore, we build a mechanism that enables to run the automation including selenium locally. By using this mechanism, the SW engineers can ensure quality up to a certain level.

Each developer must first run the automation including Selenium on the local machine before his\her changes are pushed to the source control repository. To achieve this, each developer works on his own environment and doesn't interrupt other developers. That way the selenium testing environment stays "clean". In order to ease the developers' life a set of tools was developed which is responsible for updating the DB and running the tests.

The tests use dedicated DB which contains the relevant data; hence before running them the DB needs to be restored from a backup stored in the source control repository (aka GIT). In case a new selenium test is written which requires some data changes, the tool allows publishing the local DB to the repository.

Furthermore, selenium tests are written over NUnit Framework. NUnit Framework runs the tests in sequence, meaning one after the other. This can be time consuming since some tests can run in parallel as long as they are not affected by each other. Running tests in sequence takes about an hour, while in parallel it takes only 10 minutes!

Therefore, we developed a tool that supports serial and parallel modes for running tests. In order to run tests in parallel, we had to isolate each test from another. To achieve this, we had to make sure that the tests don't use shared DB resource or information (including but not limited stored procedure, tables etc.).  By doing that, we know for certain that at any given time, no test will disturb any other test while still pushing the performance to the limit and finishing all of the tests in minimal time, as opposed to running tests in sequence manner.

That's about it on how we use selenium at PicScout.


  1. True Healing Self Healing has an extraordinary proprietary formula featuring the richest source of 100% bio-available Humic Fulvic Acid along with micro and marco mineral nutrients. This highly refined product consists of tiny, extremely complex molecules. The unique nanotechnology used in this formula sets it apart from any other product claiming to be similar in nature.

  2. I thought I would leave my first comment. I don’t know what to say except that I have enjoyed reading.The Olympic Games in Rio

  3. I'm really impressed by the way that you have managed to keep this post short and straight to the point. I must admit that I have really learnt a lot from simply reading this particular post. Continue with the good

  4. Kite projects Is providing construction, engineering and facilities management to provide edge protection, vertical access and hand railing solutions to Industries in United Kingdom!vertical ladder

  5. I found that site very usefull and this survey is very cirious, I ' ve never seen a blog that demand a survey for this actions, very curious.line icons

  6. I look for such article along time, today i find it finally. this post give me lots of advise it is very useful for me

  7. I really appreciate the kind of topics you post here. Thanks for sharing us a great information that is actually helpful.