Continuous Testing in DevOps…

I’ve recently attended a number of conferences, some testing ones, some agile ones and some dev ones too. Although some of the talks were painful due to misunderstandings of one thing or another (be it testing, automation, agile, BDD, TDD, etc…), overall, I thought the conferences were pretty good and I met some new people too and got to share some stories with them.

One thing I heard a fair amount was about DevOps. Many people were talking about it. It’s a big topic! But too many people seemed hugely confused about where testing fits in this wonderful world of DevOps. Some suggested that you only need automation in DevOps, but when asked to explain, their arguments fell floppily by the waist-side. Some people blatently refused to guess at how they’d try and implement testing in DevOps.
And one person even said that no testing was required at all, as he pointed to a DevOps model on a slide, which had no mention of testing on it whatsoever.

Here’s my hand-drawn attempt at replicating that model:

model-1

It transpired that this model was presented quite a lot throughout the conferences (or extremely similar ones were presented) and you can see why people struggle to understand where testing fits in a model that doesn’t mention it at all.

For me, testing fits at each and every single point in this model. Let me break this down for you in an updated version of that model to show you what I mean:

model-2

We can test the plan. If, in this devops world, plan comes to mean design, then we can test the design. Testing the design of the software is exploratory in nature. It can still be risk based, as we use the risks as heuristics to focus our investigation. Our ideas that we explore through questions will help us incover more information. Information that will help us refactor the design (or plan) to make it better!

We can test a branch (not a physical branch on a tree, although I’m sure that would make an interesting testing challenge for someone…). We can test individual development branches, or we could test our branching strategies. See all the conversations that you have about your branching strategy, and you ask questions and investigate ideas and refactor your strategies… That’s testing.

And of course we can investigate our code! We can also check our code too against any expectations that were discussed as part of our planning! Code reviews – exploratory testing to investigate for mistakes and to see if the code is written is a really great way or to investigate if there is a better way… Unit checks – awesome automated checks at code level to ensure that an expectation is met by the code… And if you are a developer writing some code, then you can even pair up with the tester who will share some really cool test ideas about different risks, different interactions, different perspectives, different variables and different combinations of all these things to help you right there while you code the software! (Yey!! How cool!!)

Merges need to be tested and checked too! Watch out for the hidden risks of different integrations (and different levels of integrations), and also watch out for merge clashes too!

We can certainly test the build too! Why not test your build process and enhance it?
On top of that, Why not spin up an env and do some exploratory testing of the product too? ET is the most effective approach to testing and helps us see a perceived level of quality.

When it comes to the release, we can certainly test that process too. And we can test our deployment (on a test env & on production too). Some people like to do “sanity” or “smoke” testing and checking. Explore your heart out! Just make sure that your testing (or your test data) isn’t disruptive to the users.

And once its live, no doubt that your users will see the shiny fields and buttons and will be clicking away to appease their curiosity of solving the “what if I do this…” mysteries that live inside us all.

And finally, here comes the monitoring… But in no way is it least by being last. Monitoring is powerful in supplying us information on what we tell it to look for. And that’s where we can test it! Are we telling it to look at the right things? What should it be looking for to automatically send us those informative little bundles of information? Lets explore these ideas! And lets keep an eye out for that information and investigate what its telling us too.

But what is missing in the diagram…? I can’t help but feel there is something missing…..
Oh yeah! It’s so obvious now! We can’t start planning unless we have the idea, right??

The model doesn’t mention all that work that happens before that planning bit. Here’s an explosive fluffy-clouded gif to help explain my thinking on this:

starts-with-an-idea

Testing the idea is something that some people completely miss the boat with… Just like the model did. Testing the idea is vital; investigating to uncover information, refactoring the idea to enhance and solidify it. It allows us to stem lots of different artifacts and we can test those artifacts them to refactor them too. And we can then use those artifacts to stem all of the activities that we conduct, from; designing and planning, development, testing and checking… And those activities produce lots of useful outputs too – Quality software for one!

So hopefully this blog post has been entertaining and has enabled us to take one step further forward in helping to solve that puzzle of where testing fits within the world of DevOps.

 

 

71 thoughts on “Continuous Testing in DevOps…

  1. great blog blog post here is the summary of the post

    The author of the blog post attended several conferences and noticed that many people were confused about where testing fits in the world of DevOps. Some argued that automation is the only testing needed in DevOps, while others completely disregarded testing altogether. The author disagrees and believes that testing is essential at every stage of the DevOps process.

    The author breaks down the model presented at the conferences and explains how testing fits into each part:

    1. Testing the plan/design: Testing can be applied to the planning phase, treating the plan as a design. This includes exploratory testing to uncover risks and improve the plan through refactoring.

    2. Testing the branch: Testing can be performed on individual development branches or on branching strategies. Conversations, questions, investigations, and refactoring of branching

    The author notes that the diagram is missing an important component: the initial idea. Testing the idea is vital, as it allows for investigation, information discovery, and idea refinement. This leads to the creation of artifacts that can be tested and used throughout the DevOps process, resulting in quality software.

    Overall, the author believes that testing plays a crucial role at every stage of DevOps, from idea conception to monitoring and beyond.

    Like

Please leave a comment!