For about a decade now in the world of Agile where quick and frequent releases are the main goal, DevOps has just been the right solution which let teams automate all redundant development as well as Ops related tasks leading up to a release. But the one process that sometimes lacked that attention was quality of releases.
The concept of DevTestOps was introduced to put special focus on continuous testing for each step of the development process along with DevOps to produce quick, frequent and quality releases. DevTestOps ensures that along with Development and Operations related tasks, the feedback on quality is continuous and given the importance it deserves.
What is DevTestOps?
As per the DevTestOps Manifesto 2018:
“The goal of DevTestOps is not to silo “Test” from Dev and Ops, but simply to raise the visibility of testers and testing as integral parts of the DevOps quality culture”
DevTestOps is a combination of DevOps and Continuous Testing. The process involves testing early, testing often and testing throughout the software delivery pipeline.
DevTestOps highlights the key role of the tester in the development of the product along with the Ops professionals. DevTestOps ensures continuous feedback of testers to developers throughout the stages of product development, thus reducing business risk and the possibility of finding defects at later stages.
In the Agile testing and development methodology, all members of a cross-functional Agile team are equally responsible for the quality of the product and the success of the project.
Hence, testing of an agile project is done by the whole team, not just designated testers or quality assurance professionals but also team members whose primary expertise may be in programming, business analysis, and database or system operation.
Below image clearly depicts how testing can be included in different stages of a DevOps process.
How is DevTestOps different from DevOps?
DevOps automates most of the manual operations in the software development life cycle(SDLC) which leads to faster delivery of the product. DevOps is successful but there are possibilities of missing critical bugs, scenarios and business requirements in the product as continuous testing is not performed.
To eliminate the possibility of missing defects, functionalities and business risks, DevTestOps idea was brought forward in which Continuous Testing was implemented as a major part of the software delivery pipeline.
Let us discuss about Continuous Testing.
The word ‘continuous’ means the code is continuously developed, delivered, tested and deployed. The testers identify possible scenarios based on requirements, create and execute test cases from the beginning of the software delivery pipeline and shares feedback with the development team, on the business risk involved.
It is an uninterrupted execution of automated tests while being part of the software delivery process, facilitating immediate feedback based on the business changes associated with the product and mitigating risks before they proceed to the next SDLC stage.
The goal of continuous testing is to test early, test often.(Image Source: http://www.professionalqa.com/)
Continuous Testing helps in testing the code through the software development cycle which reduces the gap between testers, developers and the operations team. The end-to-end automation of tests helps to integrate QA into DevOps processes to maintain continuity and thereby address the overall challenges of quicker development cycles.
The scope of Continuous Testing is pretty huge with validation of the functional and non-functional requirements of the product. It involves API testing, unit, integration and system testing of the software all done under a simulated environment with test automation.
What is the need of using DevTestOps? Has it changed the perspective about Testers in the market?
So, DevTestOps uses continuous testing which is an essential element in the software development life cycle which ensures there is no gap between the continuous integration and delivery cycle. This has changed the outlook of the tester in the agile software industry.
Now, Testers have also become the prime members in the development of any software. They play a vital role throughout the process of development.
As testing is implemented at each stage and maximum of the processes are automated, it has led to below improvements:
- The defects are detected at an early stage hence are easier to fix, ultimately resulting in timely delivery of the product.
- It shortens the regression cycle from weeks to hours by just automating the process.
- The developers and testers work together with leading to a better understanding of the module and increasing the quality of the product exponentially.
- The tester gets a chance to perform all kinds of testing during the phase of product development.
- The tester becomes an equal owner of the product as a developer.
- Automated build and deployment accelerates the process and avoids any human error and dependency.
Myths about DevTestOps
- Continuous Testing requires 100% automation. As we all know 100% automation of an application is impossible hence many scripts are run manually in the process of continuous testing.
- Large organizations do not benefit from continuous testing as they have huge development and QA teams which make coordination difficult.
Continuous testing, since its inception, has been revolutionary for both testers and developers. Developers are moving closer to customers to shape the user experience according to their changing needs, whereas testers are now closer to the developers and business analysts, taking part in the SDLC from the early stages.
- It is expensive.
Yes, it is a one-time investment but once the team is equipped with functionality, return on investment is tremendous due to:
- Better code quality as no commit goes untested.
- Developer receives immediate feedback about the product from the tester which helps in finding the root cause and easily fixing the bugs in less time.
- Since bugs are detected early hence the cost of fixing is less.
- Almost no human mistake as most of the process is automated.
Best Practices to follow in Continuous Testing for successful DevTestOps
- Adopt more test automation: Do not focus only on automating the test case but also the repetitive process. It helps in saving a lot of time.
- Integration of tool: Selection of the tool should be done wisely to make testing effective, faster and easier
- Transparent communication: Communication and understanding between all the teams should be very effective. It avoids confusion and yields good productivity.
- Performance testing: It should play a vital role during the delivery cycle to avoid any crash issue which may result due to high volume user inflow.
- Perform Multilayer testing: All types of testing such as integration, API, GUI, database testing should be incorporated during the delivery cycle and maximum testing types should be automated.
Tools available in the market for DevTestOps
Tools are products that support one or more test activities right from planning, requirements, creating a build, test execution, defect logging and test analysis. During test automation which is a part of continuous testing too, each type of testing such as unit, system, integration, end to end, performance, security, cross-platform, multiple platforms, responsive and API testing is performed.
As a thumb of rule, look for tools that enable easy automation and also support integration to continuous testing.
Below are a few tools that can be considered:
- Selenium: It is an open-source tool, used for most of the functional test automation, supports a wide range of browsers and operating systems. However, there are many limitations and challenges using Selenium, as it requires technical knowledge and mobile automation cannot be done.
- Testsigma: It uses basic English language statements to create test steps. It is quite easy for manual testers and anyone new to test automation. It provides cloud-based service and test lab which ensures 24*7 access to the team. It can be used across all platforms and can be easily integrated into most of the tools that support continuous testing.
- Eggplant: This is a scriptless automation tool that uses image-based technology. It provides cloud-based service and test lab which ensures 24*7 access to the team. Eggplant can be used across all platform desktop, web and native.
- Watir: It is an open-source tool used for web automation and continuous testing, based on ruby language.
- Tosca: It is a model-based test automation tool, used widely across all platforms, and has embedded business intelligence. This tool automatically scans the AUT(Application Under Test) script and loads into the software with minimal manual steps. Business intelligence helps the tool in suggesting certain critical tests which help the team identify the trouble areas, and thus reducing the risk.
- Rational functional tester: One of the pioneer tools in the automation industry which supports functional, data-driven, API, performance and regression testing. The tool requires knowledge of .net and java scripting to automate the process.
- Appium: It is used for mobile testing. It is a kind of wrapper on selenium. This tool requires a sound knowledge of a testing framework for its implementation.
A flawless DevTestOps environment can be put together when the testing team works closely with the Dev team and seeks support for continuous release and deployment through DevOps. Hence, for an organization that is looking for a solution to release high-quality products into the market without delay DevTestOps is the solution to go for.