Load Test

Getting Started

Getting Started

Advanced Generation

Load Test Generation from Trace

Introduction

This guide will show you how to generate load tests for complex scenarios with Skyramp using Skyramp-collected traces. We'll demonstrate using Skyramp’s Demo Shop API, a simple e-commerce API for product and order management. Learn more about the Demo Shop API.

Ensure you have Skyramp CLI and relevant Libraries installed. If not, refer to the Installation Guide.

Generate Load Tests across Endpoints

To generate load tests that span across multiple endpoints or services, Skyramp requires trace information to reliably generate the test case. Learn more about trace collection with Skyramp.

Following, we will generate a test for a simple scenario across endpoints. You can download the trace file here.

  1. POST of a new product

  2. POST of a new order containing the new product

  3. GET of the new order

  4. DELETE of the new order

Load Test Generation from Trace

Introduction

This guide will show you how to generate load tests for complex scenarios with Skyramp using Skyramp-collected traces. We'll demonstrate using Skyramp’s Demo Shop API, a simple e-commerce API for product and order management. Learn more about the Demo Shop API.

Ensure you have Skyramp CLI and relevant Libraries installed. If not, refer to the Installation Guide.

Generate Load Tests across Endpoints

To generate load tests that span across multiple endpoints or services, Skyramp requires trace information to reliably generate the test case. Learn more about trace collection with Skyramp.

Following, we will generate a test for a simple scenario across endpoints. You can download the trace file here.

  1. POST of a new product

  2. POST of a new order containing the new product

  3. GET of the new order

  4. DELETE of the new order

Load Test Generation from Trace

Introduction

This guide will show you how to generate load tests for complex scenarios with Skyramp using Skyramp-collected traces. We'll demonstrate using Skyramp’s Demo Shop API, a simple e-commerce API for product and order management. Learn more about the Demo Shop API.

Ensure you have Skyramp CLI and relevant Libraries installed. If not, refer to the Installation Guide.

Generate Load Tests across Endpoints

To generate load tests that span across multiple endpoints or services, Skyramp requires trace information to reliably generate the test case. Learn more about trace collection with Skyramp.

Following, we will generate a test for a simple scenario across endpoints. You can download the trace file here.

  1. POST of a new product

  2. POST of a new order containing the new product

  3. GET of the new order

  4. DELETE of the new order

Python

Java

Run the following command in your terminal to generate the load test:

skyramp generate load rest \
--language python \
--framework pytest \
--trace trace.json

Upon completion, Skyramp creates a fully executable Python test file (load_test.py) that can be run immediately.

Explanation of Command

Below are a few flags to customize the test generation.

  • Compared to other commands, test generation from trace does not require a specified URL - we extract the various endpoints directly from the trace.

  • --language: Specifies the test output language.

  • --framework: Specify the test execution framework of choice.

  • --trace: Points to the Skyramp-collected trace used to generate the test. We extract all relevant scenario and request information directly from this file.

Additional Flags

  • --include: Specify a comma-separated list of FQDNs that you want Skyramp to generate requests for.

  • --exclude: Specify a comma-separated list of FQDNs for which you do not want Skyram to generate requests for. This flag takes precedence over --include if a FQDN is specified in both.

  • --runtime: Select the test runtime environment [Local, Docker, Kubernetes]

  • --output: Specify the name of the generated test file.

Load Flags

  • --default-count: Number of times Skyramp executes the defined request [default=None]; this flag needs to be set if load-duration is set to 0.

  • --default-duration: Duration of the load test execution in seconds; this flag cannot be used in combination with default-load-count[default=5]

  • --default-num-threads: Number of concurrent threads for load test [default=1]. Concurrent threads represent virtual users enabling you to test the vertical scalability of the service.

  • --default-rampup-duration: Specify the duration that Skyramp incrementally increases the requests per second (RPS) until the target RPS are reached [default=None]

  • --default-rampup-interval: Specify how often Skyramp increases the RPS until target RPS are reached [default=None]

  • --default-target-rps: Specify the maximum RPS of the load test [default=None]

FQDNs need to be specified either as an exact path to the endpoint or in combination with a wildcard:

  • demoshop.skyramp.dev/products will only generate requests for POST and GET of the products endpoint

  • demoshop.skyramp.dev/products/* will also include all nested endpoints

For endpoints that require path parameters, please replace the path parameter with the wildcard:

  • Convert demoshop.skyramp.dev/products/{product_id}/reviews to demoshop.skyramp.dev/products/*/reviews

