Setup Load Test
What is Load Testing?
Load testing is a critical discipline in performance engineering that involves simulating realistic user traffic and conditions to evaluate how an application behaves under stress. Its primary goal is to determine the system's capacity, identify performance bottlenecks, and ensure the application remains stable and responsive as user demand increases.
Significance of Load Testing:
Capacity Planning: Determine the maximum number of users your system can handle before performance degrades.
Bottleneck Identification: Pinpoint specific components (database queries, API endpoints, server resources) that slow down under load.
Scalability Validation: Confirm that your infrastructure scales effectively to meet peak demand.
Risk Mitigation: Proactively fix performance issues before they lead to production outages or poor user experience.
PerfAgents streamlines this process by enabling you to leverage industry-standard JMeter load tests while seamlessly scaling load generation across distributed cloud infrastructure.
Create Your First Load Test
After selecting a project, you can configure and execute your first load test. Navigate to Create Load Test from the Left Navigation. The load test creation process is structured into three main configuration sections:
Section 1: Test Configuration
This section defines the identity and script for your load test.
Test Name (Required)
A descriptive name for the test.
Homepage Load Test – Q1
Description (Optional)
Explain the purpose of this test.
“Simulate 500 concurrent users during peak sale.”
Tags (Optional)
Add tags separated by spaces or commas for filtering.
homepage, q1, critical
Upload JMX File
PerfAgents uses JMeter (`.jmx`) files for load test execution.
Drag and drop your `.jmx` file or click browse.
Once uploaded, the file appears under “Uploaded JMX File”.
Supporting Files (Optional)
Upload any necessary files for your test, such as CSV data files, configuration files, or other resources.
Test Variables
Define key-value pairs to override variables in the JMX file, enabling execution for different configurations without modifying the script.
base_url
https://staging.example.com
Section 2: Load Configuration
The Load Configuration section dynamically renders thread group controls based on the uploaded JMX file. Upon uploading a JMeter script, PerfAgents automatically detects the thread groups and generates customized configuration panels based on their specific types. For multi-thread JMeter scripts PerfAgents parses all thread groups within the file and displays dedicated configuration panels for each one. This ensures complete transparency and granular control over every execution unit within your test plan.
Thread Group–Wise Configuration Rendering
When a JMX file is uploaded:
PerfAgents detects all thread groups defined in the test plan.
Each thread group is displayed as an independent configuration block.
Configurations are auto-mapped based on the type of thread group.
Users can view/modify load parameters without editing the original JMX file.
Each thread group is clearly segmented and labeled for visibility and control.
Supported Thread Group Types
PerfAgents supports multiple JMeter thread group types and renders configuration options specific to each type.
Standard Test Plan Thread Group
The Standard Test Plan Thread Group represents the traditional JMeter thread group model. It is designed for straightforward, time-based load execution where traffic follows a predictable ramp-up, steady-state duration, and optional loop behavior. This configuration is best suited for simple and controlled load testing scenarios where complex traffic staging is not required.
Configurable Parameters
Virtual Users: Defines the total number of concurrent threads (virtual users) that will execute the test plan. This represents the peak concurrency level during the test execution. Users are introduced progressively based on the ramp-up configuration.
Duration: Specifies how long the thread group will remain active once execution begins. This allows you to define a time-bound test window (e.g., 2 minutes, 15 minutes, 30 minutes, etc.), ensuring predictable execution control.
Ramp-Up Time: Determines how long it takes to reach the configured number of virtual users. Instead of starting all threads instantly, users are distributed evenly across the ramp-up period. For example:
100 users with a 100-second ramp-up → 1 user starts per second.
This helps prevent artificial traffic spikes and simulates gradual traffic growth.
Start-Up Delay: Defines a delay before the thread group begins execution. This is useful when:
Coordinating with other thread groups
Sequencing traffic
Allowing setup tasks to complete before load injection begins
Loop Count (Including Infinite Option): Specifies how many times each virtual user executes the test script during the active duration. Options include:
Fixed loop count (e.g., run 5 times)
Infinite loop (executes continuously until duration ends)
The infinite option is typically used for time-based tests where sustained load is required without limiting iteration count.
Visualization Support
PerfAgents enhances the standard thread group configuration with real-time validation and visualization:
Live Thread Curve Preview: A dynamic graph displays how virtual users will increase over time based on the configured ramp-up and duration. This allows you to:
Validate concurrency growth
Identify unintended spikes
Confirm steady-state behavior
Peak Users Display: Automatically calculates and displays the maximum number of concurrent users defined in the configuration. This helps verify infrastructure capacity planning before execution.
Total Duration Summary: Displays the total calculated test runtime including ramp-up and steady-state periods. This ensures clarity around actual execution time before the test is launched.
Ultimate Thread Group (UTG)
The Ultimate Thread Group (UTG) is designed for advanced traffic modeling and complex load simulation scenarios. Unlike standard thread groups that follow a simple ramp-up and duration model, UTG allows you to define multiple staged schedules within a single thread group. This makes it ideal for replicating real-world production traffic patterns where user load fluctuates over time.
Configurable Parameters
Each row in the UTG schedule represents a separate execution stage. You can define multiple rows to simulate phased traffic behavior.
Start Threads Count: Defines the number of virtual users that will begin execution during that specific stage. This allows you to incrementally increase or decrease the active user count across different time windows.
Initial Delay (sec): Specifies how long the thread group should wait before initiating that particular stage. This helps in:
Delaying load injection
Sequencing traffic waves
Staggering execution across multiple schedules
Startup Time (sec): Determines how long it takes for the defined threads to ramp up to their full count. Instead of launching all threads instantly, they are gradually introduced over the configured duration. This prevents sudden load spikes unless intentionally configured.
Hold Load For (sec): Defines how long the threads remain active at peak concurrency during that stage. This parameter is used to simulate steady-state traffic where user activity remains constant for a defined period.
Shutdown Time: Controls how long it takes for the active threads to ramp down and terminate. Similar to ramp-up, threads do not stop abruptly unless configured to do so. This allows smoother load drop-offs.
Visualization Support
PerfAgents provides visual validation of your UTG configuration:
Thread Schedule Table: Displays each configured stage with its respective timing and concurrency values.
Thread Count Over Time Graph: Generates a real-time visualization of expected active threads based on your UTG schedule. This helps you:
Validate ramp patterns before execution
Identify potential unintended spikes
Confirm peak concurrency behavior
Peak Thread Indication: Automatically highlights the maximum concurrent thread count derived from the defined schedules. This ensures infrastructure sizing aligns with your expected peak load.
SetUp Thread Group
The SetUp Thread Group is executed before the main load test begins. It is designed to prepare the system and environment so that the actual load phase runs under realistic and controlled conditions. Unlike the primary load thread groups, the SetUp Thread Group does not represent production traffic. Instead, it ensures that prerequisites are completed prior to load injection.
Configurable Parameters
Virtual Users: Defines how many threads will execute the setup logic. Typically, this number is smaller than the main load group unless large-scale preparation is required.
Duration: Specifies how long the setup logic should run. This ensures the preparation phase completes within a defined time window.
Ramp-Up Time: Controls how gradually setup threads are introduced. This can be useful when:
Initializing large datasets
Avoiding sudden backend spikes during setup
Start-Up Delay: Defines the amount of time the thread group waits before it begins execution. In simple terms, it introduces a controlled pause between the test launch and when this specific thread group starts running.
Loop Count (Including Infinite Option): Defines how many times each setup thread executes its assigned flow. This can be:
Fixed (e.g., create 100 users)
Infinite (until duration completes)
TearDown Thread Group
The TearDown Thread Group is executed after the main load test completes. It is designed to handle post-test cleanup and environment restoration tasks. Unlike the primary thread groups that generate load, the TearDown Thread Group ensures that the system is returned to a stable and controlled state once testing finishes.
Configurable Parameters
Virtual Users: Defines how many threads will execute cleanup tasks. Typically, this is lower than the main load unless large-scale cleanup is required.
Duration: Specifies how long the teardown logic will run. This ensures cleanup completes within a controlled time window.
Ramp-Up Time: Determines how gradually teardown threads are introduced. Useful when cleanup actions involve backend processing and should not cause abrupt load spikes.
Start-Up Delay: Defines how long the TearDown Thread Group waits before beginning execution after the main load test completes. This allows you to introduce a controlled pause between the end of the load phase and the start of cleanup operations.
Loop Count (Including Infinite Option): Specifies how many times each thread executes the teardown script. Can be:
Fixed (e.g., delete 100 records)
Infinite (runs until duration ends)
Section 3: Load Generator Configuration
This section allows you to select the region where the load test will be executed and define how the virtual users configured in the Load Configuration section should be distributed across those regions.
You can distribute these users using either of the following allocation modes:
Traffic %: Distribute the total virtual users across regions based on a percentage allocation.
Fixed VUs: Assign a specific number of virtual users to each selected region.
The system automatically calculates the Peak VUs, Total VUs, and Computed Engines based on the selected regions and configured allocation.
Region Availability
The available regions depend on the subscription plan:
US East (Ohio)
✅
✅
✅
Canada (Central)
✅
✅
✅
Europe (Ireland)
❌
✅
✅
US West (Oregon)
❌
✅
✅
US East (N. Virginia)
❌
✅
✅
Asia Pacific (Tokyo)
❌
✅
✅
Asia Pacific (Singapore)
❌
✅
✅
Europe (London)
❌
✅
✅
Europe (Frankfurt)
❌
❌
✅
Asia Pacific (Sydney)
❌
❌
✅
Asia Pacific (Mumbai)
❌
❌
✅
Note: Free Plan supports single-region load testing in US East (Ohio) only.
Configure Regions
Select the required regions where the load test should be executed.
Choose the allocation method from the dropdown:
Traffic %
Fixed VUs
Configure the allocation for each selected region.
The system automatically calculates the resulting Peak VUs, Total VUs, and Computed Engines.
Use Distribute evenly to distribute the configured load evenly across the selected regions when required.
Click Add Region to include additional regions.
Final Step: Create Load Test
After configuring all sections, click Create Load Test. The test will appear under “All Tests” section, ready for execution.
UI Automation in Load Testing
PerfAgents offers an advanced UI Automation feature that allows you to execute automated UI scripts alongside your load tests. This ensures that while your system is under stress, you can also validate the end-to-end user experience and UI responsiveness.
UI Script Upload
Once you have configured your basic load settings, you can navigate to the UI Automation tab to manage your automated scripts.
Upload UI Script Files:
Drag and drop or browse your UI script files (supports .js and .ts formats).
Maximum file size: 100 MB.
UI Script Type: Select the automation framework. Currently, PerfAgents provides robust support for Playwright.
Download Template: A convenient option to download a sample script template to ensure your automation follows the required structure.
Trigger Configuration
The trigger configuration defines how and when your UI scripts are executed during the load test.
Trigger Type
Define the basis for execution (e.g., Thread Count, Time Based).
Peak Thread Count
It defines the peak load threshold at which the first UI script execution is initiated when Trigger Type is Thread Count.
Trigger After
It specifies the elapsed time after which the first UI script execution is triggered when the Trigger Type is set to Time Based.
Iterations
Set how many times the UI script should repeat.
Intervals (seconds)
Define the delay between subsequent UI script executions.
Visual Execution Preview: The real-time graph on the right provides a visual representation of the Virtual Users (Threads) over the Elapsed Time, helping you correlate UI automation triggers with the overall load profile.
By integrating UI Automation, you can capture logs, and performance metrics from a real browser perspective while the backend is under heavy load.
APM Integrations
PerfAgents supports integration with external Application Performance Monitoring (APM) platforms, enabling users to correlate server-side infrastructure metrics with load testing results. By combining application performance and infrastructure monitoring within a single dashboard, teams can identify bottlenecks more effectively and understand system behavior under load.
Supported Integrations
PerfAgents currently supports the following APM platforms:
AWS CloudWatch
Datadog
Azure Monitor
Dynatrace
These integrations can be configured during load test creation and reused across multiple test executions.

