- Why and when we need to use automation testing?
- Increased test coverage
- Saved time, saved money
- Helps detect unexpected breaks in the systems
- When and why automation testing does not help? Or simply does not catch defects?
- Basics of Automation testing
- Desktop application testing
- Web application testing
- Cross-browser web testing
- Mobile application testing
- API testing
- Performance testing
Why and when we need to use automation testing?
At some point, manual testing turned out to be time-consuming, sometimes bug-missing, and just not enough. Manual testing can never be substituted with automated only, but automation testing appeared as its strong assistant offering unquestionable benefits for the team:
Increased test coverage
With test automation practice we can run hundreds of tests in a short time. With more test cases done, especially at large-scale projects, there is more confidence the system will work properly. However, with a high percentage of automated tests run, it does not always mean the quality of the application will jump at once. It all depends on testing things that matter and on the quality of tests as well, not just the number of things tested.
Saved time, saved money
Automated tests can reduce a lot of time spent on running repetitive tests. What 2 manual QA engineers manage to do in 3 days, 1 automation engineer manages to do in 1 day. New features can be tested in an automated way, but it depends on how the team decides on their testing workflow. However, the important choice lies in defining the framework and design for writing scripts that will allow testing the application with ease.
Helps detect unexpected breaks in the systems
Human error causes trouble for manual testing. As soon as new functionality is launched at large projects, changes can cause bugs in parts of the solution already developed and tested. Manual testers would spend eternity detecting those bugs every time new functionality goes to the production stage. That’s why it is much easier to hire automation testers and be sure the system works coherently.
When and why automation testing does not help? Or simply does not catch defects?
Automation testing is highly praised, as everything goes along with “automation” in the definition. Of course, automation processes are powerful, that’s what the teams strive for – the computer is doing everything for you at an expected high-quality level you can rely on. However, there are dark sides to automation and the reasons why in some cases automation won’t work for your team.
Automation testing is believed to work perfectly for regression testing, but even here some regression test bugs can slip into production. Reason #1 can be poorly designed automated test scenarios. Then, QA engineers’ coding skills matter as well since having test scenarios in front of them they have to script most efficiently not to miss a bug. If poorly designed test scenarios meet engineers with poor testing knowledge, then expect nothing but a few bugs slipping freely into production.
Another reason is the application environment. Execution of automated tests can be halted because of issues with the browser where the app can run, 3rd party integrations, dependencies, and so on. Barriers should be taken into account not to waste time with automation tests that won’t show correct results.
And the last, poor analysis of filed automated tests can lead to ineffective usage of automated tests. Reporting which is done manually should be analyzed inside out to understand reasons for failures and whether they are not hidden by some other issues.
Basics of Automation testing
Tests that can not be performed manually, for instance, API, Performance, Security testing, and the whole back-end testing in general, will be conducted only with the help of special automation testing software. In practice, they are automated a lot and are worth the efforts for the benefit of reduced time.
Desktop application testing
Desktop apps are installed by a user on a specific operating system. Desktop application testing checks the functionality, security, usability, and stability of the application. While testing a desktop application, it is important to check:
- Graphical User Interface
- Performance & Load
Web application testing
Web testing differs from the desktop application because it uses a browser ( the client-side) to request a web page (the server-side). Communication between the client and the server-side goes via HTTP/HTTPS, so QA engineers should have a good understanding of this to be able to assess how the web application works.
Performance testing, Security testing, Cross-browser, and Responsiveness testing are critical in terms of Web Testing but are not such a necessity for desktop testing. The reason is web pages run constantly in a browser and load a lot of content at high speed to satisfy the requests of an endless number of users. Working smoothly in performance, security, and integration aspects is very important for a website to be promoted among the end-users. Otherwise, competitors will take advantage.
Web sites are built using web services. Web services can be tested in isolation which means no involvement of web browsers and direct communication with web servers. Such an isolated approach makes testing much faster, easier, and offers more control as QA engineers can control and use data of different error scenarios.
Cross-browser web testing
Imagine building an application that should run on Google, Mozilla, and Opera browsers, but it turns out that some browsers do not support some functional parts of an application or its new version. To avoid this at release, QA engineers have to conduct cross-browser web testing. Though cross-browser issues are rare and mostly connected with the old fashioned versions of the browser, this type of testing can be automated and chosen only for the most important scenarios on different browsers.
Mobile application testing
Web responsive applications allowed users to access the apps not only through their desktop browser but through their smartphones which altered the methods of testing as well.
Native applications are installed on a mobile device and are designed specifically for a certain platform, let’s say either iOS or Android. Classic examples of native apps can be photo editor you download from Google Play or the App Store. while web responsive applications are web pages accessed via the browser but offer a view adjusted for mobile users. Progressive web applications are also accessible via the browser on your mobile device or laptop but can be added to your home screen on your smartphone and used offline. An example of PWA can be Pinterest.
Hybrid applications are very similar to native apps but can be accessed via WebView in the browser. The majority of hybrid apps are cross-platform. An example of a hybrid app can be Facebook, Instagram, or Uber.
Testing mobile applications can be done via emulator software which showcases what happens with the application when the automation tests are running and scanning necessary parts of the application. Automated tests for mobile devices can reduce a lot of time for the team. They can be pushed for a certain time limit and provide the testers with automatic results, which depict at what place the bug is found.
In contrast to functional testing when the tester interacts with the user interface, in API testing there are no activities for testing the visual, or front-end side, of the application. API testing is about testing the back-end of the application if to be precise – HTTP requests and responses from the server.
Why is API testing important? Imagine testing the sign-in form of the application. You insert login, password, click the button and watch the things work only from the visual part. However, to test the application fully, we need to see what’s going on behind the scenes. API testing starts with:
- Knowing the URL address of the endpoint to which post request is sent
- Knowing the format: JSON, form-data, Multipart
- Knowing what response status should be according to a response body
- Analyzing the response and what it can say about the “health of the request”
API testing is widely practiced via Postman. Testers who are engaged in API checking should clearly understand what necessary libraries there are for API testing, how HTTP requests work, what their structure and methods are, understand endpoints and be able to create collections and templates.
Performance testing is a non-functional testing method performed as automation testing of a system’s performance at a certain number of business users on the web page, desktop, or mobile application. It is useful for any application because not only functionality is important but the performance, by the way, can be impacted by design or some functional features. It’s always beneficial for the project quality to test performance in advance not postponing to the release.