Performance has always been an integral part of “application quality” but the significance of performance and its very scope has changed enormously with the rapid growth in online channels, diverse mobile networks and changes in IT adoption through Rapid Application Deployment (DevOps/ Continuous Integration, etc). Rapid expansion of the digital world including heavy usage of frontend technologies (browser based) has increased the need for improving performance and user experience, especially in varied and unpredictable network conditions.
It has become imperative for organisations to tightly integrate “performance testing” into the product development cycle. However, traditional practices do not allow early, continuous, parallel and realistic testing in a heterogeneous environment due to a number of factors such as:
1. Performance Testing (PT) traditionally being done only in the final stages of the development cycle
2. Dependencies on other internal & external systems
3. Not testing for real environment/network conditions
4. Scaled down PT environment
5. Lack of exclusive PT environment as well as working on a shared configuration that differs from production environment, etc.
These shortcomings played a major role in paving the way for two techniques sweeping into performance testing, Service Virtualisation and Network Virtualisation, both of which help in identifying application performance bottlenecks utilizing virtualisation techniques.
Service Virtualisation in Performance Testing
Service Virtualisation, as a method that emulates the behavior of specific components in heterogeneous component-based applications that are currently under development or enhancement, can play a major role in performance testing by providing the team with access to dependent system components (that are needed to exercise an application under test), but are unavailable or difficult-to-access or expensive to deploy / access for testing purposes.
SV tools can simulate the behaviour of actual components, which in turn can reduce the dependency on heavy infrastructure, third-party systems, pay-per-use services, etc. In addition, SV enables performance testing to be shifted to the early stages of the project when there isn’t a full blown environment in terms of hardware & other dependent systems.
More and more applications are being developed in SOA model. This should be taken as an advantage for performance testing since it can be done continuously on the developed component, rather than waiting for the complete end-to-end infrastructure and dependent application to be ready. In addition, performance testing at a component level helps in identifying the true capacity of the component and also understanding component behavior when dependent service / component is under-performing.
Network Virtualisation in Performance Testing
In today’s swarming mobile app marketplace filled with abundant choices and almost non-existent switching costs, a compelling user experience is essential. It has become important to optimise mobile applications for different networks in different locations. More and more apps are dumped by users for performance issues, earning them a bad reputation in the market. With a lot of applications being prone to changes in network conditions, it is vital to test for different network conditions (4G, 3G, 2G+, LANs, WANs, remote office networks, home networks and satellite networks).
Network Virtualisation is becoming a vital tool for not only performance engineers, but also in functional testing during the development phase. Performance and Automation Testing during continuous integration can leverage on Network Virtualisation to test different network conditions and as a result, more and more Performance and Automation Testing Tools are getting integrated with Network Virtualisation.
Adopting Network Virtualisation in Performance Testing offers the ability to identify network related performance issues early rather than in the production stage. This reduces the time to test different network conditions as well as costs to procure different network SIMs, devices, cloud services, etc., and enables testing of applications under near-world authentic network conditions.
Service Virtualisation and Network Virtualisation enable proactively fixing application performance issues before going to production and therefore investing in these tools yield better ROI. However, organizations should be aware that adopting these practices may not instantly yield the desired outcome. An organization must show strong conviction to adopt Virtualisation practices, deploy associated technology, train team members and establish procedures, especially in the case of SV. If adopting SV in a complex environment, it is recommended that a step-by-step approach be considered by gradually virtualizing your components whilst realizing quick gains.
Traditional performance testing approaches (depending on building a production “replica”) are becoming highly challenging, time consuming and expensive because new generation applications are exceedingly complex, heterogeneous, distributed and reliant on component-based architectures or third-party cloud systems and users of these applications are spread across different network and geographic conditions.
Therefore,switching to next generation performance testing using Virtualisation techniques is inevitable.