Test Automation 101: How and Why to Automate Testing
Is automation needed on every software testing project? How can you plan and set up an automation project for the best benefit? And why can automation projects fail?
Join the DZone community and get the full member experience.
Join For FreeThe software industry regularly witnesses the emergence of new trends, technologies, and approaches. And while not all of them are here to stay, some are not going anywhere. Automation testing definitely belongs to the latter group: having been known since the 1970s, automation in testing has only gotten more common and more powerful.
But is automation needed on every software testing project? How to plan and set up an automation project to benefit from it the most? And why can automation projects fail? These are just some of the questions we’ll answer in today’s longread.
What Is Automation Testing?
Let’s start with the basics: what automation actually is and what its place in the modern software quality assurance landscape is. Automation testing is a software testing technique that allows organizations to automate a large chunk of tests. These tests are traditionally done manually but require a lot of time and can be challenging for the tester because of their repetitive nature.
Automation testing is carried out with the help of an automation framework, test scripts, and tools that can execute tests according to a specific schedule. They can also record the results, notify the team when a certain condition is triggered, and offer detailed feedback that helps improve the process and the outcomes of the test execution process.
While automated QA is by no means a new trend, it is steadily going up in terms of adoption among organizations of all sizes. One study estimates that most companies automate only up to 49% of their tests, but an increasing number of companies (32.2%) would like to be able to automate up to 75% of tests. The job market is also witnessing an increased need for experienced automation QA engineers, which means the industry is currently on the rise and we will continue to see the growing prevalence of automation testing in the quality assurance process.
Automation Testing vs. Test Automation
Many sources use the terms “automation testing” and “test automation” interchangeably. But do they really mean the same thing, or do they have different meanings and different uses? Let’s take a closer look at both concepts to find out once and for all.
Automation testing is the process of setting up software tests to run independently over a certain period of time, as opposed to manual testing, where the tester needs to execute each test individually when needed.
Test automation is the process of automating all software testing-related tasks across the organization, which typically go way beyond automation testing.
Therefore, test automation is a much broader term. Test automation is an integral part of the continuous testing approach, which helps teams test software faster and with more precision. This, in turn, results in better-quality software and faster release cycles. Test automation usually includes automation testing, but the two terms are definitely not synonyms, although using both techniques gives an organization more opportunities for improving its software development process.
Popular Types of Automated Testing
According to seasoned automation professionals, it is not only impossible but also impractical to automate everything. Automation is a valuable investment that should be only applied to where it’s needed the most. But when and where does automated testing make the most sense? These are the most common and in-demand ways to use automation testing:
- Functional testing. This type of testing is pretty self-explanatory: automated functional testing aims to make sure that all functional elements of the application are working as intended and that the application fulfills its business goals.
- Regression testing. Regression testing, which is performed to check the state of the application after any update to the source code, is one of the most common testing types to be automated because it’s also the most repetitive and monotonous type of testing.
- Performance testing. Users have come to expect spotless performance from a software product even in challenging environments, and that’s exactly what performance testing deals with — it tests the operation, speed, and responsiveness of the app by simulating various real-life conditions.
- Security testing. An automated test suite for testing applications that deal with user data must always include security testing. Automating this type of testing helps increase the coverage, take into account even the most unlikely scenarios, and achieve stronger outcomes.
- API testing. With more and more software products relying on APIs to enhance their functionality and offer more useful features to their users, API testing automation becomes a vital tool for checking the operation of APIs on their own and as part of a larger solution.
- UI testing. UI testing has a lot in common with functional testing, as both deal with the business side of the application and how the end user interacts with the product. However, user interface testing pays more attention to the individual UI elements.
- Unit and integration testing. Unit testing and integration testing are not simply types of testing, but represent testing levels. Automated unit testing checks each unit of the application separately, and integration testing exists to test them as a comprehensive software solution.
Does Your Organization Need Automation Testing?
For several years, QA automation has been lauded as a universal solution for all quality assurance-related challenges. This made it easy to think that automation can be used on every project regardless of the scale, purposes, type of application, or specific challenges faced by the product owners. Of course, that is rarely the case, and not every development cycle will benefit from automation. Here is when your testing solution definitely needs automation:
- Some manual tests are impossible or difficult to run manually, while skipping them will result in skewered results of testing or an incomplete testing project.
- The test suite contains many repetitive tests, such as regression testing, which not only take too much time, but also lower the job satisfaction of manual QAs who are stuck doing monotonous tasks.
- There are high-risk cases that often fail, and recreating them manually every time takes too much time from the team.
- You frequently need to do intense performance or security testing, testing different conditions and scenarios that can be hard to include completely with manual testing.
- You need to run parallel testing on multiple devices at the same time — for example, when testing the compatibility of the solution across different devices or platforms.
- You are sure the quality of the software will improve dramatically — starting an automation project usually requires a lot of time from the team members and stakeholders, so it should make sense quality-wise.
- You’ve made the calculations and found that automation will save you money in the long run — the initial setup requires significant financial investment, so expensive automation may not make sense for small projects or projects on a tight budget.
Benefits of Automation Testing
Adopting automated testing is a huge endeavor for an organization that is usually associated with high costs, extended preparation time, and the need to hire additional personnel or outsource the project partially or in full to an offshore vendor. Still, more and more companies choose to automate their testing — this can be confirmed by the growing market size of automation or by the increased hiring needs of software companies. So, why do organizations want to automate testing in the first place? These are the biggest benefits of automation.
1. Faster Release Cycle
In a time when there are multiple competitors in every field, companies are often racing against the clock to release new or updated software products faster and win their share of the market and improve customer loyalty. And many report testing as the biggest bottleneck preventing them from achieving a quicker release cycle. This is where automation comes into play: by running tests around the clock and with little to no human input, companies can get a better idea of their product’s quality faster.
2. Saves Money in the Long Run
Let’s not sugarcoat it: setting up an automation testing project from scratch costs money. This includes the money you pay for advanced testing tools, the money needed to hire new specialists, and so on. However, by reducing your dependency on manual testing, automation can help you scale down your manual QA department, saving money in the long run. The opportunity to speed up the release cycle and increase revenue by serving your customers better is also a big financial advantage of automation.
3. Better Test Coverage and Accuracy
By saving time spent on testing each individual aspect of the application manually, automation allows teams to dramatically expand testing coverage. With a well-tuned automation testing process, the entire application can be repeatedly tested in a matter of minutes — or hours, in case of a particularly large application. And, by removing the probability of a human error from the equation, automation improves the accuracy of the whole testing process.
4. All-Around Platform Compatibility
With over 4.6 billion smartphone users in the world and hundreds of smartphone makes and models, ensuring compatibility on all mobile devices is a challenge on its own, not to mention that there is also a vast range of desktop computers, laptops, tablets, wearables, and smart TVs that all run software. Device and browser automation is one of the areas where the automated testing approach shines, allowing development and testing teams to get a complete picture of the product’s performance on countless hardware and software combinations.
5. Improved Team Productivity
Manual testers often have to deal with repetitive, monotonous tasks. You cannot do without them in manual QA, but if you ask a manual tester whether they enjoy those repetitive tasks, they will probably say that they don’t. Automation, on the other hand, can take over these monotonous, time-consuming tasks such as regression testing. As a result, the team will get time to spend on more interesting tasks or training to become better at testing. This, in turn, will drastically improve the team morale.
6. Higher Test Reusability
With manual testing, each test you create can only be used until the software solution itself undergoes a change. This creates many additional tedious tasks for the team and slows down the quality assurance process. Automation testing can use the same scripts over and over even if there are code changes in the solution that is being tested. Test reusability saves a lot of valuable time for testing and development teams, allowing them to focus on other pertinent tasks.
7. Comprehensive Reporting
Automated testing produces a lot of valuable test data that is automatically generated and exported into detailed test reports. This allows teams to review the results of every testing endeavor down to the smallest detail, as well as go back to earlier reports and see how they compare to new ones. Manual testing can also produce reports, but they are simply not at the same level as automation testing reports and don’t always prove valuable for future testing.
8. Higher Testing ROI
The question of ROI in testing automation has always been a polarizing one. Some say that automating testing from the ground up takes too many resources, while others believe that automation always pays off in the end. There are various formulas for calculating the ROI of automated testing and different approaches to understanding the importance of ROI. However, if we refer to one of the key principles of testing — Boehm’s law — we’ll see that the cost of fixing the bug grows with time. And since automation helps discover bugs earlier in the development cycle, the cost of spotting and fixing a bug becomes lower.
Limitations and Drawbacks of Automated Testing
Testing automation is often viewed as a universal solution for many QA-related problems, from minimizing testing time to increasing the efficiency of testing. However, automation is not without its drawbacks, and they should be considered along with the benefits when you’re still deciding whether your software project needs automation. These are the key disadvantages and limitations of automation testing.
1. Automation Takes Time and Money
One of the most common concerns stakeholders have about automation is that it requires more time and money than many presume. For many small projects or startups that operate on a limited budget, automation can become an investment that doesn’t translate into profit. This is why it’s important to evaluate the company’s resources before the start of the project, so that the project budget doesn’t break the bank.
2. Test Case Constraints
Automation testing is only as effective and all-encompassing as the test suite it’s based on. Failure to create a comprehensive test suite will result in automation delivering incomplete results and giving the stakeholders a false sense of security. And turning every valuable issue into a test case, again, takes time — which, especially at the beginning of the project, not every organization can afford.
3. Narrow Perspective
As much as testing automation can do, it still cannot cover every single aspect of software quality assurance. Specifically, automated testing won’t prove very useful when it comes to testing at the early stages of the software development project when the core functionality is still being developed, as well as many areas of GUI testing and software aspects that require subjective validation. Automation is also not suited for exploratory testing, which is an essential component of software quality assurance.
4. Continuous Code Maintenance
Even with the most seasoned automation QA engineers and the best-developed automated test cases, automation is not a one-and-done endeavor. Software evolves on a regular basis, which means that test cases should also be reviewed and updated every time a code change takes place. This means that automation testing requires time and effort even outside of the immediate testing process.
5. “Black and White” Results
With rare exceptions, an automated test can pass or fail. This gives the QA engineer an idea of what the application behaves like in specific conditions and with a specific input. However, an experienced QA can extract much more information from a test than just the “failed” or “passed” parameter. From an unusually long processing time to other unexpected behavior displayed by the app under normal conditions, there are some things that only the human eye will catch.
Can You Automate 100% of the Testing Process and Eliminate Manual Testing?
With so many benefits and few drawbacks, automation is often paraded as a technique that has unlimited uses in the software quality assurance process. Automation QAs and other project stakeholders often begin feeling the pressure of automating as much as possible and eliminating the company’s dependency on manual testing. So, is it possible to achieve 100% automation and get rid of manual testing completely?
If we understand 100% automation as 100% of test cases being automated, then it can be possible to achieve 100% automation, provided that all manual test cases are suitable for being automated. However, aiming for complete automation is never advisable. There are still areas in a software application where the human eye is absolutely critical. These include not only the traditional aspects of QA where manual testing is widely used, such as exploratory and UX testing, but also things like security, penetration, and load testing, which often provide false positives or negatives when being automated and require manual testing to complete the job.
For the absolute majority of software development projects, a proper balance between manual and automation testing is the way to go. The exact ratio of manual to automated testing is never a constant value — it’s something an experienced QA Lead can figure out to achieve the highest possible automation ROI while bringing a positive change to the application’s quality.
Can a Low-Code Test Automation Tool Replace Traditional Automation?
Over the past few years, the software industry has been witnessing a trend of low-code and no-code QA automation tools emerging as a way to increase the efficiency and speed up the automation testing process. However, some view low-code tools not just as an enhancement to the traditional automated software testing techniques, but also as an alternative that can potentially replace software test automation processes we use today. So, can we expect low-code and no-code automation testing tools to take over traditional automation techniques?
The general consensus among automation testing engineers is that while low-code and codeless testing platforms can be very helpful for specific test runs, a mature automation project cannot survive on the record and playback feature alone. As of right now, the functionality of low-code and no-code tools is limited, so they can be viewed as an additional way to enhance the testing cycle, not replace code-based automation completely.
Who Can Do Test Automation?
The people involved in the testing process have the most immediate impact on the success of the whole endeavor. But when you are only about to give automation testing a try and don’t have a complete automation QA department yet, the question of who will actually handle the entire scope of automation testing is a perfectly natural question to have. Overall, there are three options for launching an automation testing project:
- Development team
- Manual QA team
- In-house or outsourced automation team
There are many different opinions on which option is most suitable for automation. Most experts would agree that creating an in-house automation department is the preferred option. However, it often faces certain obstacles: namely, large time and financial investments, as well as the lack of specialists of the desired level on the local hiring market. In that case, outsourcing some or all of the development and testing needs to a reliable testing partner can be the most effective solution. It’s also a good idea to study the best practices of creating an automation QA team, both for in-house hiring or outsourcing.
As for the choice between in-house developers and manual testers to get involved with automation — there is no universal answer to this debate. However, many automation QAs believe that manual QAs provide better test results with automation because they are conditioned to look for bugs and imperfections in software, whereas a former developer wants to build software that passes the tests rather than discover as many bugs as possible. Therefore, manual QAs usually turn out to be more meticulous and efficient automation QAs. At the end of the day, a close collaboration between development and testing teams is what leads to the most compelling outcomes of automation.
Test Automation Strategy: What It Is and How to Create One
A test automation strategy is one of the most important documents within a testing automation project. It’s a high-level document that outlines the approach the QA team will use to automate a testing project. The strategy not only allows to allocate resources the right way and apply them where they matter the most, but also helps better understand and process the results of the project, gaining valuable ideas and insights to be used on the next projects. A strategy also increases the ROI of automation since it makes sure that the resources don’t go to waste and that all critical areas of the product are tested.
A test strategy should not be confused with a test plan: the latter is a more detailed document that focuses on the smallest elements of the testing project, while a strategy is more about the big picture. A thorough, well-written strategy touches upon the most vital aspects of an automation project, including:
- Project scope
- Project goals
- Testing environment
- Team size and composition
- Project duration
- Project milestones
- Tools and frameworks
- Possible risks and mitigation strategies
Creating an automation strategy is one of the most vital steps on the way to a successful project launch. Here is how to create a strategy that works perfectly for your next automation project:
- Determine the scope of the project and its goals. In other words, decide what you want to achieve with the project and any intermittent goals you want to meet.
- Define your team size and structure. It is possible to start an automation project with just one Automation QA Engineer, but if you go for that option, the engineer should be experienced enough to work without a Lead.
- Gather project requirements: specifically, whether there has been any work done prior to the new project and where the project stands right now. It’s also important to assemble all the available documentation.
- Identify the possible risks and decide how the team is going to mitigate them. For example, one of the common risks is the lack of qualified personnel, and the way to mitigate it is to correctly estimate the resources needed for the project.
- Select test cases that need to be automated based on the positive impact their potential automation will have on the overall project.
- Choose the right tools and framework for your project. Check out the next section of our article to find out how to make tool and framework choices that will eventually pay off.
- Set up the testing environment. This includes preparing the software (and, in some cases, the hardware), creating a testing schedule, and appointing the person responsible for overseeing the execution.
- Write automation scripts. The most effective strategy here is to write simple, single-purpose tests and only combine them if necessary to avoid creating overly complex scripts.
- Run the tests and monitor the results. At this point, you will launch automated test scripts and review their outcomes. This is where a good reporting system will come in handy.
- Maintain the test suite. This is the part of the project that cannot be overlooked — otherwise, the test suite can deprecate pretty fast and you’ll need to invest additional resources into reviving it.
For more information on what an automation testing strategy is, what it should include, and how to create a good one, take a look at our recent article on automated testing strategy creation.
How to Choose the Right Automation Testing Tool and Framework
Statistics indicate that 26% of organizations struggle with finding the right tool to enhance their automation capabilities. Different tools are created for different types of automation testing purposes. Tools can also be paid and open-source, which further complicates decision-making for companies operating on a strict budget.
Finally, there is always the option to create a custom automation tool to reap more potential benefits of automation, although this option is associated with high costs, advanced team skills, and delaying the project start to allow the tool to be developed. So, how exactly do you make the right choice from dozens of various tools available today? Here are a few things you need to consider:
- Project objectives. Here you need to decide what exactly you are trying to automate and what the desired project outcomes are.
- Capabilities and limitations of a specific tool. Specifically, the right automation tool should support the necessary programming languages and testing types, as well as hardware and software characteristics.
- Project budget. It’s very rare that an entire automation project can be run using only open-source automation tools. And paid tools can cost from a few dollars per month to a few thousand for a lifetime license.
- Learning curve. This is where you need to match your team’s expertise to the ease of use offered by the tool. In some cases, training the team to use a new tool takes more time than finding a more familiar tool.
- Community and support. Official customer support provided by the tool’s developers is always nice to have, but an active community can give you even more valuable tips and ideas.
- Coding skills. Despite the growth of low-code and no-code tools, they cannot fully replace code-based solutions. However, the amount of coding skills required to get a project running can vary greatly.
- Reporting. The very reason why you are launching a QA automation project is to ensure the application’s spotless functionality, performance, and security, so timely and detailed reports are a must-have feature.
It’s also worth noting that the automation testing tool also has its own trends and popularity ranks. Tools like Selenium Webdriver and Ranorex Studio are familiar even to those without a lot of automation experience. So, when choosing the perfect tool for your next project, you can not only go through an extensive selection process, but also review the tools that are currently in active use across organizations globally. Here are the 15 popular automation tools you can consider.
Why Can an Automation Testing Project Fail?
A test automation failure is the last thing you want to think about when embarking on an automated software testing journey. However, many conditions are required for automation to be successful, and that is why no project is immune to failure. In fact, by one estimate, 64% of automation projects fail to deliver on the stakeholders’ expectations.
Of course, there are different ways to define failure in an automation testing environment: for some organizations, a failure would be a project that does not meet the expectations quality-wise, while others consider a project to fail when it exceeds the anticipated time and financial investments. Still, automated testing projects often fail for the same set of reasons, and here are the most common ones.
1. Desire to Automate Everything
We’ve mentioned before that automating 100% of tests is not only unrealistic but also simply unnecessary. However, some companies planning an automation project for the first time often fall into the trap of wanting to automate everything in a limited time. As a result, the company spreads its resources too thin, causing the testing team to pay less attention to the most vital areas of the project and letting those promising areas go to waste.
2. Shunning Manual Testing
One of the key takeaways we want you to have from our article is that right now, it’s impossible to completely remove manual testing from the formula of software quality assurance. Rather, testing automation should be viewed as a way to save time on repetitive tasks and use that time for manual testing activities that rely on the human experience. Therefore, ignoring manual testing will eventually lead to the entire QA project failing to deliver any valuable results.
3. Disconnect Between Management and Technical Specialists
A comprehensive test automation project is impossible without the management and technical teams being on the same page in terms of goals and how to get there. When the management simply expects an automation project to work and doesn’t really care what it takes, while the testing team doesn’t feel like their ideas and input are valued, the resulting testing outcomes will likely not satisfy anyone.
4. Wrong Choice of Automation Software Tools
Test automation frameworks and tools have a paramount effect on the success of the project, and while the right tools can dramatically improve testing outcomes, a wrong choice of tools will thwart everyone’s performance. This also includes the desire of some organizations to pick only open-source tools because they are free — not every open-source tool can do the job or integrate with other tools, especially on complex projects.
Best Practices of Automation Testing
Launching an automated testing project requires a lot of effort from all participants, and that includes not only the steps needed to set up the project, but also following the industry’s best practices to achieve maximum efficiency and ROI. Here are the main automation best practices to follow.
1. Prioritize the Tests
As we’ve mentioned earlier, an attempt to automate everything will hardly ever pay off. Plus, companies usually don’t have unlimited resources to spend on automation. This is why it’s important to prioritize test cases to avoid excessive spending of valuable resources. Specifically, some of the most important tests to automate include:
- Tests dealing with core app functionality
- Tests that are particularly prone to human error
- Tests that need to be run on a variety of platforms
- Tests that incorporate multiple software builds
- Tests that require a lot of repetitive action
- Tests that use vast amounts of data
2. Strive for Clarity
The lack of clarity is what can sink even a successful automation project. This is especially common for tests that often produce false positive results or are otherwise inconsistent. The resulting absence of clear feedback forces the automation team to continue spending time on tests that don’t do anything for the success of the project. To achieve full clarity, the entire team should participate in regular reviews of the test suite and remove or update ones with inconsistent results.
3. Use Physical Devices for Testing
When your goal is to test on as many device and platform combinations as possible, it can be very tempting to use simulators and emulators instead of physical devices to save money. And the accessibility and diversity of device emulators have come a long way in recent years. However, they are not yet capable of simulating real life conditions to the fullest extent, so you may never get a complete idea of how a regular user interacts with the product. Testing on real devices still cannot be beat.
4. Don’t Underestimate the Reports
At times, especially on a mature automation testing project where a certain quality benchmark has already been achieved, reviewing the reports may start to feel like a redundant task. However, detailed reports are invaluable for any test automation project. They allow teams to see when and where a software failure took place, what triggered it, how the rest of the application reacted, and so on. When a testing tool also comes with a screenshotting feature, the quality of the reports further increases.
5. Use High-Quality Test Data
The rule of thumb for using data in automation testing is simple: before adding test data into the system, make sure it’s of the right quality. This is especially vital for data-driven testing, which largely relies on the quality of data to provide reliable results. The test data you use must not only be accurate, but also contain exceptions and data that will deliberately trigger errors in the application and therefore allow you to test it from all angles.
Bottom Line: Do You Need Automated QA?
By no means should automation be viewed as the universal solution to all software quality-related issues. For small, short-term projects operating on a tight budget, automation poses a threat of having to invest too many resources and still not getting a reliable outcome. However, it’s almost a given that any mid-sized or large, long-term testing project will benefit from automation.
Published at DZone with permission of Inna Martyniuk. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments