Parameterization with CSV Data
Utilize CSV Data Set Config to inject dynamic input data into your test scripts.
Parameterization with CSV Data is a free Load Testing & Performance Benchmarking (JMeter & k6) lesson on CoddyKit — lesson 1 of 4. You can read the complete lesson below for free — then practise it hands-on in the browser with a built-in code editor and a 24/7 AI tutor. It is part of the Load Testing & Performance Benchmarking (JMeter & k6) learning path, one of 4 lessons in the course, and your progress syncs across the web and the CoddyKit app.
Dynamic Data with CSV
When performance testing, we often need to simulate many users doing similar, but not identical, actions. For example, logging in with different credentials or searching for different items.
This is where parameterization comes in! Instead of hardcoding values, we use variables to inject dynamic data into our tests. This lesson focuses on using CSV files for this purpose in JMeter.
What is Parameterization?
Parameterization is the process of replacing hardcoded values in your test script with variables. These variables then get their values from an external source, like a data file.
- It makes your tests more realistic by simulating diverse user inputs.
- It helps prevent caching issues on the server side, as each request can be unique.
- It allows you to test different scenarios without modifying the test script itself.
Meet CSV Data Set Config
In JMeter, the primary element for parameterization using external files is the CSV Data Set Config. This element reads data from a plain text file, typically with comma-separated values (CSV).
It works by reading a new line of data for each iteration of your test or for each virtual user, making the requests unique.
Preparing Your CSV File
Your CSV file is just a simple text file. Each line represents a set of data for one iteration or one user. Values within a line are separated by a delimiter, usually a comma (`,`).
- Ensure the file is accessible to JMeter (e.g., in the same directory as your .jmx script).
- You don't need a header row in the CSV file itself; you'll define variable names in JMeter.
CSV File Example
Here's what a simple CSV file might look like, containing usernames and passwords:
user1,pass1
user2,pass2
user3,pass3
Each line provides a unique pair of username and password that can be used by a different virtual user or in different test iterations.
Adding CSV Data Set Config
To add this element in JMeter:
- Right-click on your Test Plan or Thread Group.
- Go to Add > Config Element > CSV Data Set Config.
Placing it under the Test Plan makes it available globally. Placing it under a Thread Group limits its scope to that specific group.
Configuring Key Fields
The CSV Data Set Config has several important fields to configure:
- Filename: Path to your CSV file.
- Variable Names: Comma-separated list of names for variables (e.g.,
username,password). - Delimiter: Character separating values (default is comma).
- Recycle on EOF?: If
True, JMeter restarts from the beginning of the file when it reaches the end. - Stop Thread on EOF?: If
True, the thread stops when it runs out of data. - Sharing Mode: How data is shared among threads (e.g.,
All threads,Current thread group).
Using Variables in Requests
Once you've defined your variable names in the CSV Data Set Config (e.g., username and password), you can use them in your JMeter Samplers.
The syntax for referencing a variable is ${variableName}.
For instance, in an HTTP Request, you might use ${username} in the username field and ${password} in the password field.
Example: Login Request
Let's say you're testing a login page that accepts user and pass as parameters. With a CSV file like user1,pass1, you'd configure your HTTP Request as follows:
Method: POST
Path: /login
Parameters:
user: ${username}
pass: ${password}
Each time a virtual user makes this request, JMeter will pull the next available username and password from your CSV file.
CSV Configuration Check
You've successfully set up a CSV Data Set Config. Which of the following are crucial settings you must define for it to work correctly?
Recap: Parameterizing with CSV
Great job! You've learned how to parameterize your JMeter tests using the CSV Data Set Config.
- Parameterization makes tests more realistic.
- The CSV Data Set Config reads data from a CSV file.
- You define variable names in the Config element to map to your CSV columns.
- Use the
${variableName}syntax to reference data in your samplers. - Key settings include Filename, Variable Names, Delimiter, Recycle on EOF, Stop Thread on EOF, and Sharing Mode.
Next, we'll explore handling dynamic values directly from server responses!
Frequently asked questions
Is the “Parameterization with CSV Data” lesson free?
Yes — the full text of “Parameterization with CSV Data” is free to read here on the web, and the Load Testing & Performance Benchmarking (JMeter & k6) course includes 4 lessons in total. To practise it interactively (a built-in code editor and a 24/7 AI tutor) and unlock the rest of the Load Testing & Performance Benchmarking (JMeter & k6) course, upgrade to CoddyKit PRO.
What will I learn in “Parameterization with CSV Data”?
Utilize CSV Data Set Config to inject dynamic input data into your test scripts. You practise Load Testing & Performance Benchmarking (JMeter & k6) with hands-on code you run directly in the browser, and a 24/7 AI tutor answers your questions as you work through the lesson.
Do I need any experience to start Load Testing & Performance Benchmarking (JMeter & k6)?
No prior experience is required. Load Testing & Performance Benchmarking (JMeter & k6) on CoddyKit is structured for beginners through advanced learners; this is — lesson 1 of 4, so you can start here or from the beginning and move at your own pace.
How long does the “Parameterization with CSV Data” lesson take?
Most CoddyKit lessons take about 5–10 minutes. Each one is bite-sized and interactive, so you make steady progress and pick up exactly where you left off across the web and the app.
Can I write and run code in this Load Testing & Performance Benchmarking (JMeter & k6) lesson?
Yes. Every Load Testing & Performance Benchmarking (JMeter & k6) lesson includes a built-in code editor, so you write and run real code right in your browser and get instant AI feedback — no local setup required.
All lessons in this course
- Parameterization with CSV Data
- Handling Dynamic Values (Correlation)
- JMeter Functions and Variables
- Database Testing with JDBC