{"id":14690,"date":"2020-06-25T19:53:42","date_gmt":"2020-06-25T14:23:42","guid":{"rendered":"https:\/\/cigniti.com\/blog\/?p=14690"},"modified":"2021-09-16T14:06:18","modified_gmt":"2021-09-16T08:36:18","slug":"continuous-testing-devops-ci-cd-automation","status":"publish","type":"post","link":"https:\/\/www.cigniti.com\/blog\/continuous-testing-devops-ci-cd-automation\/","title":{"rendered":"Integrating Automation with Continuous Testing in a CI\/CD pipeline"},"content":{"rendered":"
Software development practices and methodologies have evolved significantly since the time humans were introduced to an idea of a code. The most critical outcome of this evolutionary journey has been the greater focus on software testing.<\/span>\u00a0<\/span><\/p>\n We are now in the era of DevOps \u2013 a methodology that harmonizes each step of the software development lifecycle, bringing all the functions under one umbrella for them to work together, collaboratively, without any organizational silos. DevOps practices empower an organization to keep up with the pace at which consumer demands change these days and to be on the top of their game for staying ahead of the competition. A DevOps-driven SDLC is in turn empowered by a Continuous Integration and Continuous Delivery (CI\/CD) pipeline.\u00a0<\/span>\u00a0<\/span><\/p>\n While Continuous Integration is the process of merging the code developed by each developer into a main source code, Continuous Delivery enables one-click deployments of fully-automated, low-risk, and low cost releases.<\/span>\u00a0A CI\/CD pipeline thrives on automation, which is the reason for the faster releases and quicker feedback loops. But, the key to achiev<\/span>ing<\/span>\u00a0truly effective CI\/CD is test automation<\/a> and continuous testing<\/a> (CT).<\/span>\u00a0Although Continuous Integration and Continuous Delivery are essential for accelerating product releases, Continuous Testing is what brings in the factor of quality into those accelerated releases.<\/span>\u00a0<\/span><\/p>\n Need for<\/span><\/b>\u00a0Continuous Testing within a CI\/CD pipeline<\/span><\/b>\u00a0<\/span><\/p>\n David Farley in his book on \u2018<\/span>Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation<\/span>\u2019 aptly summarizes the need for continuous testing \u2013 \u201c<\/span>The earlier you catch defects, the cheaper they are to fix.<\/span>\u201d And, to catch the defects early, it is important to minimize the scope for manual errors and maximize the possibility for faster feedback and resolution, which can be made possible with test automation and continuous testing.<\/span>\u00a0<\/span><\/p>\n The software applications being developed today are much more complex than their predecessors a couple decades ago. With higher complexities and intensive architectural & infrastructural requirements, the testing approach needs to evolve such that it addresses the various protocols & application components simultaneously while finding bugs. Automation-driven continuous testing can run parallel to the development. This means that as soon as a code is integrated into the central repository, the automated tests can run\u00a0<\/span>a<\/span>nd send the feedback much faster than a manual tester can.<\/span>\u00a0<\/span>When the bugs are caught early on, there is ample time for the developers to resolve the issue and prevent defect leakage into the production.\u00a0<\/span>\u00a0<\/span><\/p>\n This is especially challenging in the case of mobile software applications. While changes made to a web application can be available for the users immediately after release, the changes made to a mobile application need to be updated on the app store, approved by the app-hosting store, and then explicitly updated\/downloaded by the user on their mobile devices. This process takes a longer time, leaving little to no scope for errors in the releases. The longer waiting period opens a longer window in which the organization developing the apps may have to deal with serious blow on their reputation and upstanding. Continuous testing prevents the possibility of this happening by ensuring that only high-quality code is released into production.<\/span>\u00a0<\/span><\/p>\n Guy Arieli, CTO at Experitest, explains it well in a recent\u00a0<\/span>podcast<\/span><\/a>, \u201c<\/span>If your website sucks, no one really knows about it. This is not the case if you have a bad mobile application. If you have a low-quality mobile application, very quickly it will get rated, and no one will download it. The visibility of your result is a different thing. The other thing is that the complexity of distributing your result. In the case of the website, if you have a bug, you can fix it, and in the next refresh, all your customers will experience the new fix; in mobile, this turnaround can take a few weeks. You need to upload your application to the app store, and then either Apple or Google needs to approve it, and then your customers need to download it. This cycle is much longer, and because it’s much longer, if you have a problem in your application, you will face a longer down time, or a longer reputational damage, than in your website. So this is one part of your question. The key, obviously, in order to avoid those big pitfalls, is to test your application and automate it. I don’t see any other way but to have a real, high-scale automation project.<\/span>\u201d<\/span>\u00a0<\/span><\/p>\n Ultimately, the releases are more reliable and low-risk resulting in higher productivity, more efficiency, and greater customer satisfaction.<\/span>\u00a0<\/span><\/p>\n QA challenges with implementing CI\/CD in an organization<\/span><\/b>\u00a0<\/span><\/p>\n Some of the common challenges faced with continuous testing while implementing a CI\/CD pipeline<\/a> within an organization are related to requirements ambiguity, orchestration, scalability and complexity, feedback loops, and test environments.<\/span>\u00a0<\/span><\/p>\n Manually designing tests can result in inaccuracy and ambiguity in the requirements, which can negatively impact the outcome of the complete continuous testing process. Further, the difficulties with test data extraction, maintenance, integration, and management can affect the productivity of continuous testing cycle. The lack of appropriate tools required for scaling the testing process and the unavailability of test environments due to parallel integration and delivery can also render a CI\/CD\/CT pipeline ineffective.\u00a0<\/span>\u00a0<\/span><\/p>\n How can we help?<\/span><\/b>\u00a0<\/span><\/p>\n