There have been major changes in the way software and applications are built in software companies. Enterprises have moved beyond the conventional waterfall development model to more flexible Agile development environments. The whole idea of agile development methodology is to manage change incrementally and effectively in software and external functionality, and to speed up the development of quality software. And a major challenge here is to provide quick feedback on the change introduced in the software and the impact of it. The cornerstones of a proper agile approach to software development are early testing, rapid feedback, and effective communication.
Load testing in agile environment
Load testing is feeding the system with largest/ toughest tasks it can operate with, to see if the system can endure the stress. Historically, in waterfall development model, load testing gets pushed to the end of the project, assuming that only minor tweaks will be required to meet the performance criteria. With agile, load testing should be carried out often, and incrementally. But due to lack of adequate, trained and dedicated testing resources, lack of flexibility of load testing tools, lack of proper criteria, or due to infrastructure limitations or the common misconceptions among people around what’s possible with load testing and performance testing, these often get pushed to the end of agile development process.
Unless employees get beyond the following testing myths and delve deeper into the process, and realize what all is possible with today’s performance testing capabilities, we can’t do justice to the fully agile concept. So, here are the common misconceptions that employees should get rid of, to drive their testing initiatives deeper into the agile environment.
Myth #1: Load testing is all about breaking the system, so, unless the system is fully developed, load testing can’t be attempted.
Load testing is like a full-throttle, threshold limit or peak-usage stress test. Thus, in a way, people think of it as forcing the entire system to its breaking point. So, unless the entire system is built, how can you break it? Naturally load testing can’t be fitted into the small, iterative batch of Agile; thinks most of them.
You can help dispel this myth by creating a suite of modular performance test scenarios for common queries and crucial transactions. Performance test can be carried out in individual modules as easily as functional tests are done. Performance tests should work alongside functional tests with every sprint. This will prove that there’s lot more to performance testing than its objective mentioned previously, and will unveil the different ways it can fit into the usual Dev-Test-Ops cycle.
Myth #2: It’s risky
Load testing might sound risky, but, it is always safe to run a controlled test than to let the system fail under scenarios which were easily preventable and thereby avoid putting your reputation, revenue and users in jeopardy because of it.
Myth #3: It takes a long time in Agile
This can be a valid excuse if you push the load testing towards the end of the project, but in agile environment, the process of creating and executing the test at scale needn’t be that complex and time consuming. Think about the requirements upfront and put performance SLAs (Service Level Agreements) on the task board. This will help to automate basic testing processes. In fact small, iterative tests with incremental objectives allow testing in equal or much less time.
Myth #4: Developers needn’t concentrate on Performance until Functionality is complete
One of the key ideas of Agile programming is to find issues early and fix them fast and at lower costs, which is why we find a lot of testers learning to code, and adopting trends like automated tests and test-driven programming. This helps them run tests alongside development. The same is expected from load testing. Isn’t it always better to find errors or issues right when the code is written than to skim through the entire program to find a tiny line of problematic code at the end of development? Many back end interfaces like, Web services or SOAP open up opportunities for testing performance along various application paths even before the app functionality is completed.
Myth #5: Load Testing Doesn’t Involve the Whole Team like in Functional Testing
Earlier, we had a single individual or a group dedicated to conduct specific tests like the performance testing, but in an agile environment, everyone is a Tester (or developer) and all members contribute in every phase of software development to achieve the quality end product. Though there are testing experts and QA specialists, developers are still made to write their own test cases and similarly, operation specialists can identify issues and work to fix them.
Myth #6: Load testing is unnecessary if we do thorough testing in lab
Testing in a lab environment is good for testing the app, but it doesn’t cover the broader infrastructure. Many a times, we have seen serious, unexpected issues cropping up outside of the apps. Load testing in production can’t replace lab testing, but it reveals issues that other tests can’t, like, Database issues, Network bandwidth issues, unbalanced web servers, App server issues, DNS routing problems and Firewall capacity issues.
Myth number #7: The right load test tool will do everything for me
You can’t trust on tools to do every task perfectly, however smart the tool may be. You will have to do certain basic tasks yourselves like, setting up meaningful KPIs, realistic master data, creating valid, repeatable test cases, realistic master data, analyze the results, etc. Eliminating the human involvement completely during the test might reduce the confidence in the code you deliver.
Myth number #8: Load testing is too manual
From the previous point, it’s sure that you have tools to automate certain aspects of Load testing, so that the test isn’t completely manual. There are so many ways you can automate load testing, it’s just about choosing the right processes to automate.
Load testing can reveal functional problems in the code that can’t be otherwise detected using single-user tests. However, unless you make load testing an integrated part of the development process, you can’t completely say that you have an agile development methodology, nor can you extract its benefits.