Welcome back warriors! I know you fight all day long testing the application/system, finding bugs if any. Thereby ensuring promised quality.
Also, you would have heard of the term, “Automated Testing” a huge number of times. Let’s see what it means and why we should really care about it. Moreover, why invest our valuable time and effort in creating automated tests? (Let me tell you a secret here: Though we use a tool to achieve automation, there definitely is a significant effort involved. So we shall get into this only if it is worth our effort!)
What: Automated Testing is a process of automating the manual process to test the application/system under test with the help of a tool.
Why: In today’s world, most of the software applications written are web-based, due to the fact that highly interactive, responsive and feature rich content can be catered to a large number of end users spread across the globe at an economical cost. Demands on quality and competitive pressures on time-to-market and budget have also been increasing dramatically. In order to save time and money, achieve increased test coverage, best possible quality and improved customer satisfaction, test automation is becoming mandatory!
When does this become advantageous?
- Regression Testing – Imagine there is a functionality created in the system and it is already tested. At some later point of time, there is some change which is affecting the existing code or a new functionality is introduced. Due to this an existing already tested part might not work as expected or worse, fail. What is the condition if this happens in production environment and one of your customers complains about it? Can you even imagine such a thing happening? That just sounds frightening right? To your rescue, we here have Selenium. We can just create a regression suite of automated tests using Selenium and every time a change or a new functionality is introduced, this suite can just be run without any additional effort (at the end of every sprint in case of an agile process) to make sure nothing is broken.
- High Level Testing – Unit tests can be used to test single component (class level) and integration tests may be used to test how things work at inter-class level. In case of a web application, the final motto is to find out if everything works on the browser the way customer wants it to be. Using Selenium we can perform testing just like the user/customer does!
- Combinatorial Testing – Let’s take a scenario of a web page with three sets, each having 3 radio buttons. Testing all of the combinations manually may take a lot of time but programmatically this can be done easily and tests can run overnight without manual intervention.
- Exact Requirements – Manually written test steps may be ambiguous. One tester may test and declare it as passed but another tester may say, it failed. Whereas automated tests have a very deterministic result. Hence creates exact requirements for the developer and for your application irrespective of the person running the test. It either passes or fails. That’s it!
- Customized reports can be generated along with screenshots with the help of certain testing frameworks which will be really helpful when rapid feedback is expected by the developers or other project stakeholders.
- Once the test scripts are in place and the test environment is all set, any number of test execution iterations can be performed.
- The speed at which these automated tests can be executed is very high. Hence in cases of frequent releases, automation becomes a good solution.
- When parallel execution is required, automation is preferable.
- Since human generated errors (which might be caused when repetitive tasks are performed as they get boring with time) are prevented, accuracy and quality are improved.
Which is possibly the most widely used open source solution for web based automation? – Come on, it’s obviously Selenium!
With this bit of knowledge, see you again in another post to find out the history of Selenium.
Have a great day!