{"id":338,"date":"2021-10-07T23:08:00","date_gmt":"2021-10-07T23:08:00","guid":{"rendered":"http:\/\/rainforestqa.com\/automated-testing-strategy\/"},"modified":"2026-03-03T17:41:12","modified_gmt":"2026-03-03T17:41:12","slug":"automated-testing-strategy","status":"publish","type":"post","link":"https:\/\/www.rainforestqa.com\/blog\/automated-testing-strategy","title":{"rendered":"A practical guide to automated testing strategy"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">An automated testing strategy answers the who, what, when, why, and how of software test automation.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">While automation can be used for many kinds of software testing, in this post, we\u2019re going to focus on the steps you should take when developing a strategy for functional UI testing (also known as end-to-end testing).&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>End-to-end testing simulates real user conditions to test the functionality of an application from the front-end user interface.&nbsp;<\/em><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Whether you\u2019re just getting started with test automation or you already have a few automated scripts in your testing suite, defining your test automation strategy will help you <a href=\"https:\/\/www.rainforestqa.com\/blog\/automation-test-coverage\" target=\"_blank\" rel=\"noopener\">improve test coverage<\/a> and get faster, more consistent test results.&nbsp;<\/p>\n\n\n\n<div id=\"ez-toc-container\" class=\"ez-toc-v2_0_85 counter-hierarchy ez-toc-counter ez-toc-custom ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title\" style=\"cursor:inherit\">Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\"><span class=\"ez-toc-js-icon-con\"><span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/span><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/www.rainforestqa.com\/blog\/automated-testing-strategy\/#Steps_to_creating_an_automated_testing_strategy\" >Steps to creating an automated testing strategy<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/www.rainforestqa.com\/blog\/automated-testing-strategy\/#Additional_benefits_that_come_with_using_Rainforest_QA_automated_testing\" >Additional benefits that come with using Rainforest QA automated testing<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/www.rainforestqa.com\/blog\/automated-testing-strategy\/#Put_Your_Automated_Testing_Strategy_to_Use_with_Rainforest_QA\" >Put Your Automated Testing Strategy to Use with Rainforest QA<\/a><\/li><\/ul><\/nav><\/div>\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Steps_to_creating_an_automated_testing_strategy\"><\/span>Steps to creating an automated testing strategy<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this post, we\u2019ll cover why each of the following steps is important and how to implement each one:&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong><a href=\"#define-your-goals\">Define Your Goals<\/a>:<\/strong> Find a balance between product quality and release speed.<br>\u200d<\/li>\n\n\n\n<li><strong><a href=\"#assign-testing-responsibilities\">Assign Testing Responsibilities<\/a>:<\/strong> Ensure testing gets done and stays up-to-date.<br>\u200d<\/li>\n\n\n\n<li><strong><a href=\"#decide-tests\">Decide What Tests to Automate<\/a>:<\/strong> Plan out which features you\u2019ll test and with what methodology.<br>\u200d<\/li>\n\n\n\n<li><strong><a href=\"#functional-testing\">Decide When to Do Functional Testing<\/a>:<\/strong> Ensure it\u2019s happening often enough during the development lifecycle to meet your goals.<br>\u200d<strong>\u200d<\/strong><\/li>\n\n\n\n<li><strong><a href=\"#choose-tool\">Choose a Test Automation Tool<\/a>:<\/strong> Understand which tool best fits your needs.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\"><em>Once you\u2019ve created your automation test strategy, <a href=\"https:\/\/www.rainforestqa.com\/talk-to-sales\">talk to us<\/a> about quickly and easily creating an automated test suite with no code using Rainforest.<\/em><\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"define-your-goals\">#1. Define your goals<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Quality assurance is always a balancing act between release speed and test coverage. It\u2019s impossible to catch every single bug during the testing process, and trying to do so would grind your release process to a halt. It\u2019s better to think of QA as an exercise in risk mitigation: How can you reduce the risk of releasing software with major bugs that could impact your bottom line or reputation?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Each company has a different tolerance for bugs based on a variety of factors, including the industry, the expectations of the users, and the competitiveness of their market segment.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In some industries, minor bugs might be so damaging to a company\u2019s reputation that it\u2019s worth delaying releases by several weeks in order to thoroughly test everything. In other settings, it\u2019s&nbsp; much more important to get a requested feature into customers\u2019 hands by a certain deadline, even if it means the feature comes out with a few minor bugs.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Your company\u2019s goals for quality and speed of release will impact your automated testing strategy in a variety of ways because they will determine how much time, money, and human resources you\u2019re willing to invest into testing up-front.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Answering the following questions will help you determine the right balance between quality and speed for your organization:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>How many bugs can your customers tolerate before losing patience with your product?<\/li>\n\n\n\n<li>How much more does it cost to fix bugs after release versus finding them before release?&nbsp;<\/li>\n\n\n\n<li>What kinds of bugs are completely unacceptable to your customers, and which ones are just a nuisance?&nbsp;<\/li>\n\n\n\n<li>How fast do you need to be able to release software updates to meet customer demands?<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"assign-testing-responsibilities\">#2. Assign Testing Responsibilities<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Automated testing isn\u2019t a set-it-and-forget-it exercise. Successful test automation requires an ongoing commitment to writing test scripts, running and interpreting the results, and maintaining the test suite.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If no one is explicitly in charge of each of the duties related to automated testing, the test suite can easily become stale and unusable.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To make sure your test suite stays up-to-date, all of the responsibilities related to test automation need to be clearly assigned.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Typically, development teams will set up and run automated unit tests and integration tests as part of their software development processes. But for functional testing, there are a variety of ways to organize responsibilities, especially if you\u2019re using an <a href=\"https:\/\/www.rainforestqa.com\/features\/test-automation\" target=\"_blank\" rel=\"noopener\">accessible automated testing tool<\/a> like Rainforest QA that doesn\u2019t require programming skills to use.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In that case, you can have a mix of responsibilities. Perhaps the developers write the functional tests after they finish writing a feature and run them as part of their release process, but a QA testing team interprets the results and takes care of <a href=\"https:\/\/www.rainforestqa.com\/blog\/test-automation-maintenance\" target=\"_blank\" rel=\"noopener\">ongoing test maintenance<\/a>. Or perhaps the QA specialist writes and maintains the tests, but the developer is the one to actually run them and interpret the results.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In most cases, having developers stay more involved in testing will help testing move faster. But since every minute a developer spends on testing is a minute not spent building new features or fixing bugs, many teams try to shift a lot of the duties to QA specialists.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Regardless of your testing approach, testing responsibilities need to be clearly defined and understood by everyone involved so your automation suite stays up-to-date.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"decide-tests\">#3. Decide What Tests to Automate<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For most web applications, it\u2019s not practical or feasible to test every single user path through an app. And not all user paths make sense to test with automation. Some types of tests are always better candidates for manual testing.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To figure out which features to test, you first need to create a map of all of your app\u2019s user paths, ranked by priority. This map will also help you <a href=\"https:\/\/www.rainforestqa.com\/blog\/how-to-write-a-test-plan\/\" target=\"_blank\" rel=\"noopener\">create a test plan<\/a> after you\u2019ve worked out your strategy.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Here is a sample functionality map for an early version of the Slack web app:&nbsp;<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/uploads-ssl.webflow.com\/60da68c37e5767dfb65004c0\/615f54a58a98108d0c63c035_slack-web-app-functional-map-and-test-plan.png\" alt=\"Slack Web App - Functionality Map and Test Plan\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">In general, you should prioritize your testing efforts around the most important user paths to make sure they are working properly. We like to use the <a href=\"https:\/\/www.rainforestqa.com\/blog\/automation-test-coverage\" target=\"_blank\" rel=\"noopener\">analogy of a snow plow<\/a> clearing a city\u2019s streets after a snowstorm. The streets that see the most traffic get cleared first, and some of the side streets may never get cleared because so few people travel on them.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once you know what user paths to test, you need to decide which tests are best suited for automated vs. manual testing. We\u2019ll share a few general rules here, but <a href=\"https:\/\/www.rainforestqa.com\/blog\/manual-vs-automated-testing\" target=\"_blank\" rel=\"noopener\">we go into detail about Manual vs. Automated Testing in this article.<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.rainforestqa.com\/blog\/2017-07-10-when-is-a-test-case-ready-for-test-automation\" target=\"_blank\" rel=\"noopener\">Test cases are ready for automation<\/a> when they don&#8217;t change very often and get run frequently, such as smoke tests or regression tests.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong><em>Smoke tests: <\/em><\/strong><em>Tests that run through the most essential user paths to make sure the application is stable enough to move on to further testing.<\/em><\/p>\n<\/blockquote>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p class=\"wp-block-paragraph\"><strong><em>Regression tests:<\/em><\/strong><em> Tests that check the original features of the application to make sure that the latest changes or updates haven\u2019t broken anything.<\/em><\/p>\n<\/blockquote>\n\n\n\n<p class=\"wp-block-paragraph\">Use manual testers for tests you only run once (such as exploratory tests), tests where the software \u2014 and therefore the data set \u2014 changes between each run, or tests that require human interpretation (e.g. if the feature includes a CAPTCHA).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"functional-testing\">#4. Decide when to do functional testing<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">When you\u2019re developing your automation process, you need to decide how often each kind of test should be run and what kind of changes merit running your full test suite.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The ideal solution is to run your entire functional test suite after every product change, no matter how small. To do this, you need to have a highly optimized automated test suite. Using a tool like Rainforest QA to create and run your tests can make this feasible by making testing fast and affordable.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Even though it might seem like overkill for small changes, running your full test suite after every change has two major benefits:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>It gives an incentive to everyone on your team to keep the test suite running as efficiently as possible.&nbsp;<\/li>\n\n\n\n<li>It\u2019s the simplest option, with no possibility of confusion. No one has to remember which kinds of changes go with which set of tests.<\/li>\n<\/ol>\n\n\n\n<p class=\"wp-block-paragraph\">However, this may not be feasible for your organization. In that case, you may need to bundle changes together before running your functional test suite, or even divide your test suite into groups of tests that need to be run for different kinds of changes.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">(In the Rainforest platform, you can <a href=\"https:\/\/help.rainforestqa.com\/docs\/organizing-tests-by-run-group\" target=\"_blank\" rel=\"noopener\">create Run Groups<\/a> containing different sets of tests so you can easily run subsets of your entire test suite.)&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Keep it as simple as you can \u2014 if you\u2019re not careful, you can end up with a complicated list of conditional criteria for different kinds of changes. If a change falls in a gray area where it\u2019s unclear if it meets the criteria for running the full test suite or not, we recommend running the full suite.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"choose-tool\">#5. Choose an automated testing tool<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">There are many different automated testing tools available, including open source tools and no-code tools. Choosing the right tool will impact:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Who can create and maintain tests.<\/li>\n\n\n\n<li>How quickly new features can be released.<\/li>\n\n\n\n<li>What functionalities you\u2019re able to test.<\/li>\n\n\n\n<li>How much it costs to run your functional test suite.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Whether you\u2019re using an open-source testing framework like <a rel=\"noopener\" href=\"https:\/\/www.rainforestqa.com\/blog\/selenium-alternatives\/\" target=\"_blank\">Selenium<\/a> or a tool that generates code for you, all test automation frameworks (except Rainforest QA) test the underlying code of an application. Testing the underlying code means you\u2019ll eventually run into one of the following problems:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You\u2019ll need a (high-salaried) software engineer to create tests, maintain tests or understand test failures.<\/li>\n\n\n\n<li>You\u2019ll experience a bottleneck effect in your release pipeline because maintaining tests is time-consuming.<\/li>\n\n\n\n<li>You won\u2019t be able to test actions outside of the browser or test the actual user interface.&nbsp;<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Rainforest QA is the only <a href=\"https:\/\/www.rainforestqa.com\/blog\/web-application-automated-testing-tools\" target=\"_blank\" rel=\"noreferrer noopener\">automated software testing tool for web apps<\/a> that doesn\u2019t test the underlying code. Instead, Rainforest uses pixel-matching to simulate a real user interacting with the visual layer of the app. Anyone can create, maintain, and run automated tests with Rainforest\u2019s no-code user-friendly interface.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Additional_benefits_that_come_with_using_Rainforest_QA_automated_testing\"><\/span>Additional benefits that come with using Rainforest QA automated testing<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">Test Automation That Doesn\u2019t Break with Minor, Behind-the-Scenes Code Changes<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Because Rainforest tests the visual layer of the application, its automated test scripts are less susceptible to breaking due to minor code changes that don\u2019t affect the UI \u2014 unlike tools that test the underlying code.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Let\u2019s say you you work at Notion and want to test whether your <strong>\u201cGet Notion free\u201d<\/strong> button is working after you\u2019ve made some other changes to your web application. In Rainforest, you\u2019d create a test that includes a step to click on the \u201cGet Notion free\u201d button. You\u2019d tell the test where to click by click-and-dragging a selection box around the button.&nbsp;<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"960\" height=\"600\" src=\"https:\/\/www.rainforestqa.com\/blog\/wp-content\/uploads\/2023\/03\/add-a-step-click-a-button-notion-1.gif\" alt=\"Adding a step in Rainforest QA\" class=\"wp-image-1146\"\/><figcaption class=\"wp-element-caption\">Adding a test step in Rainforest QA<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">When you run the test, Rainforest\u2019s automation will look all over the page for pixels that match your image selection. If those pixels exist anywhere on the page, the test will find them and will be able to keep going, even if the underlying code changed.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In contrast, if you were using Selenium to test this button, you could run into a variety of situations where the test could fail even though the UI was flawless.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, if the CSS class of the button changed from &#8220;try for free button&#8221; to &#8220;tryforfreebtn2,&#8221; a Selenium test could break, but a Rainforest test would not as long as the pixels of the button on the page did not change.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A Rainforest test would fail only if the actual visual appearance of the button changed. For example, if the button was accidentally hidden due to a bug in a recent code push, the test would <em>(and should) <\/em>fail.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">To be fair, Rainforest QA tests are not totally immune from \u201cfalse positives\u201d \u2014 or, test failures for which there\u2019s no actual bug \u2014 in that a minor UI change, such as a button slightly changing shape, may break a test. But most Rainforest users find that test maintenance is less of a headache than with app testing tools like Selenium because:<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>You can optionally use text matching to avoid test failures when you know the UI of a visual element is likely to change, and<\/li>\n\n\n\n<li>Anyone can quickly update tests in the visual editor without having to involve an engineer or write any code.<\/li>\n<\/ol>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/uploads-ssl.webflow.com\/60da68c37e5767dfb65004c0\/615b56d30c6bebf7a3d39734_allow-text-matching.png\" alt=\"Allow Text Matching: When no exact visual match is found, it will match by comparing the text content of the elements in the page.\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">An all-in-one UI test automation solution<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rainforest QA is an all-in-one UI test automation solution, which means it has built-in tools to allow users to create, run, and manage any number of automated tests all at once, meaning you don\u2019t need to pay for things like a cloud-based testing grid, project management tools, and team collaboration tools just to manage your automation efforts.&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\"><strong>Rainforest QA plans include:&nbsp;<\/strong><\/h4>\n\n\n\n<ul class=\"wp-block-list\">\n<li>A built-in \u201ctest grid\u201d featuring more than 40 web browsers and operating systems running on virtual machines in our cloud, allowing you to test applications against a wide variety of platforms.<\/li>\n\n\n\n<li>Text execution in parallel. No matter how many test cases you run at a time, they\u2019ll run simultaneously, getting you fast results.<\/li>\n\n\n\n<li><a href=\"https:\/\/www.rainforestqa.com\/test-automation-services\">Test automation services<\/a> (optional). Provide a text or video description of the tests you\u2019d like to run, and any data sets that go with them, and our QA professionals will create passing tests in Rainforest for you.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">With Rainforest QA, you can run as many tests as you want, in parallel. You can scale testing up or down as needed, without having to make an expensive upgrade to any of your testing infrastructure tools.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Fix Broken Tests Fast with Video Playback<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rainforest automatically records a video of every test it runs (whether the test passes or fails). When a test fails, you can review the video to identify exactly where it failed. This can dramatically speed up the process of reviewing and classifying test failures because it makes it much easier to understand why a test failed.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/uploads-ssl.webflow.com\/60da68c37e5767dfb65004c0\/6112e9550057195cfa3a1321_rainforest-signup-flow.png\" alt=\"Rainforest Signup Flow: Element Mismatch, Test Failed\"\/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Test Actions Outside of the Browser&nbsp;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Because Rainforest tests run on virtual machines (including Windows, macOS, mobile devices), you can design tests that leave the browser and go into other apps.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For example, <a href=\"https:\/\/www.youtube.com\/watch?v=0-vHwl6vNAw\" target=\"_blank\" rel=\"noopener\">here\u2019s a video walkthrough<\/a> of creating a test that saves a file to the desktop from one location, then uploads the file to Google Drive. If you ever need to validate downloads or test file uploads, this is a really useful feature.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">A Built-in Library of Data<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Rainforest has a built-in library full of auto-generated test data, including random emails, passwords, addresses, virtual credit cards, and more. Plus, with virtual email inboxes, you can test emails.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Integrate into Your CI\/CD Pipeline via Our API or CLI<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Testing can quickly become a bottleneck unless it\u2019s integrated into your CI\/CD pipeline. Rainforest QA offers plugins to integrate with various tools, including CircleCI, so that developers can kick off a suite of Rainforest tests at the same time as their unit tests and integration tests.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">You can also download our CLI and run Rainforest tests in any development environment. For custom workflows and more complex data analysis, our open source API makes it possible to integrate Rainforest into any software stack. With a fully-automated CI\/CD pipeline, it\u2019s much easier to achieve your team\u2019s test coverage goals without slowing down development in an agile environment.&nbsp;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span class=\"ez-toc-section\" id=\"Put_Your_Automated_Testing_Strategy_to_Use_with_Rainforest_QA\"><\/span>Put Your Automated Testing Strategy to Use with Rainforest QA<span class=\"ez-toc-section-end\"><\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Rainforest is a scalable, all-in-one quality assurance solution that\u2019s appropriate for small teams just getting started with an automated testing strategy or QA-mature teams regularly running 500+ quality software tests.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.rainforestqa.com\/talk-to-sales\">Talk to us<\/a> about setting up a Rainforest plan that fits your needs.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Follow these 5 steps to create an automated testing strategy that answers the who, what, when, why, and how of software test automation.<\/p>\n","protected":false},"author":13,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"content-type":"","inline_featured_image":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-338","post","type-post","status-publish","format-standard","hentry","category-test-automation"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/posts\/338","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/users\/13"}],"replies":[{"embeddable":true,"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/comments?post=338"}],"version-history":[{"count":22,"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/posts\/338\/revisions"}],"predecessor-version":[{"id":3470,"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/posts\/338\/revisions\/3470"}],"wp:attachment":[{"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/media?parent=338"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/categories?post=338"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.rainforestqa.com\/blog\/wp-json\/wp\/v2\/tags?post=338"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}