Automated Testing in CI/CD - A Continuous Integration Server Integration Primer

Posted May 1st, 2021

The following is an overview of the most popular CI servers and how they integrate with the Sauce Labs Continuous Testing Cloud.

Historically, the process for making software available for testing was relatively slow and cumbersome. Code would be compiled and built (often as infrequently as weekly or longer). If we were lucky and had a good programming team, unit tests would be written and run. An environment for the code to live on would need to be provisioned (this too could take days if there were hiccups) and then we could start our End-to-End tests.

With the advent of distributed version control like Git and processes like Continuous Integration and Continuous Delivery, what used to take days, if not weeks, can now be done in the span of time it takes to go grab a coffee. 

There are a number of different tools for automating CI/CD processes. Most importantly are the CI tools that allow development teams to build and integrate software with a rapid turn-around time. 

Even with a cursory bit of research, it becomes clear that you can’t achieve true CI/CD without automated testing.  Testing is the cornerstone of CI/CD - from Unit Tests to automated acceptance tests to end-to-end testing. As your testing grows, you'll probably want to Leverage CI/CD for Complex Tests as well. 

As QA and development teams work together to build reliable and scalable test automation, it is also crucial that these teams’ systems for testing are fully integrated into their CI server. This article provides an overview of the most popular CI servers in the market and how they integrate with the Sauce Labs Continuous Testing Cloud.

Jenkins CI Tool

Jenkins is the most popular CI tool on the market today. It is a free and open-source tool with a strong community following and broad adoption across companies of all sizes. To help you easily integrate your test execution into your Jenkins pipeline, Sauce Labs developed the Sauce Jenkins Plugin. While it isn’t necessary to integrate the two systems via this plugin as one could build it one’s self, there are several helpful tools integrated into this plugin:

  1. It provides a user interface that lets you populate environment variables on the Jenkins server that can be used in your tests (for example, platform configurations or your Sauce username and access key).

  2. The plugin does the setting of environment variables.
    It automatically launches Sauce Connect when you enable it for a project.

  3. It handles reporting between Jenkins and Sauce.

Atlassian Bamboo Server

Bamboo helps your team with continuous integration, deployment and delivery by providing tools that tie your automated builds, tests and releases together in a single workflow. Using the Sauce Labs plugin for Bamboo, you can easily configure projects to run tests on Sauce’s Continuous Testing Cloud, manage environment variables, enable Sauce Connect Proxy, and provide test result files. All of this can be done directly from Bamboo, making your workflows simpler and allowing you to focus on releasing better quality software faster.

TeamCity

TeamCity is a general-purpose CI/CD solution that focuses on build management and Continuous Integration. TeamCity has great .NET support and supports a number of different Version Control Systems, so if you are using something other than Git, TeamCity has you covered. The overall functionality is easy to understand and the out-of-the-box setup is reasonably straightforward. 

Travis CI

Travis CI is a hosted distributed Continuous Integration system. It has a simplified configuration through the use of a YAML file (so no installation is needed). This makes for much greater ease of setup and configuration. Additionally, Travis CI’s integration with GitHub is excellent.

Circle CI

CircleCI is a Continuous Integration solution that is gaining in popularity. With both hosted and on-premises options, this tool provides a fair amount of flexibility as well. It has a simple elegant UI and offers an excellent debugging feature. While extremely robust for Linux and mobile environments, support for Windows has historically been secondary.

Azure DevOps 

Finally, there is  Azure DevOps for CI/CD. While not specifically a CI solution, Azure DevOps is certainly capable of handling CI/CD tasks. This is Microsoft's foray into building an all-in-one solution for development, deployment and release activities. These tools certainly make sense if you are a "Microsoft Shop," and Azure DevOps makes a solid effort at covering all of the bases.  

Getting Started with Continuous Integration

Details on how to get started with any of these plugins can be found on the page.

Once you have decided on the right CI server for your team, this will help guide you through the integration process.

 


Written by

Rob Bowyer


Topics

DevOpsAgile DevelopmentCI/CDAutomated testingOpen source