Performance Testing in application Design
There are many articles on the huge benefits of performance testing integrated into the development process and the concept of shift-left performance testing.
We have also discussed the concepts of Load Test Driven Development which involves the creation of performance testing in parallel with the code development and sits alongside Test Driven Development.
We are going to consider in this post how involving performance testing resources in the application design process can be a benefit.
History of performance testing¶
Not so long-ago performance testing was, like other Quality disciplines, something that was done after development and just before go-live.
Thankfully, more recently all aspects of quality have become integrated into the development process with testing embedded into development teams with developers being instrumental in advocating quality throughout application development.
Now we are huge champions of performance testing being involved in all aspects of application development and we consider inclusion in application design another step in that journey.
In a world of huge online competition for almost everything and the fact that user experience is quite rightly everything when it comes to technology the performance of your application is very important.
If you had to choose between an application that performed poorly but was functionally very rich or an application that performed really well but had some missing functionality which one would you choose? Clearly there is no reason to have to choose if all aspects of quality are included during development and this includes the stage at which the technology stack is defined.
Application design¶
It is not normal, in my experience, to have performance testing represented in the technical sessions that start to build out a new technology platform or even an enhancement to an existing one.
Clearly application design workshops need architect, tech leads, product managers, business analysts, project managers, scrum masters etc these roles are commonplace in these types of sessions but testing, and especially performance testing specialists, are overlooked.
Now I am conscious that this is a generalisation and that some organisations do include quality engineers in design sessions but as a rule I do not think it is commonplace.
The benefits performance testers bring¶
We are going to look at some of the benefits having a performance tester in your application design sessions can bring.
Knowledge of your existing applications¶
More often or not new applications or services will need to interact with existing applications in your estate. And as most organisations do not have many performance testing resource it is likely that those that do have will have been involved in the performance testing of the existing applications.
This can provide benefit in several ways, firstly, in that they will understand how an application works from a functional and business perspective as this knowledge is required in order to write suitable performance tests.
Secondly, they will understand whether existing applications or services that your new application will interact with can support predicted volumes.
Knowledge of applications you may be replacing¶
Like above but if the new application replaces an existing one then lessons learnt from the original performance testing can be applied to the design of the new application.
New applications do for the most part still need to support the same business processes that the one it is going to replace does and the volumes and business processes will be similar and to highlight these in design can influence the technology direction taken.
An understanding of the business volumes and where bottlenecks could be¶
Performance testers live and breath volumes, load and concurrency as its understanding in any business is key to building suitable and relevant performance test.
Understanding where business volumes are at their highest can influence the technology chosen or the platform to host the services being built on.
Knowledge in other organisations¶
If your performance testing resource has worked in other organisations their knowledge of technology that scaled and performed well could help influence your applications.
Whilst fundamentally technology platforms are scalable and its normally application that is the root cause of performance related issues having input from someone who has performance tested on platforms you may be considering is a real benefit.
The workplace is much more organic now and the movement of people between and within organisations provides your performance resources with observations that you may not have considered.
Another perspective¶
Very simple one but nevertheless important, performance testers do bring a unique perspective to application design in that they are primarily looking at how the end solution will perform and where interaction with external systems may be problematic.
Looking at redundancy across components¶
Like the above but focusing on how you want to ensure that your application design includes redundancy and availability across its components.
This is again a specialist area for performance testers as resilience is fundamental to any performance testing strategy and is something that again can influence the technology platforms that you use to deliver you applications.
Paves the way for the other early shift left performance testing¶
We have spoken about the fact that we are passionate about moving performance testing to the left in terms of its position in the software development lifecycle and as part of continuous delivery and continuous integration.
This early integration into the programme helps support that in terms of getting an early indication of the application and problem the application is looking to solve.
Conclusion¶
Whilst we are approaching this from a performance testing perspective as you would expect we truly believe that application design can benefit from all technology disciplines that will eventually be required to contribute to its success.
Whilst we are not suggesting that application design should be led by performance, as clearly it needs to solve a business problem or improve and organisations offering, but nonetheless having considered performance in design can only provide, if nothing else, a different perspective to the process.