Why You Should Take Automated Testing Seriously
Agility and continuous delivery are the buzz words of the software development and testing landscape. Learn why automated testing is uniquely important to DevOps.
Join the DZone community and get the full member experience.Join For Free
The IT department is now the primary driver for how fast a business can respond to the market and drive new competitive advantages. IT professionals started to change the way they are managing the projects in their own industry, and managing methods are now constantly changing and improving. The leaders in the Information Technology industry were forced to invent and offer different and more powerful ways in the IT project management. DevOps, agility, and continuous delivery are the buzz words of the new software development and testing landscape. They describe some of the core principles and processes that characterize an efficient, modern workflow.
The DevOps landscape is not black and white. The journey of DevOps is one with several steps and stages. It is not a simple decision that organizational executives make, nor can it be implemented all at once. It is often described as simply breaking down of the typical silos in an organization by streamlining the way an organization works. This is done by removing the friction and unnecessary bureaucracy between departments, so as to enable them to work together more effectively.
This blog post deals with the DevOps journey and identifies the phases that the typical organization crosses, as it adopts DevOps practices and few reasons why it may still fall short of complete transformation. The various degrees of agility are highlighted and barriers needed to overcome by the organization are also discussed in this blog post.
The 4 Stages of Agile
The modern software delivery chains involve so many tools and processes, organizations progress slowly from one phase to the next. While overnight leaps are not entirely viable, it is still possible for four main stages of agility within DevOps.
- Waterfall: Enterprises that are following the waterfall delivery process are existing in the former times of software development. Waterfall operated on manual processes, including manual testing. The code is written, tested, and delivered according to a sequential staccato rhythm. All the integral teams, including developers, operations, and QA operate in silos and rarely work collaboratively.
- The Beginning of Agile: Organizations that have implemented a certain degree of agility are in the fast waterfall stage. With limited opportunity to move with agility, de-scope, re-scope or fix any bugs, the final product will most likely result in a number of unresolved defects and incomplete features. These organizations take advantage of tools, such as GitHub, that introduce a certain degree of automation and scalability to their workflow. They also do some amount of automated testing, but constraints remain; for example, they may not take advantage of parallel testing, which adds a magnitude of efficiency to automated testing.
- Continuous Integration: This stage of the DevOps journey is hallmarked by the use of continuous integration platforms, such as Jenkins, CircleCI, and TeamCity. These tools do much to automate the process of building software. Issues are identified and appropriately escalated to development or operations with just-in-time, in-context knowledge for rapid diagnosis, while also capturing experience to quickly solve ongoing issues without pulling valuable resources off of new assignments.
- Continuous Delivery: This is the final phase of the DevOps journey. Organizations that have achieved continuous delivery have adopted a fully automated development process, including automated testing at high frequencies. In addition, their development, operations, and QA teams function as a single group, constantly in sync with one another. Align business requirements, IT projects, development teams, and IT operations personnel to enable continuous delivery of new application releases.
Increasing Testing Agility
The organizations that have embarked on the DevOps journey by adopting tools related to development, delivery, and production are likely to find their agility constrained by a lack of automated testing. For these organizations, improving testing efficiency is an obvious and easy way to grow more agile.
DevOps-inspired tools and methods improve the efficiency of the testing part of the delivery pipeline. Some of these could include:
- Automated Testing.
- Cloud-based Testing.
- Parallel Testing.
- Shift-left Testing.
These strategies for improving agility by making testing more efficient have so far not been a central part of the DevOps conversation, but they constitute simple, low-cost ways of growing more agile in order to work toward the goal of full continuous delivery.
Why Automated Testing is Uniquely Important to DevOps
The role of automated testing, essentially, in achieving continuous delivery, is what distinguishes it from many other DevOps tools. Automated testing is essential when the objective is to achieve full agility.
An enterprise developing a web app, for instance, which has been doing so for the past decade, has done plenty to take advantage of DevOps-inspired tools and techniques. From moving to a GitHub repository to adopting Jenkins (a continuous integration tool), it has implemented several approaches in order to automate builds. It has assured that the programmers who write the app’s code can easily communicate with the QA team that tests it and the IT Ops staff who deploy it. In other words, this particular enterprise has largely imbibed the DevOps culture. However, it lacks the DevOps resource for automated testing, as the organization mostly relies on manual testing. Though some tests are scripted, most others are performed on an ad-hoc basis, and the team has not yet included automated testing in the build process.
Lack of a complete test automation process implies that delivering applications with robust quality to users on a frequent basis remains relatively difficult. In addition, this destabilizes the value of other changes that the organization has executed to its development and delivery pipeline for the Web application. Although the changes have optimized development and deployment, without the actual automated testing process, continuous delivery of the application is not possible. Thus, the workflow is more agile than it was prior to the organization having begun its DevOps journey, but has still to reach the stage of continuous delivery.
In order to take the next step in DevOps, the scenario mentioned above would suffice. For the organization to operate with a fully automated testing process included in its workflow it needs to leverage tools that make automated tests a part of the continuous integration workflow. This would add a considerable amount of agility to the existing process.
How Company Culture and DevOps Culture Work Together
DevOps is essentially a mindset, one that aims to increase the collaboration between people by encouraging them to work together as one team. The team consists of members that collaborate towards the delivery of a business capability. Through collaboration, requirements are written, code is developed by considering the need of operations, built, tested, and eventually deployed to integration environments. Cross-team collaboration, creative challenges, and courage to progress with an increasing number of iterations all comprise the DevOps concept.
DevOps is a central part of efficient software delivery. Most companies seeking to keep their users happy, and their developers and admins working at their best, have already begun the DevOps journey. In order to reach the continuous delivery stage and achieve full agility, however, companies need to do more than adopting a handful of DevOps tools or begin speaking in DevOps-inspired language.
Reaching the final stage of the DevOps journey takes commitment. Organizations need to overhaul the practices they established in the age of waterfall development. They also need to ensure that all stages of their workflow are fully agile, which requires a complete set of DevOps tools. And while many of the tools that organizations adopt along the DevOps journey will vary from company to company, automated testing is an essential resource for virtually any organization that wishes to reach continuous delivery.
Published at DZone with permission of Subhendu Pattnaik, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.