Continuous Testing: Best Practices in DevOps

Posted by Amy E. Reichert

DevOps teams rely on continuous testing practices to deliver quality application releases on time and on budget. Frequent releases mean application code needs to be tested during all phases of the SDLC in order to meet the deadline. Continuous testing (CT) identifies defects early and often while coding is in process. Continuous testing provides the rapid testing required to reduce business risk and ensure a positive customer experience with every release.

The role of CT in a DevOps team

On most DevOps teams, testing is not the sole domain of a software tester because the whole team’s focus is on rapid deployment of the app. While testing may not be a DevOps team’s primary focus, it is a crucial component of the CI/CD process and delivering a quality application to customers. CT ensures all critical testing occurs continuously. In this way, the OnPath team maintains a quality CI/CD pipeline and high-quality application builds. 

DevOps teams don’t stop testing at release. Instead, testing on production by monitoring issues from customer reporting and tracking log is ongoing. Our teams are continuously monitoring quality in production. OnPath uses strong root cause analysis and troubleshooting skills during both development and post-release to ensure quality. 

OnPath’s success with continuous testing relies on test automation and collaborative communication. We use CT alongside exploratory manual testing as needed. Every team member needs to understand which testing approach to use depending on where in the SDLC timeline they are testing.  

Best practices for CT in a DevOps team

At OnPath, our teams deliver with speed and quality by balancing testing and development using the following best practices, including:

  • Creating levels of testing 

Continuous testing involves creating levels of testing based on the stage of development. Each level may involve different testing techniques or processes. Our team aims to ensure application quality without impacting deployment or production. It’s a lofty goal no doubt, but achievable with a solid CT strategy that depends on collaboration using levels or a layered approach to testing. 

  • Developing or adopting a test framework

Our development strategy for CT uses a test automation framework and strategy. Most of our tests are fully automated, but we all know how and when to use manual testing options when needed. Everyone on our team understands the importance of each, and the importance of doing what we can to ensure quality remains high. 

  • Building once and testing repeatedly

Our teams believe in leveraging both manual and automated testing to test during any development stage.  Keep the CT strategy in mind when creating tests, and communicate or ask questions when necessary. Quality testing starts with building an efficient and valid suite of tests. Our teams support efficient CI/CD pipelines by creating build artifacts once. For example, we reuse containers for ongoing testing and deployment rather than starting from scratch every time.

  • Creating and following a road map

OnPath testing teams seek to improve processes both for quality and deployment speed. We follow a road map that is updated regularly to guide our development direction and keep us on track to meet our goals. 

  • Defining specific goals for the CI/CD pipeline

During planning, engineers define goals for the CI/CD pipeline, including metrics, deployment plans, development processes, and CT.  Goals inform the tools and practices that best support achieving each goal. 

  • Choosing tools that support team priorities

Select the tools that support the team’s CI/CD pipeline, deployment, and CT strategy. Tools are an economical way to support a DevOps pipeline without having to write custom code and create systems from scratch. OnPath teams only use tools that integrate and provide templates for creating a CI/CD pipeline without building and supporting custom coding. 

  • Using the pipeline to build and support team collaboration

For OnPath, test automation is not a one-and-done process. It takes time to perfect and adjust. Continuous deployment, integration, and delivery are challenging at the start. Successful CT requires collaboration between developers, testers, and all other team members. Quality increases when team members share responsibility for quality within the CI/CD process. 

  • Designing a CI/CD pipeline to fail fast

Test engineers design OnPath pipelines to fail quickly when defects are found. As we develop test cases, we group all application-critical functional tests into a specific smoke test suite.  Often referred to as “smoke” or “sanity” tests, these test suites are typically executed during development and when a build is created. Frequent smoke test execution helps teams identify defects faster and when they are easier to fix. 

  • Think small 

DevOps’s main strength comes from its inherent flexibility and focus on making small, incremental changes. OnPath testing teams strive to make small changes for every release. Each code commit triggers a new build and kicks off a series of automated unit tests. We then merge all successful tests into the smoke test suite if necessary. We also like writing our test automation with only one or two verification points. The smaller the script, the easier the maintenance, and the less prone scripts are to break. 

Best practices for CT in DevOps teams include team communication, collaboration, and shared responsibility for quality deployments. Continuous testing helps DevOps teams achieve application quality while focusing on deployment quality and frequency. Rapid deployment does not mean poor application quality when CT is planned and pursued as a shared team goal.  OnPath teams maximize project quality while delivering rapid deployments that satisfy customers by following best practices. OnPath can help provide DevOps teams and CT. Reach out if you want help to get teams up and running with CT.