Monday April 13, 2020
Agile vs DevOps which is better? Agile, Scrum, and DevOps are some of the buzzwords these days. They are changing the way people look at how and when testing and automation need to be done. In this section, we will discuss the difference between Agile and DevOps and the testing methodology in both.
What is Agile Methodology?
Agile literally means “moving quick and easy”. In terms of software development, Agile means delivering small chunks of stand-alone and workable codes that are pushed to production frequently. This means your traditional project plans that spanned over months and sometimes years in now cut short to sprints no longer than 2-3 weeks. All timelines are shrunk to deliver working code at the end of each sprint.
What is DevOps Methodology?
DevOps is a set of practices that aim to automate the development, testing, and deployment so that code gets deployed to production as small and rapid releases as part of continuous development and continuous deployment (CI/CD). DevOps is a combination of the terms Development and Operations and aims to bridge the gap between the two entities enabling smooth and seamless production code moves.
Testing in Agile
The traditional STLC holds no good when it comes to Agile. There is no time for all the documentation and the marked-out phases. Everything from plan, design, development, testing, and deployment needs to be winded up in a 2 to 3-week sprint.
Here are some pointers that explain how testing is done in Agile projects:
Agile Testing Methods
Traditional testing methods are difficult to fit in Agile and are unlikely to give the desired results. The best-suited methods for agile testing are listed below:
BDD Testing makes life simple for both testers and developers. The test cases and requirements are written in readable English with keywords (Gherkin Given/When/Then syntax). These requirement documents double up as test cases.
This is another way of ensuring the best test results for an Agile process. Think and test as a customer would do. In this case, meetings are held between developers, testers, and other team members to come up with different test scenarios to match the application usage by the end-user. These are given the highest priority for testing.
Another very useful but non-structured testing approach frequently used in the Agile process is exploratory testing. This involves playing around with the application and exploring all areas as per the understanding of the tester. This is done to ensure that there are no failures or app crashes.
Testing in DevOps
DevOps testing is mostly automated just like most of the other things in DevOps. The moment there is a code check-in, automated code validation is triggered. Once that passes the testing suite or Smoke test is triggered to ensure nothing is broken. If everything goes well, the code is pushed to production.
DevOps Testing Methods
Here we discuss some tools and techniques in testing that can be very beneficial for the DevOps process. These help to reduce the time-to-market and also improves the overall product and testing efficiency.
In a TDD approach, the developers are expected to write unit test cases for every piece of their code covering all the workflows. These tests ensure that the piece of code is working as per the expectation.
Apart from TDD the DevOps teams also use the ATDD and BDD approach as discussed above in the Agile section. These are equally helpful in ensuring greater quality and a streamlined approach to continuous development and deployment to production.
Read also: Software testing Models: Know about them
Core Values of Agile and DevOps (Agile VS DevOps)
Let us now discuss the core values of Agile and DevOps that make them different from each other.
Agile – Core Values
Below are the values that govern any Agile process.
DevOps – Core Values
DevOps is an amalgamation of Development and Operations. Both these teams work together as one to deliver quality code to the market and customers.
Agile VS DevOps: The key differences
In this section, we have tabulated the differences between Agile and DevOps for a quick understanding and review.
|Type of Activity||Development||Includes both Development and Operations.|
|Common Practices||Agile, Scrum, Kanban, and more||CI (Continuous Integrations), CD (Continuous Deployment)|
|Purpose||Agile is very useful to run and manage complex software development projects||DevOps is a concept to help in the end-to-end engineering process.|
|Focus||Delivery of standalone working code within a sprint of 2-3 weeks||Quality is paramount with time being a high priority in the feedback loop (hotfixes and changes requests)|
|Main Task||Constant feature development in small packets||Continuous testing and delivery to production|
|Length of Sprint||typically, 2-4 weeks||It can be shorter than 2 weeks also based on the frequency of code check-ins. The ideal expectation would be code delivery once in a day to once every 4 hours.|
|Product Deliveries||Frequent, at the end of every sprint||Continuous delivery. Coding, testing, and deployment happen in a cyclic manner|
|Feedback||Feedback and change requests are received from the client or the end-users||Feedback and errors are received from automated tools like build failure or smoke test failures etc.|
|Frequency of Feedback||Feedback received from the client at the end of every sprint or iteration||Feedback is continuous|
|Type of Testing||Manual and Automation||Almost completely automated|
|Onus of Quality||More than quality, priority is on working code. Ensuring good quality is the collective effort by the team.||Very high-quality code only is deployed once it passes all the automated tests.|
|Level of Documentation||Light and Minimal||Light and Minimal (sometimes more than Agile though)|
|Team Skill Set||The team will have a varied skill set based on the development language used and types of testing used||The team will be a mix of development and operations.|
|Team Size||Agile teams are small so they can work together delivering code faster||Teams are bigger and include many stakeholders|
|Tools Used||JIRA, Bugzilla, Rally, Kanban Boards, etc.||AWS, Jenkins, TeamCity, Puppet|
Agile VS DevOps Infographics for quick understanding
Agile VS DevOps which one is better?
Both Agile and DevOps are here to stay. While Agile is a methodology or process that focuses on the delivery of small packets of working code to production, DevOps is more like a culture. A culture that advocates continuous delivery of code to production automatically after successful testing. Agile enhances DevOps and its benefits too. Both work hand-in-hand for a better and more quality product.