This is a guest post by Raj Subrameyer
In the age of rapid technological advancement, organizations are looking toward more lean-agile approaches to deliver software. One such agile approach that has become quite popular in the last few years is DevOps.
DevOps is an approach that combines all the necessary skills and toolsets to streamline the development process. It focuses on releasing high-quality products to the customer faster than before so that organizations can stay competitive. The main goal of this approach is to instill the mindset that quality is everyone’s responsibility, and it starts with different roles such as developers, testers, operations teams, business analysts, and other stakeholders working as one single unit.
One of the biggest challenges for organizations while transitioning to DevOps is fitting QA teams within this approach. But there are effective ways it can be done.
Here are five steps to align testing with DevOps:
1. Restructure your QA team
A key aspect of DevOps is continuous testing. Testing the application should start at the beginning of the requirements phase and continue until the deployment and production monitoring phase. This aligns with the idea of shift-left testing. With DevOps, continuous testing becomes part of everyone’s responsibility.
To streamline this approach, you should remove the boundaries between developers, testers, and operations teams to enable them to work as one technical team. This technical team has to communicate, collaborate, and optimize their efforts so they can find defects faster and fix them before it is too late.
QA team members’ focus must shift from ensuring requirements were tested and defects were fixed to mitigating risks in the product by acting as a liaison between developers and operations. QA also needs to start thinking about how the customer interacts with the product and align their work accordingly. They should prioritize scalable deployments, standardizing environments, and ensuring their tasks map to existing CI/CD pipelines.
2. Automate as much as possible
Automation is the glue that binds everything in the DevOps pipeline. In each stage of the development process, the technical team ensures there are automated tests to give quick feedback on the builds. These may include unit tests, deployments, integration tests, smoke tests, regression tests, security tests, and performance tests. Testers play an integral part in the DevOps process by starting automation as early as possible and helping to find defects sooner than later.
Also, for automation to be effective, the team has to focus on how the automation can scale with an increase in complexity. As more features get added to the product, more tests are required, and sufficient hardware, software, and skilled resources are needed to write and execute new tests and maintain them.
A good approach is to modularize test suites and run them at various phases of the development process based on the features that have to be tested. The goal is to run the relevant tests as quickly as possible to get immediate feedback.
3. Get sufficient training and skilled resources
With DevOps, the requirements from testers change significantly. The focus goes far beyond just writing automation scripts, executing manual test cases, and making sure test cases map to requirements.
Testers need to know how to have scalable deployments, set up and maintain stable environments, work with the operations team to monitor application performance, help developers write unit tests, and in some cases, write application code to develop, test and deploy features faster. With this approach, QA team members require more knowledge about the tools, frameworks, and technologies used to manage the DevOps pipeline effectively.
The availability of skilled professionals is crucial in the successful alignment of QA teams with DevOps. In parallel, organizations should give existing employees sufficient training to expand their knowledge and thrive in the DevOps process.
4. Use advanced monitoring and reporting
There are a plethora of tools, frameworks, and technologies used in the DevOps pipeline:
- Version control systems like Git and Assembla
- CI tools such as Travis CI and Jenkins
- Unit testing tools such as JUnit, Mocha, and Jasmine
- Virtual infrastructure services such as AWS, Microsoft Azure, and VMware vCloud
- Static analysis security tools such as Kiuwan and Coverity
- Security scanners such as Netspaker, Acunetix, and Wireshark
- Configuration management tools such as Puppet, Ansible, Salt, and Chef
- Test management tools such as TestRail, Jira, and Xray
- Test automation tools such as Selenium, Appium, Water, Ranorex, Cypress, and Espresso
All these tools collect loads of data that have to be monitored and analyzed to ensure the system is performing at optimum levels at all times. Usually, the operations team works with developers and testers to build monitoring and analytics capabilities right into the developed application. Testers may use tools like Splunk, Kibana, Graphite, and Crashlytics to help with this effort.
5. Increase visibility into process and tools
For a successful DevOps implementation, teams need visibility into each other’s work. At any instant, team members need to be aware of how their efforts are helping in deploying successful builds.
A good approach for building this awareness is to increase visibility across teams through various tools and dashboards that visually highlight vital metrics such as team velocity, defects logged and fixed, number of tests executed, test coverage, and other important key performance indicators (KPIs). This way, the team gets continuous feedback on the development process.
Transitioning to DevOps is not easy, even if you’re already agile. Teams will face many bottlenecks during the process. However, when teams collaborate and work as one entity, the process can be much easier, and organizations can start seeing immediate benefits from this approach. Read more about the 5 ways DevOps complements Agile!