Micro Focus is now part of OpenText. Learn more >

You are here

You are here

5 tips for streamlining test automations into CI pipelines

public://pictures/leandromelendez.jpg
Leandro Melendez Manager of Performance Testing, Qualitest
 

Many organizations struggle to integrate automated testing into their continuous integration (CI) pipelines—and it's no wonder. Just attempting to implement a successful CI presents challenges.

Test automation integration just adds another tier of complexity to those efforts. The challenges test automation engineers face include deciding on the right CI and test automation tools, flawed testing processes, and more.

Here are my recommendations to help you identify some of your challenges and streamline your test automations. These tips will help you to successfully integrate test automations into your CI pipelines while avoiding common mistakes and implementation processes that can be detrimental to pipeline flow.

1. Establish efficient triggering mechanisms

The key to successfully integrating a test automation tool into your CI is to have an efficient triggering or invoking mechanism. In other words, you need a straightforward way to initiate your test automations.

Many test automation tools only let you use command-line instructions to initialize your automations, and some tools lack even this basic functionality, instead forcing you to open the tool’s UI to initiate the test process. That is a critical flaw when integrating your test automations into a CI tool.

Select tools for test automation and CI that support initiation or triggering functions through an API. Service requests are efficient and are the preferred way to invoke most functions from a CI tool (and vice versa). This avoids the need for special plugins or intricate mechanisms to trigger your automated tests.

The CI tool you use should include this functionality as well. Fortunately, pretty much all tools have robust service APIs to trigger internal CI processes, and they even allow you to create new ones. APIs enable automated tests that can initiate any process needed in the CI tool once an automated test finishes or that can trigger any other needed CI functionality while your test automations execute.

2. Establish communication channels

Be sure that your test automations have the means to communicate (send and receive information, not just triggering) with your CI tool and vice versa—especially over test results and test status updates. The CI tool processes will require those results and status.

Communication mechanisms vary, from direct responses to the automation’s triggering command to test automation result repositories accessible by the CI tool. But whatever mechanism you choose must be aimed at the automatic interchange of information between both your CI tool, and your automation tool.

The duration of execution for your automated test will determine whether the results and responses get sent back. If the execution does not last long, the test automation can send the results back to the CI tool command as a response right away. But if it lasts too long, the automation can notify the CI tool once the test execution finishes so that it can access and review the results. Or the test automation can leave the results in the repository without notification, leaving the results available for whenever the CI tool may need them.

Similarly, the test automation tool should support data and parameters reception from the CI tool using the same mechanisms mentioned above. The data and parameters sent should enable flexible test automations that run different variations of the test if needed.

3. Automate responses to test results

One downside to having test results is that your teams must manually review and follow up with them. Even with dashboards, teams commonly drown in dashboards from test results in addition to all of the alerts, notifications, messaging, and overflowing indicators they receive from the automated tests.

All those results generally require human intervention, which is why you must enable communication between your CI and your test automation tool. The CI tool must automate any response to the test results—what used to be manual tasks. And testing teams must define an automatic response to the output in the pipeline after receiving the expected test results.

The most common reactions are to:

  • Continue the pipeline flow if the results contain no defects

  • Stop, rollback, analyze, or notify the designated owner if an unwanted outcome is delivered

Your goal should be to release your team from babysitting the test results and free them from worrying about what the test results might be next time around. The goal is to make reactions to the test results as transparent as possible whenever a test process triggers in the pipeline. Unless an outstanding event appears, your CI tool should quietly manage the relevant test result actions or notify the person who needs to take action based on those test results.

4. Stick to the automation pyramid

Follow the test automation pyramid principles when you integrate test automations into your CI processes. Integrating automated tests that ignore those principles will severely impair your ability to streamline your CI.

Successful endeavors to implement an efficient CI pipeline depend on pipeline processes that are as fast, efficient, and maintainable as possible. These are all attributes that following the automation pyramid enables:

  • Have wide test-automation coverage of unit and code-level tests. These are fastest and cheapest.

  • Then have slightly narrower test coverage of automations in the service and API tiers. These are still quick and cost-effective.

  • Finally, have considerably smaller coverage of only the most critical front-end and UI automations, since these are slower and more complex.

  • Leave manual tests out of any CI process automated flow.

Do this and your automated tests will execute as fast as possible when triggered and won't slow down your CI pipeline. They will also be faster and easier to create, maintain and integrate into the CI pipeline. This makes it crucial to enable team members to access any test resource.

5. Share automated tests with the entire team

Speaking of enablement, your entire team, from the developers to product owners, must be able to access your test automations. Teams require a centralized location to create, update, and invoke automated tests. Access and working capacity are essential to keep up the fast and frictionless flow of those tests in your pipelines.

Creating and updating test automations is a common source of slowness that can be a show-stopper that cripples what otherwise would be a fast workflow. By having a centralized location for test automations, developers, test specialists, and other team members can collaborate to create and maintain your test automations. In the end, non-testers might be the source of a requirement for a new test or a test update, and they may be the best ones to perform any required update arising from those tests.

Tasks such as create, upload, update, versioning, tracking, and maintenance require ease of access to your automated tests, plus you need to be able to gather and work with those automations. The automating tool and automation repository should be accessible so that all team members can access them and work with the current versions without the need for complicated processes, tools, or blocks. Everyone must be able to work with the automations transparently.

Finally, your centralized repository for test automations should be programmatically accessible from your CI tool. In this way, if your CI tool requires automation, it can access or retrieve those automated tests. It can invoke and trigger the automations, or download the automations to execute them locally. Finally, your CI tool should be able to apply changes or update automations as needed.

Embrace test automation in your CI

Enabling test automations in your CI pipelines is crucial, and your teams can streamline them by applying the best practices and principles described above. Doing so guarantees that your automated tests won’t create slowdowns, choppiness — or complete show stoppers. Use these five tips to implement successful test automations into your CI environments and you'll avoid common errors and problems that commonly occur.

Want to learn more about this topic? Come to my talk, “Automating the Automatic Automation,” at the Automation Guild 2021 online conference, where I’ll review the importance of streamlining your test automations into your CI environment and the reasons behind these tips and best practices. The conference runs February 8-10.

Keep learning

Read more articles about: App Dev & TestingTesting