Configuring an APM Integration
Step 1: Navigate to APM Integration
While creating a load test:
Upload a valid JMX file.
Open the APM Integration section from the left panel.
Once a JMX file is uploaded, the APM Integration module becomes available for configuration.
Step 2: Select an APM Provider
Choose the monitoring platform you want to connect. Available options include:
AWS CloudWatch
Datadog
Azure Monitor
Dynatrace
Click “Config” on the desired integration card.
Step 3: Create or Select an Existing Key
Users can now either:
Create a new integration key
Reuse an existing configured key
Creating a new Integration Key
AWS CloudWatch
Key Name, IAM Access Key ID, IAM Secret Access Key
Datadog
Key Name, Datadog URL, API Key, Application Key
Azure Monitor
Key Name, Client ID, Client Secret, Tenant ID, Subscription ID
Dynatrace
Key Name, Dynatrace URL, API Token
Step 4: Test the Connection
After entering the required credentials:
Click Test Connection.
The Platform validates the provided credentials.
Connection status is displayed immediately.
Successful validation confirms that PerfAgents can access monitoring data from the selected platform.
Step 5: Save the Integration
Once connectivity is verified:
Save the integration.
The configured key becomes available for future use.
Users can manage integrations from the Settings section.
Step 6: Create an APM Profile
After successfully configuring and validating an APM integration, create a monitoring profile that defines the infrastructure resources and server-side metrics to be tracked during load test execution. Click Next to navigate to the Create Profile section. The profile configuration fields vary depending on the selected APM integration:
AWS CloudWatch
Profile Name, Region, Namespace, Resources, Metrics
Datadog
Profile Name, Host, Entity
Azure Monitor
Profile Name, Region, Namespace, Resources, Metrics
Dynatrace
Profile Name, Entity Type, Entity, Metrics
After configuring the required fields, click Integrate.
Step 7: Applying a Profile to a Load Test
After a profile is created, it appears under the Available Profiles section for the selected APM integration. To associate a profile with the current load test:
Select the desired profile using the checkbox.
Click Apply.
The selected profile is linked to the load test configuration.
Multiple saved profiles may be available depending on the configured APM provider.
Once applied, PerfAgents continuously collects the selected server-side metrics during test execution and displays them alongside client-side performance data within the Real-Time Load Test Dashboard and Timeline Report, enabling comprehensive infrastructure and application performance analysis.
Last updated