DevOps Testing for Modern Software and Teams
The world of development always moves forward to greater efficiency and gains, with fresh solutions like DevOps taking center stage thanks to their flexibility and speed.
Now that Waterfall and Agile are firmly entrenched in the developers’ minds, the industry asked, “What’s next?” The answer, it turns out, is DevOps. Using the latest in automation capabilities, adapting to continuous customer demands, and powerful computing and cloud backends have led developers and designers to create programs whose versions flow uninterrupted into each other.
There’s no more waiting for the next huge round of features when your platform is SaaS. Instead, it’s a constant stream of improvements and changes that lead to a better user experience when done right. The heart of that mighty new methodology is DevOps, a way of thinking and working that always has your team moving forward, while sales basks in recurring licensed revenues.
What Is DevOps?
DevOps is a movement designed to bridge the development and operation arms of a company. The goal is to reduce risks and mistakes in software deployment.
Prior to a DevOps focus, one group of programmers would develop and build a program. Then, sysadmins on the operations side would be responsible for distributing the software and delivering it to customers. Initially, DevOps encouraged programmers to work in both of these groups to facilitate a smoother delivery.
It has since gone through a few iterations and changes, but some core elements are common across today’s DevOps teams. Now, DevOps is a company’s organizational habits and practices that enforce a culture of collaboration and communication between software developers and the other IT teams needed to deliver and maintain software.
At the heart of DevOps is a culture designed to rapidly build, test, release, and update software. DevOps practices allow companies to continuously release products or updates, helping them keep up with growing SaaS demands.
DevOps and Agile Development
It’s important to think about Agile development techniques when thinking of DevOps and DevOps test management. Agile and DevOps often work together with Agile giving guidance into how a package or software will be developed, while DevOps provides direction for the communication between teams.
Agile methodology generally encourages companies to make smaller software packages or break up features and updates for a more continual release, instead of long waits between new versions. DevOps facilitates this by presenting a framework for Agile teams to work with others and ensure every update is easy to implement and properly works with past iterations.
Think of DevOps as a way to bridge every Agile development group or sprint — it can be time-consuming but helps a company provide better products.
Software Testing in DevOps Prioritizes Automation
DevOps creates a substantial change in the testing mindset for most companies because it generally involves smaller-scale testing more often. Compared to traditional development, DevOps workflows also shift a lot of testing to the developers themselves. The shift means the effort is more centralized, but it also means more work for your developers.
The larger workload is one reason many DevOps teams use automation in more of their testing environments. DevOps test automation has become standard. To get this right, your entire team should have at least some basic coding capabilities so that they can verify and audit tests. Automation keeps things moving efficiently, while still ensuring both a quality of product and a quality process of getting that product to market.
Adam Satterfield, a QA leader at Anthem, has said that testers should, at a minimum, be able to check build logs and verify that automated tests are running properly. They also need to have a deep understanding of the software so that they can be a proactive partner in its development.
Continuous Testing in DevOps
Test automation plays a crucial role in continuous testing that’s at the heart of DevOps. With delivery being continuous, something is always in development. So, testing must always be ready to deploy at any moment and you’re constantly ensuring that the next project works with prior iterations and what’s just been released.
Continuous testing in DevOps removes a specific “testing phase” and replaces it with small-batch testing of features, capabilities, integrations, and other elements throughout the development cycle. As soon as a piece is ready, it should be tested on its own and as part of the whole.
This can be especially time-consuming for large projects or small teams, so the rise of automation that we mentioned earlier makes sense. Automation can ensure tests run and results are gathered and generated in your reports. Automated testing is a major time-saver.
What’s also important is “test automation,” where your team automates the processes of tracking and managing different tests. Test automation not only provides management of your testing, but it can also provide additional insight, such as how much of a system is covered by each test you use. It’s a way to maintain quality standards and continually check in on your overall progress.
Begin with a Documented Strategy
Before you dive into a specific list of tools or practices for your DevOps testing, you need a game plan. This is especially important if you’re changing a company or project structure to adopt DevOps testing for the first time.
Communication is vital in DevOps testing. Your team needs to understand the context for the change, what it means in terms of development and testing, and why it has the potential to improve your operations. Demonstrate how the pieces fit together — all the cycles may feel separate for some — to achieve a single goal. Identify the contributions of each team member and leader as well.
Documenting these elements is the right start to creating our test strategy. Follow up with needs and requirements for your projects so that your team can understand what should and shouldn’t be tested. Getting everyone on the same page here makes it easier to implement the specific tests your project needs at each stage.
Strategy also helps keep everyone on the same page as things progress. Your testers are going to find results that cause a need for a project to shift. Their decisions impact the rest of the team and your development cycle. Teach them how to integrate decision making and feedback with your workflow to push changes through immediately, keeping everyone on the same page.
Visualization for DevOps Testing Tools
Your strategy document and DevOps test strategy retrospective need visuals to keep things from getting too cluttered or confusing. Your team needs the space to see and understand, instead of having to try and find the right phrase in a wall of text.
Get as complex as your team needs or keep it simple with many of the project management tools available. We really like Trello and Basecamp as starting points for overall management because our integration means you can work with visuals and images right away. You can also attach photos and GIFs to the top of boards or projects to show your team exactly how to use your boards and inform everyone on your team.
Walking someone through each step with a quick visual guide makes them more likely to follow the right steps, while the automatic notification settings (and their integrations with our other favorites like Trello) ensure everyone knows about the latest updates.
If you’re wondering about how to get started with visualization, here’s a quick example from Katrina Clokie that’s used in her book “A Practical Guide to Testing in DevOps” which you can grab here.
- Get a board, either physical or digital.
- Place two notes, one called “Idea” and the other “Production” and put them at the top left and right corner, respectively. This is your visual timeline of development as different pieces move from development idea to production.
- Create a list of your development ideas and production needs. Put them on three different colors of sticky notes (or different colors of cards for things like Trello), with colors representing 1) in our test strategy and we’re doing it; 2) in our test strategy and we’re not doing it; and 3) not in our test strategy, but should be.
- Group the notes as a team into things that have similar testing activities and put them under a larger heading. Then decide where they need to go on your timeline.
Her book is worth a larger read thanks to its detailed description of different testing elements, from how to get feedback during production to exposure control, how to A/B test, and even how to manage your environments for DevOps.
It’s an appropriate time to note that Vepambattu Chandu sees a benefit for visualizations in almost every type of testing and review for your DevOps efforts. We especially like his focus on continuous integration in the DevOps space.
Continuous integration, or CI, is a technique that helps companies speed up software delivery while ensuring compatibility. It requires that your team regularly perform module tests on the code that you’re adding to the central code base. Chandu recommends doing this daily.
CI also helps your team detect errors that automated tests return, so your programmers can quickly collaborate on responses and remedies. He notes that the overall time your teams spend on CI reduces as the project goes on thanks to continuous evaluation of the code.
However, you’ll still want a white box for testing so you’re able to fully test integrations and protect your teams before things move too far along.
Other Resources and DevOps Testing Tutorials
If you’re considering adopting the DevOps mindset, there are a variety of considerations, tools, and guides you’ll want to review. We’ve put together some leading options here but know that this is a long and involved process.
You’ll need significant buy-in from everyone on your team to make the DevOps switch a success. Much of that buy-in comes from the way you communicate with team members and demonstrate value and need. That’s where CloudApp comes in to your considerations — and not just because we integrate with tools like GitHub.
Visuals keep it simple to share your vision and improve documents or organize your files and track progress. Developers need this help more than most of today’s growing professions because you’ve got an incredibly complex set of tasks and goals in front of you. That’s why we help you specifically.
Our mission is to make it easy for you and your team to communicate. That can range from recording presentations in front of your biggest white board for a total project to quick videos and screengrabs so your team can know the text on the right, not the left, side is wrong or share issues with codes.
Bugs are hard enough to spot in the wild, so a GIF or annotated image ensures that they’re easy to eliminate when caught.
For DevOps, there’s still a lot worth doing and learning. So, here are a few of our other favorite things to include in your research efforts:
- Bryan Finster and WalmartLabs have a very useful testing guide with some interesting thoughts on API contracts and integrations. You’ll find it worthwhile for learning how to play well with others.
- CollabNet has a good 101 course on the foundational concepts of DevOps and how to apply them to your project.
- TechRepublic has an interesting DevOps cheat sheet that’s a quick read and has a list of other resources and articles that can answer most of your DevOps questions.
- Dummies has a basic guide but it has a very impressive list of people to follow and blogs, reports, and newsletters to read.
- Ranorex is a powerful test automation service that scaffolds your test framework. It’ll automatically apply DevOps best practices and can automate a variety of UI selectors and screenshots.
- Experitest is a solid tool for testing mobile app and cross-browser needs. It’ll let you test on thousands of devices and browsers with large-scale execution and simple tools.
- Jenkins is an open-source DevOps tool for automating a variety of tasks for many steps in the building, testing, and deploying phases. It’s great to teach about automation, show what’s available, and get you thinking about holistic development.
- Apache JMeter is an open-source load-testing tool that’s easy to use and has some early automation tools.
When you’re getting ready to start with these and other resources, don’t forget to pick up a free CloudApp version and see how well we integrate with your workflow. It’s DevOps made a little easier and lot more fun.