What is automation testing?
If you’re in the technology sector, you’ll be familiar with the QA part of the product development cycle and you’re likely to have rolled your sleeves up and done some testing yourself, whether you’re an engineer, head of QA, or a CEO.
Automating as much of the QA process as possible is a sensible way to approach testing. As a provider of (non-automated) crowdsourced tests, many of our clients have an automation-first ethos which we can help support with flexible supply of more specialist manual testing.
So where do you draw the line? What can you and should you automate? Keep reading to find out below.
Recap | What is automation testing?
Test automation refers to the practice of using software tools and scripts to automate the execution of tests in software development and quality assurance processes. It involves creating scripts or test cases that can be run automatically, rather than requiring manual effort. Test automation aims to increase the efficiency and effectiveness of testing by reducing human errors, saving time, and improving test coverage.
While all testing, including regression testing, can be done manually, there are often greater benefits to doing much of it automatically. Automation testing can be run at any time of the day; it is faster and cheaper than manual testing; since Quality Engineers are able to deliver more tests than QAs, the former category is sometimes a career route for the latter and their ambition. Engineers, in particular, believe that tests “should” be automated, even when the business reality is much messier.
What are the benefits and disadvantages of automation testing?
Benefit: Instant test return
An engineer can either test something themselves or send it to a QA. If they do the former they have context switched, and they are spending expensive engineer salary time on cheaper QA work. If they do the latter they will need to wait on a service department to deliver something and create a bottleneck, possibly a delay to release. Some aspects of the “crowd” offered by Global App Testing can mitigate these issues – 6 hour test return, overnight and weekend testing, and the other advantages of having a flexible, global supply of labor at your finger tips. But instant returns are always better.
Benefit: Labour hours saved with test automation
Testing can be time-consuming. Though automation may require an initial investment, it can save money in the long run to become more cost-effective. Team members use their time in other areas and are no longer required to carry out manual testing in many situations. Creating a test system which can be scaled also allows for more testing, and a more rigorous QA standard.
Downside: Flaky tests, unexpected maintenance
On the other hand, flaky tests are a burden. According to one survey launched by Global App Testing, flaky tests were the main reason that businesses moved away from automated testing. As a test becomes less frequent, or requires more challenging setup and maintenance, the case for automating it becomes weaker. We cover a detailed equation for calculating when a test should be manual in our blog: Should a test be automated? Or manual?
Benefit: More detailed reports in some respects
Automation testing can provide more detailed heuristics and reports than it is possible to get by a human filling out a form. Its also a different kind of data – a human will describe their experience of your app, which is more subjective and less detailed but matters a great deal – especially for kinds of bugs a machine can’t pick up.
Downside: Businesses often overestimate the extent they will deliver on automated testing
In our 2022 Webinar, the automation paradox, we talked about some research by our friends in TestRail about how businesses typically overestimate the % of their testing suite which they will automate year on year. In TestRail’s annual survey, businesses identified that they would automate a further 20% of their suite; and every year, they automated less than 1% more. This optimism can often lead to miscalculation in terms of the amount of labor needed.
Deciding which tests to automate
Not only is it important to understand which tests to automate, but to understand a rough order of the desirability of automation because you are unlikely to be able to automate every test you would like to.
You may choose to prioritize according to any of the following schemas:
- Regression tests; your most common kinds of test cases
- Test cases that are time-intensive or need to be repeated often
- Tests that can lead to failure because of human error
- Repetitive and monotonous tests
- Extensive tests that require multiple data sets
- Tests that can’t be performed manually
- High-risk tests; e.g. which require a detailed answer which might be used in a legal context
Some tests you can’t automate:
- User experience (UX) testing and surveys; which can be done through Global App Testing
- Usability testing; in which users try to complete a goal
- Exploratory testing, which is an approach which does not involve test cases. This tests “unknown unknowns” by asking testers to simply find bugs. It can be extremely useful to find functional bugs outside the scope of the written test cases.
- User Acceptance Testing (UAT); UAT involves end-users testing the software in their own environment to ensure it meets their requirements and expectations. UAT is best performed by real users who can validate the software's suitability for their specific needs and provide feedback. The involvement of end-users and their unique perspectives make UAT less suitable for full automation.
Some tests are more difficult to automate:
- Internationalization or localization testing. Localization testing ensures software functions correctly for a specific locale. It involves validating language, cultural, and regional aspects. It's challenging to automate due to the need for human validation of linguistic accuracy, cultural context, UI layout, and complex scenarios that require manual verification in diverse localized environments.
- Mobile app testing. Mobile app testing is the process of verifying the functionality, usability, and performance of a mobile application across various devices, operating systems, and network conditions. It is challenging to automate due to the vast device fragmentation, diverse screen sizes, OS versions, hardware capabilities, and the need for manual testing to ensure optimal user experience on different mobile devices.
Tests which are normally automated
Although most tests can be automated (theoretically; all tests) – here are the most common categories of automated test.
Code analysis consists of different testing tools, including dynamic analysis and static analysis. You can apply different ones to tackle separate tests. For instance, some look for possible security flaws, while others check for usability. To run these tests, the developer will need to write code. Once this has been done, though, there’s no human interference for the rest of the testing process.
Unit testing is all about checking individual components of the software or product, as you would developing iOS technology for an iPhone or Android for Samsung. This means that each element of the software is fully tested before the finished version is. These tests can be written by developers, but now that automation testing has come into play, there’s no need.
Businesses would typically deploy these types of tests in the software development phase of the production process.
This graph shows the unit test life cycle:
Image alt text: no alt text
Integration tests, also known as end-to-end tests, are often more complicated to set up than some other tests. The application models are integrated and tested as a group. This means that communication between each module can be tested, to figure out how well they work as a whole.
Automated accepted tests
Automated accepted tests (AAT) are similar to behavior-driven development (BDD) and automated acceptance test-driven development (AATDD). The acceptance test is created before a new feature is developed. It sets a precedent for the feature to meet and is usually written by developers, the business, and quality assurance (QA) in tandem. In future, they can also be used as regression tests.
This type of testing is used to check whether the product is stable or not. If it’s not stable, it gets sent back to the developers marked as an ‘unstable build’. They can then run further tests if needed to identify the root cause of the problem. This diagram shows how the smoke test process works:
Image alt text: no alt text
How a manual testing solution can help you automate more tests
We dive into more tools and services below. But you should check out our webinar on how a manual testing solution can help you automate more of your testing suite.
How can enterprise businesses utilize automation?
Enterprise businesses should be leveraging automation in order to improve their business processes and operating systems, particularly those in the technology industry. Automation provides valuable tools for businesses to use to their advantage, whether that be for improving product delivery times or to meet increasing security standards.
Achieving Continuous Integration and Deployment (CI/CD): Test automation plays a vital role in CI/CD pipelines, where code changes are frequently integrated, built, and deployed. Automated tests can be seamlessly integrated into the CI/CD process, enabling rapid feedback on the quality of each build and reducing the chances of introducing new bugs.
Regression Testing: Enterprise applications often undergo regular updates and enhancements. Test automation allows for efficient regression testing by re-running automated test cases to ensure that existing functionalities haven't been affected by recent changes. This helps in maintaining the stability and reliability of the software over time.
Scalability and Reusability: Automated tests can be easily scaled up to handle large test suites and execute tests across multiple platforms and configurations. Additionally, automation frameworks and libraries promote the reuse of test scripts, reducing duplication of effort and increasing efficiency.
Resource Optimization: Test automation reduces the reliance on manual testing, freeing up valuable resources to focus on more complex and creative tasks. Testers can shift their focus from repetitive, mundane tests to exploratory testing, usability testing, and analyzing test results.
Consistent and Reliable Testing: Automated tests provide consistency in test execution, ensuring that the same steps and test data are used consistently across multiple test runs. This eliminates human error and makes the testing process more reliable and reproducible.
To effectively implement test automation in an enterprise setting, it is important to invest in appropriate tools, establish a robust automation framework, ensure collaboration between development and testing teams, and continuously maintain and update the automated test suite as the software evolves
The Automation Test Process
The automation test process should be familiar to technology professionals, especially developers. To begin automation testing from scratch, it is important to follow a systematic approach. The following is an overview of the automation test process, starting from selecting the appropriate test tool to test execution.
Selecting the Test Tool
Choose the test tool that best fits your requirements. Depending on the goals of your testing, different types of automation testing tools may be suitable. For example, if your aim is to identify specific software bugs, code analysis automation testing tools may be more appropriate. Some popular test automation tools and web apps available in the market include Selenium IDE, WebDriver, UFT, Ranorex, Cucumber, TestComplete, and Appium. Many of these tools provide tutorials and some are open source, so it's important to have a thorough understanding of each tool and its potential benefits for your testing process.
Establishing the Scope of Automation
Define the specific area of testing that will be automated and determine its extent. During this step, assess the current state of your team, prepare the necessary test data, and set up the testing environment. Automated testing minimizes the need for human intervention, allowing tests to run even when the team is not actively engaged.
Consider the following factors when determining the scope of your automation testing:
- Complexity of the test: Evaluate the complexity of the tests to decide which ones are suitable for automation.
- Main testing goals: Identify the primary objectives of your testing efforts to prioritize automation accordingly.
- Resources and business components: Consider the availability of resources, both in terms of tools and personnel, as well as the business components involved in the testing process.
- Technical feasibility: Assess the technical feasibility of automating the specific tests, considering factors such as system architecture, compatibility, and dependencies.
By carefully establishing the scope of automation, you can focus your efforts on the most critical areas and optimize the efficiency of your testing process.
The planning stage involves the development of a comprehensive testing strategy. This encompasses the selection and utilization of the automation test tool, framework design, and defining its features. Clear goals should be established to determine the desired outcomes of the testing process. Collaborating with the development team, a detailed timeline should be created for scripting and executing test cases. The scope of automation, including in-scope and out-of-scope elements, must also be considered.
The execution stage represents a pivotal phase in the automation testing process. With the test tool and strategy in place, tests are executed. Depending on the chosen test, developers may need to write code, familiarize themselves with Web Services Description Language (WSDL), and utilize the tool's API or user interface for automated test execution. Prior to test execution, API testing may be necessary. Automated tests generate reports that provide a summary of the testing progress, enabling analysis and comparison for future tests.
Ongoing maintenance is an integral part of the automation testing process, especially if future tests are planned using reusable test scripts. Even with prepared scripts, updates may be required to align with any changes to the automation test tool. Ensuring the scripts remain up to date is essential for subsequent test runs.
Ongoing maintenance also provides reassurance as the team makes their way to the next stage, or backtracks to run another test. When a method has been repeatedly tried and tested, you’re more likely to be provided with an accurate outcome.
Test automation tooling
When embarking on unit testing frameworks, a team should familiarize themselves with the framework's characteristics, runners, assertions, screen capture capabilities, test suites, and its integration with continuous integration (CI). Prominent unit testing frameworks include JUnit for Java and Pytest for Python.
Adhering to established testing protocols is of paramount importance in the technology industry, particularly in the context of continuous delivery (CD) and continuous testing (CT). DevOps and agile software development teams often incorporate CD and CT into their testing strategies.
Automation possesses the potential to revolutionize business operations. It is an opportune moment to embrace new technologies and acquire methodologies that enhance workplace productivity and efficiency. Do not hesitate to experiment with various tools to identify the most suitable one. Each business and the software or products being developed are unique, warranting a tailored approach
If you require assistance with your quality assurance (QA) strategy, we invite you to schedule a call with one of our Quality Consultants for a complimentary consultation.
Popular test automation tools and software
Global App Testing is agnostic about the best tools and software for automation testing. But the following tools are popular and we know are used by clients:
Selenium: Selenium is one of the most widely used open-source test automation frameworks for web applications. It provides a suite of tools for automating web browsers across different platforms and supports various programming languages like Java, C#, Python, and more. Selenium WebDriver is particularly popular for browser automation, while Selenium Grid allows for parallel test execution.
Appium: Appium is an open-source automation tool specifically designed for mobile app testing. It allows you to write and execute tests for Android, iOS, and Windows apps using popular programming languages such as Java, C#, Ruby, and Python. Appium supports both native and hybrid mobile applications, offering cross-platform compatibility.
JUnit: JUnit is a widely used unit testing framework for Java applications. It provides a simple and elegant way to write repeatable tests and has extensive community support. JUnit facilitates test automation at the unit level, ensuring that individual units of code work as expected.
TestNG: TestNG is another popular testing framework for Java applications, offering more advanced features than JUnit. It supports various types of testing, including unit, functional, and integration tests. TestNG provides powerful annotations, test configuration, parallel test execution, and advanced reporting capabilities.
Jenkins: Jenkins is a leading open-source automation server that facilitates continuous integration and delivery (CI/CD) processes. It provides extensive automation capabilities for building, testing, and deploying software projects. Jenkins allows you to automate test execution, generate test reports, and integrate with other tools in your software development pipeline.
Apache JMeter: Apache JMeter is an open-source tool designed for load testing and performance measurement of web applications. It can simulate heavy user loads and analyze the performance of web servers, databases, and other resources. JMeter supports distributed testing, allowing you to scale tests across multiple machines.