Aristotle said, “Quality is not an act, it is habit. What we can interpret is that quality cannot be a response to a certain situation or something that is faked or postured. Rather quality should be part of a routine; the acts we do on a continuous basis and which should be a reflection of the essential nature of work. This is how today’s IT world is looking at the QA practice.
In a traditional IT world, testing is often seen as separate from the development. They were two distinct entities separated by ideological walls. Thanks to the new trends in IT world, these walls are fast disappearing. One of the major driver for this transformation is “DevOps”.
So what is DevOps? It is not a methodology or a suite of tools as many people think. DevOps is a culture that enables seamless coordination among the different stakeholders in the software chain. DevOps brings together the two critical silos of software process namely, development & operations to integrate within the same software cycle.
DevOps drives all the IT stakeholders to collaborate to deliver value faster. For this it collates the practices of continuous integration, continuous testing, continuous deployment and continuous monitoring.
As we know DevOps aims to break the barriers between Dev and Ops. It also demands breaking the barriers between Dev, Test and Ops. Testing is a critical part of the handoff between development and IT operations. For DevOps to be successful it is mandatory that testing should be fully integrated into the software development and delivery.
With this mindset, everything changes for a traditional testing organization. Testing operations undergo a major changes in a DevOps culture. This mandates a shift in tester’s skillset, methods, tools, timing and approach. DevOps advocates starting test early and constantly.
Some tips for successful DevOps testing:
- Involve development team during test design.
- Identify the critical test cases and prepare the test suite to test the functionality of the required build.
- All the environments required for testing need to be standardized and deployments have to be automated.
- Adopted test-first approaches such as test-driven development (TDD) and behavior-driven development (BDD).
- Keep the test execution cycles short and quick.
- Adopt regression test automation to run across various environments.
- Implement code analysis and coverage tools to ensure 100% code coverage.
- Critical bugs found need to be reported, fixed and passed through the same chain of events before the code is deployed on to the production environment.
- Encourage parallel execution of tests to help reduce time for go live which is the heart of a successful DevOps implementation.
Testing maturity is a key differentiator for the success of DevOps. Even if organizations can automate their integrations, builds and delivery processes but they still struggle to manage test orchestration and automation. Testing brains play a critical role to achieve this with their expertise in test design, test automation and test case development with DevOps. Irrespective of what DevOps processes, models and tools organizations use, testing is a vital part of the overall DevOps process — not only to ensure code changes work as expected and integrate well — but to ensure the requirement changes do break the functionality.
DevOps Testing Tools
In order to realize the desired business goals of DevOps, it is essential to have right tools to maintain the quality associated with the delivery chain. This calls for accurate and comprehensive testing. So it becomes very important to understand the existing testing process and identify the right testing tools.
Some recommendations of testing tools are below:
- Selenium is a portable software testing framework for web applications. Selenium provides a record/playback tool for authoring tests without learning a test scripting language (Selenium IDE). It also provides a test domain-specific language (Selenese) to write tests in a number of popular programming languages, including Java, C#, Groovy, Perl, PHP, Python and Ruby.
- XL TestView is a test management and analysis tool that allows you to define and execute tests across your full spectrum of test tool suite. It analyzes test results across multiple test tools and track release metrics and quality trends over time. It helps aggregate and visualize results to provide true insight into quality.
- Cucumber is a testing tool that computer programmers use for testing. It runs automated acceptance tests written in a behavior-driven development (BDD) style. Cucumber is written in the Ruby programming language. Cucumber projects are available for other platforms beyond Ruby.
- FitNesse is a web server, a wiki, and an automated testing tool. It is based on Ward Cunningham’s Framework for Integrated Test. FitNesse is designed to support acceptance testing rather than unit testing in that it facilitates detailed readable description of system function.
As it is said, “Nothing is permanent but change”. Waterfall model gave way to iterative model which in turn was replaced by agile as the preferred choice for software development. DevOps is the future. DevOps isn’t an individual effort, it’s a core value of IT organization. The only reason that DevOps works is because quality is built into the entire system. So it’s time we embrace and adopt this change.
A special thank you to Moin Syed for writing this article.