Truly Becoming Agile by Piping in Automation Testing

DZone 's Guide to

Truly Becoming Agile by Piping in Automation Testing

Automation testing is the unlikely key to a great Agile implementation.

· DevOps Zone ·
Free Resource


Automation testing is essential to good Agile practices.

If you have worked in the technology industry during the last few decades, you have heard the term "Agile" more times than you can count.

Agile, DevOps–the industry tosses these buzzwords around like free candy. But how can companies become agile in today’s technology sector?

The answer might surprise you: testing.

You may also enjoy:  Why Automation Testing Is Important In Agile Development

Ok ok, we have to admit: that statement is a bit misleading. Not all testing is going to kick CI/CD into overdrive.

But automation testing will.

Think about it. Global competition creates low tolerance for defects and high expectations for new features

Challenges Without Automation Testing

Without automation, testing bottlenecks become a problem at the end of the SDLC (software development lifecycle).

But automation addresses many testing challenges. For example, automation can mitigate low team bandwidth, small team size, long regression cycles, limited test coverage, narrow automation focus, and more.

By spreading testing throughout the delivery cycle, companies increase the efficiency of their teams AND keep continuous delivery in motion.

Better convinced by the numbers? Check out these stats from our latest ebook, 3, 2, 1…Liftoff! How Continuous Testing Launches Continuous Delivery into Orbit.

CT Implementation benefits

CT Implementation benefits

What Tests Should We Automate? 

A lot of teams tend to focus on automating UI (user interface) tests. It makes sense, your customers directly interact with your UI.

But, automating UI tests is not enough to enable agile software development. These tests are time-consuming, flakier, and harder to maintain. Bottom line, only automating UI tests won’t improve time to market.

That said, let’s look at both N-Tier and microservices architectures. Check out these images.

Microservices and N-Teir architecture

Microservices and N-Teir architecture

Segment size matters–and you want to distribute automation focus accordingly.

For N-Tier platforms, focus on unit tests, followed by component tests, integration, and so on.

Another way to develop your automation strategy is with Liza Crispin’s Agile Test Quadrants. In the image below, you can see where different tests fall within these quadrants.

By understanding the effects of automating different tests, you can weave automation throughout the software development lifecycle (SDLC).

Agile Test Quadrants

Agile Test Quadrants

Setting Up Automated Testing 

Once you know which tests to automate, you can begin automation set up.

  1. Create logical test suites.
  2. Select and choose what tests suites are needed.
  3. Configure automation tools with CI/CD server
  4. Trigger and run tests
  5. Report and analyze results

Tools to Automate Testing Throughout the CI/CD Pipeline

With automation strategy in hand–let’s look at the tools that keep this automation machine moving. 

Automation tools

Automation tools

By weaving automation throughout the CI/CD Pipeline, you can truly become agile. Better still, you can reap the benefits: 

  • Faster iteration
  • Wider coverage
  • More confidence
  • More bandwidth for testers to do actual testing! 

This information was originally presented as part of Agile Day Atlanta 2019. To dive a little deeper, we wanted to share some of the top questions and answers from the event. 

Agile Day Atlanta – Questions and Answers

How Do I Make My Less Technical Testers Use Automation? 

In agile organizations, testers are going to need to learn a little bit of coding. There is no way around it. But there is a way for your testers to easily learn necessary code. By using tools like Katalon, testers can manually perform tests and use the outputted script to begin to understand the code.

While these tools are great, your testers will need to be diligent and openminded to learn automation.

But, its a win-win for your testers. You will always need manual testing, but automation can tackle the repetitive (*cough* boring)  stuff.

Think of it this way, I hate mowing the lawn. If I can find a way to automate that process so I can sit on my deck and drink a beer instead…of course, I’m going to do it.

What Makes for Effective Reporting? 

Reporting has to be insightful. Having reports that are just pass/fail is not going to cut it.

When building your strategy, look for tools that tell you exactly where there is a bug and give you actionable results.

Should We Automate All of Our Tests?

No, you should not automate everything in your CI/CD pipeline.

You can’t run a full regression every time a build kicks off. That would take forever…and defeats the point of agile development and faster time to market.

Instead, sit down when you are sprint planning to understand what user stories are being used. Based on those user stories, you can pick and choose tests suites that pertain to those areas.

When Is the Best Time to Automate?

Ideally, automate your tests as soon as possible. Don’t wait until something is fully functional to test.

Start with the APIs. If you test your APIs and they fail…what is the point to move on to the next phase of development? 

With automation tools like  making API testing fast and easy…it’s silly to not tackle these tests ASAP. If your API doesn’t work, your UI won’t either. So don’t waste your time waiting to test.

So, is your organization truly agile? 

Further Reading

6 Important Guidelines for Test Automation in Agile

A Guide to Test Automation Types, Tools, and Benefits

Top 10 Most Popular Software Testing Tools

agile fails ,agile transformation ,automated testing ,automation ,automation testing tools ,continuous delivery ,continuous testing ,devops ,test automation ,test automation framework

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}