Azure Load Testing Preview is a fully managed load-testing service that enables you to generate high-scale load. The service simulates traffic for your applications, regardless of where they're hosted. Developers, testers, and quality assurance (QA) engineers can use it to optimize application performance, scalability, or capacity.
Quickly create a load test for your web application by using a URL, and without prior knowledge of testing tools. Azure Load Testing abstracts the complexity and infrastructure to run your load test at scale.
For Azure-based applications, Azure Load Testing collects detailed resource metrics to help you identify performance bottlenecks across your Azure application components.
You can automate regression testing by running load tests as part of your continuous integration and continuous deployment (CI/CD) workflow.
Azure Load Testing enables you to test private application endpoints or applications that you host on-premises.
Ease of use.
Take any JMeter script and plug it into the load test.
Measure both the client-side and server-side metrics during load tests.
Configurable with virtual users and simulated load.
Integrate with Azure Pipelines or GitHub.
Can use managed identities in Azure.
There are a few things that load testing helps with
Test your scalability. Can you handle an increase in traffic? How quickly?
Test how your application performs under stress. Do your application and the dependent services work as expected?
Test your signals and monitor! The signals, logs, and monitoring data will significantly increase when the load increases. Can you still make sense of this information, or do you need to adjust how you log and monitor your system?
Verify that you get your alerts. Can you get the alerts you expect for unexpected outages, dependency failures, scalability issues, resource exhaustion (CPU/Memory/Disk IO, SNAT port exhaustion, and more)?
Does your load balancer work? Is traffic successfully balanced between instances and regions?
Measure your server-side metrics. See how the services you use to support your solution behave and any flags being raised during load.
Measure your client-side metrics. Track response times, the number of requests happening per second, and how many users are being loaded onto the system - this helps in correlating the data with what happens on the service side.
high-scale Load tests
Identify performance bottlenecks by using high-scale load tests
Performance problems often remain undetected until an application is under load. You can start a high-scale load test in the Azure portal to learn how your application behaves under stress. While the test is running, the Azure Load Testing dashboard provides a live update of the client and server-side metrics.
After the load test finishes, you can use the dashboard to analyze the test results and identify performance bottlenecks. For Azure-hosted applications, the dashboard shows detailed resource metrics of the Azure application components. Get started with a tutorial to identify performance bottlenecks for Azure-hosted applications.
Azure Load Testing keeps a history of test runs and allows you to visually compare multiple runs to detect performance regressions.
Enable Automated load testing
You can integrate Azure Load Testing in your CI/CD pipeline at meaningful points during the development lifecycle. For example, you could automatically run a load test at the end of each sprint or in a staging environment to validate a release candidate build.
Get started with adding load testing to your CI/CD workflow to quickly identify performance degradation of your application under load.
In the test configuration, you specify pass/fail rules to catch performance regressions early in the development cycle. For example, when the average response time exceeds a threshold, the test should fail.
Azure Load Testing will automatically stop an automated load test in response to specific error conditions. You can also use the AutoStop listener in your Apache JMeter script. Automatically stopping safeguards, against failing tests further incurring costs, for example, because of an incorrectly configured endpoint URL.
You can trigger Azure Load Testing from Azure Pipelines or GitHub Actions workflows.
How does Azure Load Testing work?
Azure Load Testing test engines abstract the required infrastructure for running a high-scale load test. The test engines run the Apache JMeter script to simulate a large number of virtual users simultaneously accessing your application endpoints. When you create a load test based on a URL, Azure Load Testing automatically generates a JMeter test script for you. To scale out the load test, you can configure the number of test engines.
Azure Load Testing uses Apache JMeter version 5.4.3 for running load tests. You can use Apache JMeter plugins that are available on https://jmeter-plugins.org in your test script.
The application can be hosted anywhere: in Azure, on-premises, or in other clouds. To load test services that have no public endpoint, deploy Azure Load Testing in a virtual network.
During the load test, the service collects the following resource metrics and displays them in a dashboard:
Client-side metrics give you details reported by the test engine. These details include the number of virtual users, the request-response time, or the number of requests per second.
Server-side metrics provide information about your Azure application components. Azure Load Testing integrates with Azure Monitor, including Application Insights and Container insights, to capture details from the Azure services. Depending on the type of service, different metrics are available. For example, metrics can be for the number of database reads, the type of HTTP responses, or container resource consumption.
Azure Load Testing automatically incorporates best practices for Azure networking to help make sure that your tests run securely and reliably. Load tests are automatically stopped if the application endpoints or Azure components start throttling requests.
Data stored in your Azure Load Testing resource is automatically encrypted with keys managed by Microsoft (service-managed keys). This data includes, for example, your Apache JMeter script.