Does Testing Fit into DevOps?

I personally think the answer to my title question is an obvious “yes.” But I do see a lot of discussions about how the DevOps movement and/or culture has “killed” testing or has removed the need for testers. Let’s talk about that.

Developers have to understand a lot of complexity about the environment they will be shipping software into. Similarly, production operation teams need to increasingly understand the internals of the software they ship.

The quality aspect is right there! It’s front and center. And one of the ways we determine the presence or absence of quality attributes is via testing. So, of course, testing fits into a DevOps context.

Wider Testing Focus

That said, to see this does require seeing testing as a mediating mechanism. And to see that, you must see testing as a design activity. And when you do — when you truly see testing as a design activity at all levels — do you start to open up your options.

So testing, as a function, needs to be pushing information into the developers and product proactively. This is as opposed to reactively having those teams pull information from testing. The reason for this is because if teams are pulling from testing, it means they are likely looking for nothing but test reports about execution. That’s testing as an execution activity, not a design activity.

If those teams are getting pushed from testing, that means testing is informing, guiding, and encoding their decisions. That means testing is putting pressure on design at various points, such as when we talk about what to build and then when we build it. That’s testing as a design activity.

In modern software environments, testing does this with the minimum of artifacts and tooling, relying instead on the dynamic collaboration and communication of teams who share in the development process.

Wider Developer Focus

This is why testers should probably become developers.

And that’s also why we, collectively, need to focus on delivery.

A Delivery Focus

What matters is that all members of the development team work with the delivery and customer teams to understand what the customers need to be successful. Focusing on finding the simplest solutions that provide the right amount of value, consistent with or knowledge of what that value actually is. Everyone on the team is responsible for turning the functionality requested by the customer into software that provides value.

And part of that focus on delivery, particularly if that delivery is more rapid, requires testing.

A Sustainable Delivery Focus

Software development is ultimately about change. We want to get those changes into production — to users — in a sustainable way.

Software can always be changed. That’s not the trick. The trick is to do it safely and at a reasonable cost. Generally our goal is to deliver more value with less waste in less time and with greater opportunity. “Waste” here refers to churn and rework. “Opportunity” here refers to opportunity costs.

Okay, so let’s ask this powerful question: Can those changes be given to users are soon as they are implemented? That’s a key question our industry is grappling with.

Let’s ask another powerful question: Could quality still be achieved if development was done directly on production?

If so, how? If not, what’s the minimum that has to be done to achieve confidence in quality?

Those discussions are interesting ones to have in any context, but particularly in a DevOps context. I say these are interesting because what always comes up when taking these questions to different logical conclusions is that there is some minimum amount of this thing we call testing that has to be done.

So, yes, testing fits into DevOps. In fact, it’s integral to it.

A Revised Focus on Done

And this let’s us also have better conversations about what “done” means. Being extremely simplistic here, DevOps in a nutshell allows us to combine definitions of “done.” Traditionally — but also simplistically — we can say the following held true:

  • For developers: “done” means that requirements are implemented in code.
  • For testers: “done” means that the code is tested.
  • For operations: “done” means that the code is released.

Now, however, everyone operates off of the same “done”: when the product is in the hands of customers, providing value to them and allowing for feedback.

And this is where we tend to get into discussions about “being continuous.”

A Continuous Focus

To be able to deliver continuously, first you have to define “continuously.” And probably whatever definition is used will mandate that automation is required. And it is. Automation is a way to leverage the most important asset in this chain: the human. We use automation as a tool to support testing.

Whether the automation is doing testing is largely irrelevant in the context of the above more important discussions. To me, automation is doing testing as an execution activity; it is doing a limited subset of the testing execution that we know we can entrust to tooling.

But there’s still a whole lot that we can’t entrust to tooling. There’s still a whole lot of human that has to go on as well.

So, yes, testing does fit into DevOps. In fact, it’s impossible to have effective DevOps without testing, of both the human and machine variety.

Share

This article was written by Jeff Nyman

Anything I put here is an approximation of the truth. You're getting a particular view of myself ... and it's the view I'm choosing to present to you. If you've never met me before in person, please realize I'm not the same in person as I am in writing. That's because I can only put part of myself down into words. If you have met me before in person then I'd ask you to consider that the view you've formed that way and the view you come to by reading what I say here may, in fact, both be true. I'd advise that you not automatically discard either viewpoint when they conflict or accept either as truth when they agree.

Leave a Reply

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.