Traditional load testing practices were being followed over a decade after segregation of QA & Dev tasks which proved immense benefits. Although this practice is being followed long ago, there is always a question on high cost spent on this activity. This new approach which will significantly reduce overall cost without making any compromise on key benefits (Quality, Brand Value etc) to customers is termed as cloud-based performance testing.
Insight on Traditional (On-prem) Load Testing
In traditional methodology, Performance testing is usually conducted on-premises with whole test infra setup build on a dedicated LAN environment. This testing activity is also performed during the end of the SDLC cycle which many times miss to cover real production issues due to scope sneak.
Challenges faced in Traditional (On-prem) Load Testing
- Huge upfront cost: Traditional (On-prem) load testing involves procuring and setting up of all test related infrastructures during the start of the engagement. This led to spending more cost on infrastructure & maintenance tasks. Despite proper prior budget plan made, there is always a chance for an increase in cost or servers getting under-utilized or both.
- Laborious / Time-Consuming tasks: More time & efforts will be involved in test build set-up activities for traditional load testing. Configuration management becomes complex if not managed properly and would also lead to error judgement & schedule slippages.
- Missing to Mimic Production Environment: Due to non-availability of the specific configuration of hardware or other components, test infra setup will not be accurate sync-up with production in case of traditional load testing. This would also lead to a risk of missing production defects.
- Lack of adoption to agile methodologies: On-prem testing has less flexibility in accommodating requirement (Application or infrastructure) changes based on customer needs. This makes load testing difficult for application following agile life cycles as it would hinder in supporting continuous testing activities which would make performance test results obsolete or outdated at the end
Key Core Benefits on Cloud Based Load Testing
- Quick Scale of Infrastructure: Cloud-based infra have the efficiency to generate peak loads for enterprise performance testing in a quick span of time. Cloud data centres also have a good level of computing resources which aid in quick provisioning of virtual machines for testing. For example, Cloud vendors have an auto-scaling feature which makes easier to scale up or scale down on infrastructure based on real-time load demands. This will immensely help in overcoming performance issues faced due to test infrastructure availability.
- Global Availability: Cloud vendors have features of global infrastructure which means auto-provisioning of test machines across different geographies. This will help us to test for different network bandwidth variations and accurately mimic real users’ performance. For example: If test applications are being used by diverse geographies viz. US, UK, Australia etc., then test machines can be deployed on all specific regions which would aid in reflecting accurate test simulations.
- Pay as you go model: This is a prime advantage of using the cloud. Usage wise billing will help to bear cost only for the utilized services. Scaling resources up and down when needed would help us to reduce the overall cost involved for testing. Cloud vendors have numerous utilities like cost management & cost explorer which gives monthly reports on expenses based on consumptions made by individual account IDs. For example, Specific services can be procured & used for load testing in the case for shorter duration test runs. This avoids us making long term upfront costs spending.
- Quick time to build: Cloud vendors provide various tools & templates to make application deployment into the cloud in a short span of minutes instead of spending days or hours. Auto deployment feature available in cloud which makes it easier to integrate various cloud-hosted applications with CI – CD pipeline tools.
- Multi-Device Support Testing: Cloud vendors have readymade solutions for not only testing web-based applications but also for mobile or other emulator device-based applications. This makes it easier to test applications with multiple devices. For example, Load generators required during load test for supporting cross browsers & various mobile devices can be procured seamlessly in the cloud which aids inaccurate simulation of real-world tests.
- Environment Stability and Reliability: Most cloud vendors support for 99.99% stability & reliability for their infrastructure. This makes us not to worry much on maintenance tasks or server failovers and focus only on performing load testing activities on a continuous basis. For example, Solid stable & reliable environment helps to test longer duration (Soak/Endurance) runs without any infra hiccups.
Cloud Load Testing Tools
Popular Cloud Load Testing Tools used widely in the market are as follows:
- Micro Focus StromRunner Load
- SOASTA Cloud Test
- SmartBear Load Complete
Cloud Load test Life Cycle
- Step 1 – Finalize Performance Test Scenarios: There is no difference in designing test scenarios. Usual traditional way will be followed which covers critical business flows & transactions as we do in on-prem load testing
- Step 2 – Research for Cloud Vendors: There are a lot of cloud vendors available in today’s market. AWS, Azure & GCP are popular vendors on cloud servicing. Based on test infrastructure needs & customer goals, specific cloud vendor or multiple cloud vendors can be chosen for performance testing.
- Step 3 – Product migration to the cloud: This step is considered as deploy test infra to cloud. Application readiness should be thoroughly checked in terms of code version compatibility and software upgrades and ensure they work well without any flaws in the cloud.
- Step 4 – Execute Performance Test Runs: Cloud also supports all types of load tests which we perform in on-prem. The same methodology can be followed for test execution in the cloud. Provisioning of test machines across globally is the key advantage in cloud testing. Various SaaS-based load testing tools are also available in the market which can be explored & utilized based on requirement feasibility. Automation build tools like Jenkins, Bamboo etc can also be readily & easily integrated with cloud-based load testing tools which helps in CI & CD test runs seamlessly
- Step 5 – Monitor, Analyse and Share Results: Cloud vendors provide various monitoring tools to monitor the health of cloud resources viz. Cloud Watch in AWS. A proper check needs to be made to ensure correct integration of performance monitoring tools in a cloud environment which monitors various test infrastructure components in the cloud. Deploying APM tools On-prem to monitor cloud machines can be adopted to mitigate any risks faced using tool inside the cloud. Results gathering & sharing follows the same principle as we do in on-prem performance testing.
Different Approaches for deploying Load test in Cloud
- Target Machines (LAN) Vs Load Generators (Cloud)
- Full Infra Setup in Cloud
Above approaches describe deploying test agent on cloud and the target system can be either inside or outside the cloud. Testers can control test machines on cloud through a console to manage all test related activities.
Cloud Load Testing Entry Criteria
Below are the entry criteria that need to adhere for application to be cloud-friendly and helps in a smooth and seamless transition into the cloud environment:
- Software Concurrency: In Cloud, it is imperative that at all times to maintain code base compatible with either N or N-1 of any supporting technology stack (i.e. RHEL, TLS, Node JS, WebLogic, JBoss, Apache, Oracle, PostGre SQL etc).There will be no or feeble support for ‘Deprecated’ and ‘End-of-Life’ versions of any supporting software in the cloud.
- Isolate Database Reads: In the cloud, it is imperative that any operational reporting needs are catered only through a ‘read-only’ ODS database instance. All initiatives planned for cloud hosting would require factoring this and ensure to keep the OLTP system as BAU friendly as possible which always helps to ensure optimal throughput and performance
- Limit PL/SQL code & Alter Performance Criteria for DB: In cloud, it is important that all teams make sure to keep any-to-all business logic in the application tier and move their stored procedures, functions and triggers out of the DB tier. This would drastically reduce storage cost and improve network latency. For code retained in the DB, it is expected to make it run under 20ms and as tested against full production sized data & transaction volumes. Exceptions can be applied only for batch jobs which get scheduled during non-business hours.
Cloud based Load testing can become complex if things are not aligned in a proper way. Use of right approach & strategy would aid in managing activities in a controlled way.
You may be interested: