Automated software testing is important for software products in order to verify key functionality, perform regression tests and help to run a lot of tests in a short period of time.
For a long time testing of the web-based user GUI and mobile applications have been more challenging, and now available tools are usually commercial. This is changed because the web-based applications are growing, and there are various tools that can help us with this, including open source tools. On the other hand, native and hybrid mobile application are growing too. So web and mobile application are in a trend today.
By the way, it is often thought a test automation is expensive and difficult process. But it is not so, especially if you act step-by-step. And probably the choosing a tool stack is the one of the most difficult decisions you should make before implementation of automated testing. What the tool will more right, free to use and easy to learn for your project?
Answer to this question requires to consider many factors:
- what type of testing has to be automated;
- what kind of applications has to be automated;
- what a language will be used for the tests;
- what additional tools will be used or what tools has already used;
Of course, you also need to consider environment and technology you are using on your project and who on the team has the skills to the one or another tool.
This tutorial will help you answer the above questions.
So, let’s start!
The first factor.
What kind of functional testing has to be automated.
When choosing a web auto test tool, it’s important to identify your testing needs clearly. Firstly, the selection will always depend upon the purpose of your testing. Let’s look at the table below.
|Type of testing
|Functionality testing like a real user
|You need to test a system on frontend from GUI, like a real user, to check all functions are working ok
|User interface testing
|You need to test if some changes in UI has occurred.
|Functional testing from backend (API testing)
|You need to test functions of your application through REST or SOAP APIs
Functional tests are the most common. But in recent years, the tests of the graphical interface are gaining popularity, because it is important to get results not only about the functional state of the product, but also about the integrity and adaptability of its interface.
Moreover, all web applications work on the principle of client-server. So it is more very important first to check them at the request-response level, which is based on REST and SOAP APIs, because API level tests take less time to write than in the case with GUI level tests. To better understand this look at the picture below.
The second factor.
What kind of applications has to be automated.
Next checkpoint which you have to go through is to define types of application for which automated tests will be written.
|These applications work in a web browser, or in other words it is website.
|Mobile applications installed from Google Play Market.
|Mobile applications installed from App Store.
|Windows Phone application
|Mobile applications installed from Microsoft Store.
All this kind of applications require individual approach in choosing of automation tool.
Web based application are should be automated by Selenium WebDriver because it provides native interface for working with a browser, like a real user. WebDriver is supported by all the most used browsers, such as Mozilla Firefox, Google Chrome, Opera, Internet Explorer, Edge, Safari.
Mobile native applications on Android, iOS, Windows Phone require to use Appium with Selenium WebDriver for automation applications installed from stores. Appium provides interface for working with a device like a real user through WebDriver protocol and allows to perform such actions as touch, swipe etc.
The third factor.
What a language will be used for the tests.
Choosing a programming language for automated testing should not be taken lightly. If you’re just starting out then considering and discussing this will help position you for greater success.
A great way to determine which language to go with is to answer a four simple questions.
- Who will own the automated tests?
- What language do you know well, or what language would you like to know?
- What has language been used by your development team?
- What are customer’s requirements about language?
Of course, there also will be other, situation-dependent nontechnical factors.
If you has not used any languages before, or you decided to go to other language, next statistic chart (by Spectrum.IEEE) will be helpful greatly. It displays the top programming languages for 2017. You can customize the statistic on your requirements going by the link above.
The fourth factor.
What additional tools will be used or what tools has already used.
Usually, on the projects different tools is used for successfully development process. These include the tools for:
- application management lifecycle;
- deployment and building a project;
- continuous integration process.
Here is a list of some of the tools:
|Lifecycle management tools
|Jira, Redmine, Mantis, Bugzilla
|Maven, ANT, Gradle
|Continuous integration/deployment tools
|Hudson, Jenkins, TeamCity
Variety of these instruments should be taken into account when you make a decision to integrate automated testing on your project.
Summing up, to make the final decision, you must:
- have the meeting with the project team and discuss about requirements which should implemented;
- get the deeper information about used tools in the development process;
- compare all requirements and information with existing tools and make a choice;
- test chosen tool and analyze the results;
- correct you stack tool by adding or removing some libraries or related tools.
To simplify the choice we have prepared the simple guide that we sure will lead you to more suitable tool for your project, and help you to get on the right track.