Wednesday, 24 July 2024

Azure App Load Testing PREVIEW

 

How to use Azure Load Testing

Currently, the service is in preview and allows you to simulate traffic for your apps, regardless of where they are hosted. Developers and testers can use it to optimize their applications regarding performance, scalability, and capacity. Load test can be created using Apache JMeter, a well-known open-source load and performance tool.

While Azure Load Testing supports applications hosted in other clouds, additional and detailed resource metrics in Azure will help identify performance bottlenecks. You can use CI/CD workflows to automate regression testing.

Limited availability

Starting with Azure Load Testing is relatively easy, as you would expect from Azure native resources. Create a new resource, select Azure Load Testing, and you are good to go. As the service is still in preview, only 5 Azure regions are currently supported (North Europe, East US, and East US2, South Central US, and Australia East). But since it's Azure, you still get worldwide coverage.

Azure App Load Testing 

Three new self-explanatory roles will be added to Access control (IAM) after deploying the first Load Tester resource:

Three Roles Added 

After assigning the correct role, sign in to your tenant again, and you will see the following interface: 

App testing Interface 

The way Azure Load Testing works is as mentioned using JMeter scripts. These will run in the Test engine, and you will be able to target a wide range of platforms such as App Services, AKS, Databases, Storage accounts, and VM's. the result will be processed by Azure Monitor and displayed in a dashboard.

Dashboard app testing

When creating a new test, you will be presented with a setup wizard as shown below:


Setup Wizard 

You are able to set up Environment variables and Secrets. Configure the number of threads and configure test criteria: 

Test criteria load testing 

Azure Load Testing integrates with Azure Monitor to capture server-side resource metrics for Azure-hosted applications. You can specify which Azure components and resource metrics to monitor for your load test run. To create a test, upload a JMeter file (JMX) to your Test plan:

create new test plan Load 

An easy way to design JMeter files is by using the online editor available here.

 

The cool thing about Azure Load Testing is that after the test plan has been created, it will start provisioning automatically and run the specified tests:

test run 

After just a few minutes, the first results will automatically appear. Azure Load Testing then also allows you to compare results, rerun the test, view the app components, or download the result file:

Testrun result file

It will even show you the client-side metrics and if you are running Azure workloads, the server-side metrics also.

Azure Workload 

Create and run a load test with Azure Load Testing

 

Create and run a load test with Azure Load Testing

In this quickstart, you'll load test a web application by creating a URL-based test with Azure Load Testing in the Azure portal. With a URL-based test, you can create a load test without prior knowledge about load testing tools or scripting. Use the Azure portal experience to configure a load test by specifying HTTP requests.

To create a URL-based load test, you perform the following steps:

  1. Create an Azure Load Testing resource
  2. Specify the web application endpoint and basic load configuration parameters.
  3. Optionally, add more HTTP endpoints.

After you complete this quickstart, you'll have a resource and load test that you can use for other tutorials.

Prerequisites

What problem will we solve?

Before you deploy an application, you want to make sure that the application can support the expected load. You can use load testing to simulate user traffic to your application and ensure that your application meets your requirements. Simulating load might require a complex infrastructure setup. Also, as a developer, you might not be familiar with load testing tools and test script syntax.

In this quickstart, you create a load test for your application endpoint by using Azure Load Testing. You configure the load test by adding HTTP requests for your application entirely in the Azure portal, without knowledge of load testing tools and scripting.

Create an Azure Load Testing resource

First, you create the top-level resource for Azure Load Testing. It provides a centralized place to view and manage test plans, test results, and related artifacts.

If you already have a load testing resource, skip this section and continue to Create a load test.

To create a load testing resource:

  1. Sign in to the Azure portal by using the credentials for your Azure subscription.

  2. From the Azure portal menu or the Home page, select Create a resource.

  3. On the Marketplace page, search for and select Azure Load Testing.

  4. On the Azure Load Testing pane, select Create.

  5. On the Create a load testing resource page, enter the following information:

    FieldDescription
    SubscriptionSelect the Azure subscription that you want to use for this Azure Load Testing resource.
    Resource groupSelect an existing resource group. Or select Create new, and then enter a unique name for the new resource group.
    NameEnter a unique name to identify your Azure Load Testing resource.
    The name can't contain special characters, such as \/""[]:|<>+=;,?*@&, or whitespace. The name can't begin with an underscore (_), and it can't end with a period (.) or a dash (-). The length must be 1 to 64 characters.
    LocationSelect a geographic location to host your Azure Load Testing resource.
    This location also determines where the test engines are hosted and where the test framework requests originate from.

     Note

    Optionally, you can configure more details on the Tags tab. Tags are name/value pairs that enable you to categorize resources and view consolidated billing by applying the same tag to multiple resources and resource groups.

  6. After you're finished configuring the resource, select Review + Create.

  7. Review the settings you provide, and then select Create. It takes a few minutes to create the account. Wait for the portal page to display Your deployment is complete before moving on.

  8. To view the new resource, select Go to resource.

    Screenshot that shows the deployment completion screen.

  9. Optionally, manage access to your Azure Load Testing resource.

    Azure Load Testing uses role-based access control (RBAC) to manage permissions for your resource. If you encounter this message, your account doesn't have the necessary permissions to manage tests.

    Screenshot that shows an error message in the Azure portal that you're not authorized to use the Azure Load Testing resource.

Create a load test

Azure Load Testing enables you to quickly create a load test from the Azure portal by specifying the target web application URL and the basic load testing parameters. The service abstracts the complexity of creating the load test script and provisioning the compute infrastructure.

