The Big Challenges in Automating Your Testing for DevOps
To stay ahead of the market organizations have to deliver a high-quality product in the least possible time. For this, organizations have had to fundamentally change their development methodologies as well as their testing practices. These shifts have prompted all the stakeholders of product development to work more closely and in tandem with one another. DevOps is one such development methodology that takes a more holistic approach to software development by bringing software developers, testers, and operations together to improve collaboration and to deliver a quality product at light speed.
Clearly, the role of QA and testing have been redefined in the DevOps environment. DevOps is heavily focused on the ‘fail fast, fail often’ mandate propelled by the ‘test first’ concept. Testing, thus, becomes continuous and exhaustive and hence demands greater levels of automation. But just how easy is it to automate testing in DevOps?
DevOps makes testers an important part of the development team to develop new features, implement changes and enhancements, along with testing the changes made in the production software. While on the outset this arrangement looks fairly simple to achieve, there can be some challenges that first need to be addressed to automate testing in a DevOps environment. In fact, Quali’s 2016 survey on the challenges of implementing DevOps states that 13% of those surveyed feel that implementing test automation poses a barrier to successful DevOps implementation. In this blog, we take a look at some changes that create challenges in automating testing for DevOps.
- The New-age Testing Team
The DevOps environment needs testing teams to change pragmatically to accommodate accelerated testing – not always easy to achieve. These teams, instead of being in the back end now have to co-exist with the other development stakeholders in DevOps. Along with being focused on the end-user, testing teams in DevOps also have to be aware of the business goals and objectives and have to have the ability to understand how each requirement impacts another and be in a position to identify and iterate cross-project dependencies. So along with being able to understand user stories and define acceptance criteria’s, they also need to have better communication, and analytical and collaboration skills. This allows them to clarify intent and also provide sound advice on taking calculated risks.
- The Process Change
DevOps demands greater integration of development and testing teams. This also means that the testing and QA team has to work closely with product owners and business experts and also understand the working of the business systems being tested. Even testing teams need to develop a Product Lifecycle Management mindset by first unlearning the standard SDLC process. DevOps testing teams also need to assign an architect to select the right testing tools, determine best practices for continuous integration and integrate the test automation suite with the build deployment tool for centralized execution and reporting. There, thus, has to be a ‘one team’ mentality across the invested teams – a significant change in the “way we work”.
- The Pace of Change
DevOps also focuses heavily on the speed of development and deployment. This places a lot of emphasis on increasing test coverage, iterating detailed traceability requirements and ensuring that the team does not miss testing of critical functions in the light of rapidly changing requirements. Test plans in DevOps thus need to be more fluid and have to be carefully prioritized to adapt to these uncertainties that arise from changing requirements and tight timelines. Test Automation also takes time to develop. At the blistering pace set by the DevOps team how is the automation to be completed?
- Unified Reporting and Collaboration
Test automation in DevOps demands consolidated timely reports to provide actionable insights to foster collaboration in cross-functional teams. Testing teams also need to ensure that they introduce intelligence into the existing test automation set up. This is to proactively address scalability challenges that may slow down testing speed. Analytics and intelligence can also play a key role in implementing intelligent regression models and establishing automation priorities. This is essential to test what is needed, and only what is needed, in the interest of time. Ensuring easy maintainability of the automation architecture has always been a priority but it may now become necessary to have a central repository of code-to-test cases for easier test case traceability. Prevailing test practices are not necessarily tuned to this level of reporting and analysis and this is a significant challenge to overcome.
- Testing Tools Selection and Management.
Traditional testing tools may be misfits in a DevOps environment. Some testing tools can be used only once the software is built, thus failing the whole purpose of DevOps. Some testing tools can only be employed once the system has evolved and is more settled. DevOps testing teams thus, need to use those tools that help them explore the software still being built. They must test in a manner that is unscripted and fluid.
The test automation tools DevOps needs can link user stories to test cases, provide a holistic requirement view, keep a record of testing results and test data, have REST API’s, help manage test cycles and create and execute test cases real-time, and provide detailed reporting and analytics.
Testing teams in a DevOps environment are critically important. They need to work with an enhanced degree of speed and transparency and they must root out all inefficiencies that impede the automation process. Automation is key to their success but as we have outlined, there are some significant challenges to overcome in getting Automation right in DevOps. Stay tuned for future posts where we reveal just how these challenges can be addressed in the DevOps environment.