Why Automation Testing is at the Centre of Agile Development
Shreya Bose, Technical Content Writer at BrowserStack - December 4, 2020
Meet Bob the Developer (who also runs tests when he has to).
Bob has been working on an MMORPG (Massively Multiplayer Online Role-Playing Game) that is exceptionally popular. It is enjoyed by millions of players across the world and is a big hit because of its quests. Players expect new quests, new characters, new weapons, abilities, and armor for existing characters every two weeks.
So Bob has to work on new features consistently to keep users happy. He also has to test the product every time a new feature is added – to ensure that the new feature is working AND that it does not damage any of the existing features – every single one of them. This entire operation has to be accomplished within a few days.
Naturally, manual testing is not an option in this widespread scenario.
As is well-known, agile development aims to release products within short timelines, mainly to keep up with user expectations. Additionally, users also expect software to be flawless, bug-free, and perpetually high-functional. All of this can only be achieved with automation testing.
This article will explore why automation testing is essential to agile development.
What was it like before Agile?
Before the emergence of Agile development principles, software development often followed the Waterfall Model. In fact, Waterfall was the first model commonly used for software development.
As the name suggests, this model treated development in a linear fashion, like the flow of a waterfall. Developers work on phases, and each step must be completed before another begins.
As the image displays, testing in the waterfall model comes at the end of all development. That means, to use the example in the intro, Bob will have to finish the development of a new feature (let’s say a whole new quest) before he can test it. If bugs show up, Bob will have to return to his code, comb through every line, and try to find the error(s).
Additionally, even the slightest change in requirements (say, a change has to be made due to some users’ feedback that has come in a day ago) requires the whole process to be repeated. More coding, more testing. Needless to say, this process is not remotely time-efficient.
How did Agile fix the issue?
As the image shows, Agile development changes the games by making it more flexible. While using Agile principles, Bob would develop, test, and release a basic but fully functional version of the quest to meet the users’ demand. Then he would go back and keep refining the quest, adding new design, gameplay elements, weapons, character styles so that the users stay interested and delighted.
Agile focuses on releasing working software. To do so, developers and testers work in teams to complete and release functioning applications. The database, business logic, and user interface of a part of the software is developed and pushed to production at one go, instead of the whole application.
To do this at high speed (usually within a couple of weeks), collaboration is indispensable. Teams have to interact frequently so that everyone is on the same page about what is being built, every member’s responsibility, and the overall team alignment.
How does Automation Testing Fit into Agile?
Accelerated product release requires accelerated coding, which needs accelerated testing. Every time an application (or updates to the application) hits the market, it needs to be perfectly functional for each user. Otherwise, users will simply switch to a competitor and also post a slew of negative reviews that will lead to a loss of credibility for the application.
The only way to ensure flawless functioning is to test each feature and update comprehensively. To do so manually in restricted timelines for complex, feature-rich software is impossible. Automation is the only recourse.
Automation testing in Agile allows for QAs to create test cases that will run automatically every time new code is pushed to the code repository for a specific application. This practice is called Continuous Testing in DevOps and ensures that new code is bug-free before it hits the production environment.
Continuous Testing in Agile is a stage in a development system named CI/CD, AKA Continuous Integration/Continuous Deployment. CI/CD automates the process of code moving through the stages of Development -> Testing -> Deployment.
Automation testing in Agile is implemented via several tools and frameworks such as Selenium and Cypress. Implementation of CI/CD also requires a specific set of tools, namely Jenkins, Travis CI, TeamCity, Bamboo, CircleCI, Azure Pipelines, etc.
Using these tools, QAs can develop test cases in alignment with the nature and need of the application at hand. Once crafted, these test cases are run automatically on each piece of code added to the existing application. The tests verify that each line of code is bug-free and that newly created code does not damage or interfere with the existing features (via regression testing).
Additionally, QAs require access to multiple real devices, browsers, and operating systems in order to run their tests. Remember that users will access any software via a massive range of device-browser-OS combinations. To stand a chance of success, the software must function perfectly on all these combinations (or as many as possible).
Once again, running cross browser tests manually on such a vast number of devices is out of the question. Automation is the only recourse to ensure cross-browser and cross-platform compatibility. Note that real devices are non-negotiable, as emulators or simulators simply do not offer the real world conditions required to verify software functionality with 100% accuracy.
BrowserStack offers a cloud Selenium grid of 2000+ real browsers and devices tailored for automation testing in Agile. Devs and testers can also utilize integrations with the most popular CI/CD tools to execute DevOps-aligned testing practices. BrowserStack’s real device cloud also enables the execution of Cypress tests on 30+ browser versions – with instant, hassle-free parallelization.
All tests run on the BrowserStack cloud monitor software performance in real-world scenarios. This includes features like geolocation testing, IP localization, low battery, varying network connectivity and much more. This ensures completely accurate results for every single test.
Read More: Automation Best Practices to Follow
Automation is at the heart of effective Agile development. Without automation testing, the speed required to actually make development “agile” cannot be brought into the picture. Automation makes life easier for devs and testers, creates better software, and keeps users happy.