Execute your Test

You can execute the generated tests without any additional adjustments to the code.

Asynch Test Execution Behavior

  • Unlike other types of Skyramp tests, load testing is asynchronous, and every command in the test is executed without waiting for feedback. This allows for a more accurate understanding of the stresses a system experiences.

  • If a load duration rather than a count is provided, the Skyramp worker tries to maximize RPS for the specified load test duration while collecting the latency and failure rate of those requests

Set Authentication (if applicable)

Skyramp’s sample application doesn't require any authentication.

To test against an application that does require authentication, pass your token using an environment variable. By default, Skyramp expects a Bearer Token but we support additional authentication methods.

export SKYRAMP_TEST_TOKEN=$your_auth_token

Run the test

Since the Skyramp Demo Shop does not require authentication, you can immediately execute the generated test using Python - this allows us to display more meaningful load test results. If you prefer, you can also run the test using the specified framework from the generation command.

python3 load_test.py

The test automatically identifies the relevant path parameters, intelligently chains the different requests together, and executes the test 5 times.

Reviewing Test Results

Skyramp automatically collects and prints failure rates and latency metrics. We can see that all 5 test runs have been successful.

Additional information on how to adjust the results output will be added soon!

Next Steps

Congratulations on generating a load test from traces! To learn more about the generated code, please visit the Load Test Documentation describing the core concepts.

Let’s automate testing together!

Related topics

Installation

Skyramp Demo Shop

Load Test

Python

Java

Run the following command in your terminal to generate the load test:

skyramp generate load rest \
--language python \
--framework pytest \
--trace trace.json

Upon completion, Skyramp creates a fully executable Python test file (load_test.py) that can be run immediately.

Explanation of Command

Below are a few flags to customize the test generation.

  • Compared to other commands, test generation from trace does not require a specified URL - we extract the various endpoints directly from the trace.

  • --language: Specifies the test output language.

  • --framework: Specify the test execution framework of choice.

  • --trace: Points to the Skyramp-collected trace used to generate the test. We extract all relevant scenario and request information directly from this file.

Additional Flags

  • --include: Specify a comma-separated list of FQDNs that you want Skyramp to generate requests for.

  • --exclude: Specify a comma-separated list of FQDNs for which you do not want Skyram to generate requests for. This flag takes precedence over --include if a FQDN is specified in both.

  • --runtime: Select the test runtime environment [Local, Docker, Kubernetes]

  • --output: Specify the name of the generated test file.

Load Flags

  • --default-count: Number of times Skyramp executes the defined request [default=None]; this flag needs to be set if load-duration is set to 0.

  • --default-duration: Duration of the load test execution in seconds; this flag cannot be used in combination with default-load-count[default=5]

  • --default-num-threads: Number of concurrent threads for load test [default=1]. Concurrent threads represent virtual users enabling you to test the vertical scalability of the service.

  • --default-rampup-duration: Specify the duration that Skyramp incrementally increases the requests per second (RPS) until the target RPS are reached [default=None]

  • --default-rampup-interval: Specify how often Skyramp increases the RPS until target RPS are reached [default=None]

  • --default-target-rps: Specify the maximum RPS of the load test [default=None]

FQDNs need to be specified either as an exact path to the endpoint or in combination with a wildcard:

  • demoshop.skyramp.dev/products will only generate requests for POST and GET of the products endpoint

  • demoshop.skyramp.dev/products/* will also include all nested endpoints

For endpoints that require path parameters, please replace the path parameter with the wildcard:

  • Convert demoshop.skyramp.dev/products/{product_id}/reviews to demoshop.skyramp.dev/products/*/reviews

Execute your Test

You can execute the generated tests without any additional adjustments to the code.

Asynch Test Execution Behavior

  • Unlike other types of Skyramp tests, load testing is asynchronous, and every command in the test is executed without waiting for feedback. This allows for a more accurate understanding of the stresses a system experiences.

  • If a load duration rather than a count is provided, the Skyramp worker tries to maximize RPS for the specified load test duration while collecting the latency and failure rate of those requests

Set Authentication (if applicable)

Skyramp’s sample application doesn't require any authentication.

To test against an application that does require authentication, pass your token using an environment variable. By default, Skyramp expects a Bearer Token but we support additional authentication methods.

export SKYRAMP_TEST_TOKEN=$your_auth_token

Run the test

