As organizations look to implement or expand their DevOps activities, test automation is a key tool to consider in improving your pipeline and process. 

Maybe automation is something your organization has looked at but isn’t necessarily sold on? 

In a new on-demand webinar, Coveros CEO Jeff Payne points to the Google Cloud/DORA State of DevOps Report which found that organizations with high DevOps maturity overwhelmingly agree that automation improves the quality of their work and that their team has automated most repetitive tasks. In other words: Test automation can help enhance your DevOps efficiency.

Despite the benefits, many organizations face key challenges in implementing test automation in their DevOps culture and processes. Jeff identifies three of the biggest challenges and provides solutions for overcoming them.

Challenge #1: Tests take too long for a specific stage.

As an agile and DevOps consultant and coach, one of the biggest complaints Jeff hears is that tests take too long in a specific stage or phase of the DevOps process: whether that’s check-in builds, the continuous integration process, QA, staging, or others. Many organizations are not getting the feedback they need fast enough to effectively make key changes due to a lack of efficient test checkpoints along the process. 

Key solutions to this challenge:

  • Parallelize your tests. While this is easiest to do in cloud environments, virtualization allows you to parallelize tests in a data center or lab if you have access to the equipment. Parallelizing your tests will help your tests run faster. 
  • Perform the right tests for the stage you are in. Are you actually running the right test for the right stage? Organizations often don’t run the right test in the right place or misname their tests, Jeff says. Perhaps you’re doing “unit tests” and they are taking too long. In fact, you may be doing integration tests but calling them the wrong thing. Always ensure you’re doing the right test in the right place. 
  • Tease testing activities apart and shift them. One way to smooth out your testing is by pulling testing activities apart and moving them into other phases. You may decide to do parts of your tests earlier, others later, and some during the specific stage you are pinpointing.

Challenge #2: Testers don’t have experience with automation. 

Many organizations have made automation a priority, but don’t have testers on their team who are experienced in automation. Jeff says one thing organizations should absolutely NOT do is fire their current testers and ask developers to implement test automation. Instead, there are some key actions you can take to better equip your testers and expand the skills of your team.

Key solutions to this challenge:

  • Retrain your testing staff. Teach your testers how to properly implement automation. 
  • Hire and integrate SDETs on your teams. Software Developer Engineers in Test, or SDETs, are people with software development experience who are passionate about testing and test automation. Adding SDETs to your team to work with your current testers may be a good way to automate testing as you go. 

Challenge #3: Not shifting left for non-functionals.

When we talk about non-functionals, we mean requirements that apply to your entire application like security, performance, reliability, availability, and usability. Jeff says these non-functionals are often late-lifecycle hurdles to getting change into production quickly. But, there are ways to move testing of non-functionals left or earlier in the development process.

Key solutions to this challenge:

  • Crack off portions of non-functionals that don’t rely on production-like environments and move them left. Payne highlights two examples where this is possible. First, you can do performance analysis of code to determine if code is getting faster or slower all the way back in your development environment. Another opportunity is with security. You can perform dynamic web security testing in the development environment rather than waiting until the end of the process.
  • Make all environments productions-like using VMs or containers. As we continue to move towards the cloud, we can, in theory, move anything we stand up for our production environment and apply it to other phases like Dev, Build, and QA. Once everything looks like production, Jeff says, you can run testing for non-functionals whenever it makes sense for you.
  • Run automated tools in lower environments. In some cases, you can use testing tools that your teams are going to run late in the lifecycle and apply them to your non-functionals earlier. Share these results to help build trust with your teams and build reliability in your results.

Want to see real-world examples of these approaches? Watch the full presentation where Jeff shares his experience in implementing these solutions.

Leave a comment

Your email address will not be published. Required fields are marked *