In today’s competitive world, the customers look forward to the latest releases of software with new and improved features incorporated. The organizations strive to deliver the best to their customers in the shortest possible time. This is only possible when there is a process in place to incorporate changes on an ongoing basis.
DevOps is a practice of continuously integrating and deploying the code changes in short cycles in order to facilitate faster builds and release versions. This gives rise to the need for Continuous Testing to validate all the changes implemented.
DevOps is a term formed from two concepts – Development and Operations. It is not just a term. It is an ideology that encompasses various concepts and development practices which are prevalent in Software development world. The concept of agile development was introduced in the 1990s. With changes in development approach, the testing approach needed a shift too, in order to align with the changes. Testing process also evolved to be in sync with the entire software development ecosystem. You can read our blog on “Evolution of software testing” for a quick overview of this evolution process.
Continuous Regression or Continuous Testing plays a key role in CI/CD tool chain. Infact, we have written a detailed analysis on how Webomates CQ effortlessly adds Continuous Testing to any system. Click here to read more about it. In this particular article, we will talk about DevOps and Agile methodology.
Definition: DevOps is a religion, a culture, a set of good practices, usage of right frameworks and tools which enable us to achieve Continuous Integration and Deployment. The objective is to strive towards 100% automation between code check-in and bug-free Deployment on production.
Description: Broadly there are following stages in CI/CD: Build-Code Review-Deploy-Test (where last two, ‘Deploy’ and ‘Test’ are repeated for several environments like test, pre-production, production, etc.). As a part of CI/CD as soon as the code is checked in by the developer, It’s automatically picked up for build and code review. The successful build is then deployed on a test environment followed by running a suite of automated tests. Based on the quality gates (e.g. zero Priority 1 issues, two Priority 2 issues), the build is then deployed on the next environment, say pre-production and henceforth. The result of each step is generally mailed to the relevant stakeholder for information/action.
Tools: The most commonly used tools for CI/CD framework are Jenkins, TeamCity, and Bamboo. Common tools that one must be aware of are Jenkins, GIT, Ant, Maven, SonarQube, Ansible, Check, Puppet, Docker, Kubernetes, etc.
1. Reduced time to market
2. Reduced last minute surprises
3. Minimal Build issues
4. Reduced defect leakage Challenges: It requires a lot of discipline for organizations to achieve complete CI/CD. It’s recommended to have specialized DevOps engineers for your organization. The overall process needs to be institutionalized across the board.
Definition: During conventional waterfall or V-Models of Software Development, organizations often met with situations where they figured out that by the end of SDLC (Software Development Life Cycle), either the final fully functional outcome could not be achieved or the software had several issues or needed much of a rework because of change in requirement (because of evolved understanding of the requirement/product/customer, etc.). So Agile is focused on the process of building small working (demo-able) pieces of software iteratively. This ensures that we know what we are building is correct and any upcoming features can be reprioritized as per the current need. As a result, it helps immensely to achieve Continuous Improvement.
Description: There are several Frameworks used as part of an Agile software development methodology. Most common in the software industry are ‘Scrum’ and ‘Kanban’.
Scrum: Scrum is based on having iterative cycles of short ‘sprint’ lifecycles. Sprint span is generally from 2 to 3 weeks. The outcome of each sprint should be a demo-able functionality. The requirements in Scrum are collected in the form of Epics (which comprises of user-stories) and piled up in a backlog. During each sprint, these Epic’s/stories are picked up from the backlog (based on the team size and story size).
A Sprint starts with ‘Sprint Planning’, where the user stories (functionalities/features) to be done in a sprint are selected. This is followed by the ‘Implementation Phase’. The major part of the implementation phase is ‘Daily Scrum’, where each team member tells about the work done yesterday, to be done today and impediments. There is a scrum master, who coordinates these meetings. On completion of a sprint, there is a ‘Sprint Review Meeting’, where the work is done in that sprint is presented to the relevant stakeholders for an acceptance perspective. The last step is the ‘Sprint Retrospective Meeting’, which is an analysis of the sprint (e.g. what went well, what could be done better). These steps are followed iteratively with the upcoming sprints.
Kanban: ‘Kanban’ term in Japanese means ‘visual card’ / ‘signboard’. Kanban methodology is basically used to visualize the workflow. In Kanban, the work is segregated in logical groups enabling a better understanding of the workflow viz. Backlog, In-progress, completed tasks likewise. It is based on the principle of keeping the minimal number of tasks in progress at one point. Hence, it limits the Work in Progress.
Major benefits of Kanban are
(i) a better understanding of overall work (what is to be done, what is completed, what is in progress)
(ii) Increase in productivity
(iii) Any bottlenecks become clearly visible for required action on time.
Tools: The king of all tools here is Jira from Atlassian. It supports both the frameworks ‘Scrum’ and ‘Kanban’. It also gives some other beneficial tools like ‘Confluence’ etc. which go hand in hand with Jira. ‘Trello’ is another tool widely used for Kanban implementations.
Challenges: it’s a significant transformation for teams working in Waterfall/V-Model to move towards Agile. Agile ceremonies are to be followed with discipline, e.g. each resource updating on the daily progress and the task for the next day on a daily basis to the entire team. Further, this model focused on individuals for monitoring and tracking perspective. It is imperative for each resource to update their tasks regularly on the monitoring board to get the full benefits of Agile.
While DevOps and Agile go hand in hand, it’s imperative for the organization to understand the importance of each of these methodologies independently and based on their eco-system and need one should emphasize the desired area appropriately. Various organizations are moving towards ‘Agile DevOps’, where Agile and DevOps enable people, processes and technology working together to meet business goals. In addition to select a validation method to add Continuous Testing to the CI/CD toolchain click here for a demo of the Webomates CQ platform.
Tags: CI/CD, DevOps, Regression Testing
Test Smarter, Not Harder: Get Your Free Trial Today!
Start Free Trial
Leave a Reply