To create a load test for a web endpoint:

  1. Go to the Overview page of your Azure Load Testing resource.

  2. On the Get started tab, select Add HTTP requests > Create.

    Screenshot that shows how to create a URL-based test from the resource overview page in the Azure portal.

  3. On the Basics tab, enter the load test details:

    FieldDescription
    Test nameEnter a unique test name.
    Test description(Optional) Enter a load test description.
    Run test after creationSelected. After you save the load test, the test starts automatically.
    Enable advanced settingsLeave unchecked. With advanced settings, you can add multiple HTTP requests and configure more advanced load test settings.
  4. Next, configure the application endpoint and load test parameters:

    FieldDescription
    Test URLEnter the complete URL that you would like to run the test for. For example, https://www.example.com/products.
    Specify loadSelect Virtual users to specify the simulated load based on a target number of virtual users.
    Number of virtual usersEnter the total number of virtual users to simulate.

    Azure Load Testing distributes the simulated load evenly across parallel test engine instances, with each engine handling up to 250 virtual users. For example, entering 400 virtual users results in two instances with 200 virtual users each.
    Test duration (minutes)Enter the duration of the load test in minutes.
    Ramp-up time (minutes)Enter the ramp-up time of the load test in minutes. The ramp-up time is the time to reach the target number of virtual users.

    Alternately, select the Requests per seconds (RPS) to configure the simulated load based on the target number of requests per second.

  5. Select Review + create to review the load test configuration, and then select Create to start the load test.

    Screenshot that shows the quick test page in the Azure portal, highlighting the option for specifying virtual users.

After the load test is saved, Azure Load Testing generates a load test script to simulate traffic to your application endpoint. Then, the service provisions the infrastructure for simulating the target load.

View the test results

Once the load test starts, you're redirected to the test run dashboard. While the load test is running, Azure Load Testing captures both client-side metrics and server-side metrics. In this section, you use the dashboard to monitor the client-side metrics.

  1. On the test run dashboard, you can see the streaming client-side metrics while the test is running. By default, the data refreshes every five seconds.

    Screenshot that shows results of the load test.

  2. After the load test finishes, you can view the load test summary statistics, such as total requests, duration, average response time, error percentage, and throughput.

    Screenshot that shows test run dashboard, highlighting the load test statistics.

  3. Optionally, change the display filters to view a specific time range, result percentile, or error type.

    Screenshot that shows the filter criteria for the results of a load test.

Add requests to a load test

With Azure Load Testing, you can create a URL-based load test that contains multiple requests. You can add up to five HTTP requests to a load test and use any of the HTTP methods, such as GET, POST, and more.

To add an HTTP request to the load test you created previously:

  1. In the Azure portal, go to your Azure Load Testing resource.

  2. In the left navigation, select Tests to view all tests.

  3. Select your test from the list by selecting the corresponding checkbox, and then select Edit.

    Screenshot that shows the list of tests in the Azure portal, highlighting the Edit button to modify the load test settings.

  4. On the Basics tab, select Enable advanced settings.

    With advanced settings, you can define multiple HTTP requests for a load test. In addition, you can also configure test criteria and advanced load parameters.

    When you switch to advanced settings, the test URL isn't automatically added to the test. You need to re-add the test URL to the load test.

  5. Go to the Test plan tab, and select Add request to add a request to the load test.

  6. On the Add request page, enter the request details, and then select Add.

    FieldDescription
    Request formatSelect Add input in UI to configure the request details through fields in the Azure portal.
    Request nameEnter a unique name for the request. You can refer to this request name when you define test fail criteria.
    URLThe URL of the application endpoint.
    MethodSelect an HTTP method from the list. Azure Load Testing supports GET, POST, PUT, DELETE, PATCH, HEAD, and OPTIONS.
    Query parameters(Optional) Enter query string parameters to append to the URL.
    Headers(Optional) Enter HTTP headers to include in the HTTP request.
    Body(Optional) Depending on the HTTP method, you can specify the HTTP body content. Azure Load Testing supports the following formats: raw data, JSON view, JavaScript, HTML, and XML.

    Screenshot that shows how to add a request to a URL-based load test in the Azure portal.

  7. (Optional) Add more requests to your load test.

  8. (Optional) On to the Load tab, configure the load parameters.

    Notice that the advanced settings enable you to configure the number of test engine instances and choose from different load patterns.

    Screenshot that shows the Load tab when configuring a load test in the Azure portal.

  9. Select Apply to update the load test configuration.

  10. On the Tests page, select the test, and then select Run to run the load test with the updated configuration.

    Notice that the test run dashboard displays metrics for the different HTTP requests in the load test. You can use the Requests filter to only view metrics for specific requests.

    Screenshot that shows the test results dashboard in the Azure portal, showing the results for the different requests in the load test.

How did we solve the problem?

In this quickstart, you created a URL-based load test entirely in the Azure portal, without scripting or load testing tools. You configured the load test by adding HTTP requests and then used the load test dashboard to analyze the load test client-side metrics and assess the performance of the application under test. Azure Load Testing abstracts the complexity of setting up the infrastructure for simulating high-scale user load for your application.

You can further expand the load test to also monitor server-side metrics of the application under load, and to specify test fail metrics to get alerted when the application doesn't meet your requirements. To ensure that the application continues to perform well, you can also integrate load testing as part of your continuous integration and continuous deployment (CI/CD) workflow.

Clean up resources

 Important

You can reuse the Azure Load Testing resource that you created for other Azure Load Testing tutorials and how-to articles.

If you don't plan to use any of the resources that you created, delete them so you don't incur any further charges. If you've deployed the sample application in a different resource group, you might want to repeat the following steps.

To delete resources by using the Azure portal:

  1. Select the menu button in the upper-left corner, and then select Resource groups.

  2. From the list, select the resource group that you created.

  3. Select Delete resource groupScreenshot of the selections to delete a resource group in the Azure portal.

  4. Enter the resource group name. Then select Delete.