Since the Skyramp Demo Shop does not require authentication, you can immediately execute the generated test using Python - this allows us to display more meaningful load test results. If you prefer, you can also run the test using the specified framework from the generation command.

python3 load_test.py

The test automatically identifies the relevant path parameters, intelligently chains the different requests together, and executes the test 5 times.

Reviewing Test Results

Skyramp automatically collects and prints failure rates and latency metrics. We can see that all 5 test runs have been successful.

Additional information on how to adjust the results output will be added soon!

Next Steps

Congratulations on generating a load test from traces! To learn more about the generated code, please visit the Load Test Documentation describing the core concepts.

Let’s automate testing together!

Related topics

Installation

Skyramp Demo Shop

Load Test

Python

Java

Run the following command in your terminal to generate the load test:

skyramp generate load rest \
--language python \
--framework pytest \
--trace trace.json

Upon completion, Skyramp creates a fully executable Python test file (load_test.py) that can be run immediately.

Explanation of Command

Below are a few flags to customize the test generation.

  • Compared to other commands, test generation from trace does not require a specified URL - we extract the various endpoints directly from the trace.

  • --language: Specifies the test output language.

  • --framework: Specify the test execution framework of choice.

  • --trace: Points to the Skyramp-collected trace used to generate the test. We extract all relevant scenario and request information directly from this file.

Additional Flags

  • --include: Specify a comma-separated list of FQDNs that you want Skyramp to generate requests for.

  • --exclude: Specify a comma-separated list of FQDNs for which you do not want Skyram to generate requests for. This flag takes precedence over --include if a FQDN is specified in both.

  • --runtime: Select the test runtime environment [Local, Docker, Kubernetes]

  • --output: Specify the name of the generated test file.

Load Flags

  • --default-count: Number of times Skyramp executes the defined request [default=None]; this flag needs to be set if load-duration is set to 0.

  • --default-duration: Duration of the load test execution in seconds; this flag cannot be used in combination with default-load-count[default=5]

  • --default-num-threads: Number of concurrent threads for load test [default=1]. Concurrent threads represent virtual users enabling you to test the vertical scalability of the service.

  • --default-rampup-duration: Specify the duration that Skyramp incrementally increases the requests per second (RPS) until the target RPS are reached [default=None]

  • --default-rampup-interval: Specify how often Skyramp increases the RPS until target RPS are reached [default=None]

  • --default-target-rps: Specify the maximum RPS of the load test [default=None]

FQDNs need to be specified either as an exact path to the endpoint or in combination with a wildcard:

  • demoshop.skyramp.dev/products will only generate requests for POST and GET of the products endpoint

  • demoshop.skyramp.dev/products/* will also include all nested endpoints

For endpoints that require path parameters, please replace the path parameter with the wildcard:

  • Convert demoshop.skyramp.dev/products/{product_id}/reviews to demoshop.skyramp.dev/products/*/reviews

Execute your Test

You can execute the generated tests without any additional adjustments to the code.

Asynch Test Execution Behavior

  • Unlike other types of Skyramp tests, load testing is asynchronous, and every command in the test is executed without waiting for feedback. This allows for a more accurate understanding of the stresses a system experiences.

  • If a load duration rather than a count is provided, the Skyramp worker tries to maximize RPS for the specified load test duration while collecting the latency and failure rate of those requests

Set Authentication (if applicable)

Skyramp’s sample application doesn't require any authentication.

To test against an application that does require authentication, pass your token using an environment variable. By default, Skyramp expects a Bearer Token but we support additional authentication methods.

export SKYRAMP_TEST_TOKEN=$your_auth_token

Run the test

Since the Skyramp Demo Shop does not require authentication, you can immediately execute the generated test using Python - this allows us to display more meaningful load test results. If you prefer, you can also run the test using the specified framework from the generation command.

python3 load_test.py

The test automatically identifies the relevant path parameters, intelligently chains the different requests together, and executes the test 5 times.

Reviewing Test Results

Skyramp automatically collects and prints failure rates and latency metrics. We can see that all 5 test runs have been successful.

Additional information on how to adjust the results output will be added soon!

Next Steps

Congratulations on generating a load test from traces! To learn more about the generated code, please visit the Load Test Documentation describing the core concepts.

Let’s automate testing together!

Related topics

Installation

Skyramp Demo Shop

Load Test

© 2025 Skyramp, Inc. All rights reserved.

© 2025 Skyramp, Inc. All rights reserved.

© 2025 Skyramp, Inc. All rights reserved.