It’s no secret performance is key in new software of any kind. We live in an age where the world is connected, information is instant and we can virtually live our lives through a handheld device. As such, end users demand software that doesn’t just work, but works well. For developers, this means that if a product can’t perform, it can’t succeed.
In a traditional software development model, performance testing is often relegated to the end of the delivery cycle. This is because, generally speaking, performance testing requires a more-finalised product to be able to get meaningful results. Any changes to the code that are made after a performance test is executed could result in another performance test being required to ensure those changes did’t have any negative performance impact, increasing costs. In other words, it could be argued that there is not enough value in assessing the performance of the product until all its functions have been implemented, most of the bugs have been ironed out, and you are ready to measure it against a set of clear parameters.
The negative aspects of this waterfall approach is that any major structural, performance-based issue would only tend to be discovered at a very late stage in the lifecycle. If such issues are found, the cost to re-examine the architecture from the ground-up could be devastating, or event project-ending.
This is where Agile Performance Testing can step up. It requires companies to think of new ways to adapt to aggressive timelines and achieve a competitive speed to market.
The challenges of evolving from traditional delivery models
Let’s say a company gets contracted to build a ticketing website for the 2020 Tokyo Olympic Games. Aside from being easy to use, functional and aesthetically pleasing, the website needs to be able to quickly process queries from thousands of users at once. And this is not just a group of people doing the same thing; at any given point, you’ll have users checking prices, looking up where to go, buying tickets, checking event timetables, entering the website, leaving the website, and so on and so forth.
In a traditional, non-Agile format, you would see this project progress through analysis, development, quality assurance activities, etc. with potentially little integration between each stage. Developers will have created a website that they hope is as close to market as possible, and testing is approached with the goal of identifying and rectifying any bugs.
This is especially applicable to the age when software had to be fully developed before being dropped into servers, which created an inefficient, back-heavy progression towards a product that’s ready for launch.
Agile environments are created with a different philosophy in mind, in the sense that delivery is approached with the intention of preventing bugs, not finding them. Nowadays, increased server-based development helps alleviate the issue. Of course, the project will still involve internal, automated and crowdsourced testing in an effort to smooth out the creases, but developing a strategy to bring performance testing to the fore is virtually guaranteed to save time and money in the long run.
Stepping back and shifting left
Here we come back to the idea of ‘shifting left’. That is, to shift all stages of the development and test cycle to the left so that they happen in parallel with one another and not sequentially as would be the case in a traditional waterfall project. In this case, the aim is to bring performance testing forward and make it a part of a continuous delivery pipeline that ultimately maximises efficiency while improving the quality of the finished product.
To shift performance testing to the left means testers need to define how it can add value in earlier stages of development. The software will still need rigorous testing once completed, but by adding value earlier in the cycle, testers can clear hurdles before they get bigger and lower the time and money required to finally release the software. Picking up defects early is simply more profitable.
Exploring the benefits of Agile performance testing
In the case of the 2020 Olympic Games ticketing system, the aforementioned company needs to look for ways to performance test the website concurrently with development. In practice, this can be achieved by overlapping with other forms of testing. For example, the code written to test the functionality of the login screen may be similar to the script for a performance test. Rather than waste time separating both into completely isolated tasks, the tester may then be able to use information gathered from the functionality test to measure its performance at that time. By doing this across all tasks as part of each sprint in an Agile project, testers are able to reduce the overall time spent running repetitive performance tests.
However, this achieves more than just creating small time efficiencies wherever possible. It also increases the likelihood that bugs will be discovered earlier in development, which almost always makes it cheaper and faster to fix. If you have tested feature A, B, C and D independently of one another, it’s far easier to identify exactly where the issue lies. If all performance testing is left until the end and performed on feature A, B, C and D at the same time, it will cost far more time and money to locate and rectify the defect.
Another great advantage of Agile performance testing can be found in scenarios where new features are delivered to an existing product. If a company were to launch an app and release a poorly tested update three months later, they would risk exposing the end user to the frustration of unresolved defects or poor performance. With Agile performance testing processes in place, the update can be adequately prepared prior to release with far less risk of impacting the existing software.
The road ahead
There is no doubt that optimising performance testing for an Agile framework is still a challenge, but it’s equally evident how much companies can benefit from it. Changing software patterns are opening pathways to more efficient software development strategies, but it’s important that the Agile philosophy is brought forward as an overarching mindset – in the end, it will need to be tailored to each project.
Is your organisation looking to adopt Agile methodology and/or have projects you need Performance Tested? Contact us today.