How Can i avoid repeated/duplicate test data or to avoid already executed data without deleting in CSV file? - performance

We have a constrain in our application, For test data providing in JMeter execution (using CSV Data Set Config element) we are not supposed to provide duplicate test data and it won't accept in all the fields. So we kept unique test data (upto 8K data for 8k concurrent users) for all the fields in CSV format.
Here I have a manual intervention, After each test execution (i.e) 100 users, 1000 users up to 8000 users) we need to delete each row (WRT to users in thread group) in CSV file else the duplicate data will be fetching for next execution and result will be failed.
Here my questions is,
1. How Can i avoid repeated/duplicate test data or to avoid already executed data without deleting in CSV file.
2. During JMeter test execution with CSV files, How can we specify to take the data from the respective rows. For example 101th row, 1001th row & 7999th row (which contains 8000 rows of data)?

The easiest option will be using HTTP Simple Table Server, its READ command has KEEP=FALSE attribute so you will be able to feed your test with the unique data without having to physically remove it from the original CSV file.
You can install HTTP Simple Table Server plugin using JMeter Plugins Manager:
In general if your test doesn't need to be repeatable instead of keeping the data in the CSV file you can consider generating it on the fly using such JMeter Functions as:
__Random()
__RandomString()
__RandomDate()
__UUID()
etc.

Related

how to insert unique record using JMeter distributed testing

I have set up Jmeter distributed testing with 1 master and 2 slaves.
During my test, I have added deviceId as a variable with MIN and MAX ranges. when I run the distributed test, the insert is successful in one slave machine and failed in another slave machine with 'E11000 duplicate key error collection'.
How can I set up the test so that when I run insert is successful in both the machines
It depends on how do you really "define" this variable and where the "ranges" come from.
if E is a prefix and 11000 is a postfix it means that you can send only up to 100 000 "unique" entries.
So one of the solutions would be pre-generate the list of these entries and store it into CSV file like:
E00000
E00001
...
E99999
then you can split the file into 2 parts and copy it to the slaves, the lines from the file can be read using CSV Data Set Config
If you need the ability to continue the test where you left off without re-using the data you can go for HTTP Simple Table Server or Redis Data Set instead.
Another possible option is checking whether the value is in the database before extracting using JDBC Request Sampler and generate a new one if current value exists already, however this option is not the best one.
And last but not the least, you can generate really unique values using __UUID() function if the output format is appropriate

JMeter- Reading One row of CSV file to Multiple rows of another csv file

How can I loop one csv file to another csv file in JMeter, where the first csv file contains all the login data and the other csv file contains the transaction data. I am supposed to run where 1 teller should process 30 transaction.
Go for __CSVRead() function.
You will not be able to use CSV Data Set Config as it is a Configuration Element and according to the JMeter Test Elements Execution Order all the configuration elements are being initialised at the very beginning of the test while your requirement is to read data based on user dynamically.
Check out How to Pick Different CSV Files at JMeter Runtime article for comprehensive information on using __CSVRead() function

Use next CSV file when all values used

I have 10 CSV files with usernames with 1 million records each. Ideally I want to use an unique value for every thread and when all values from the first CSV file have been used, it should start using the values from the second CSV file, and so on.
Adding multiple CSV Data Set Config elements is no problem and it is easy to add them to a If or While controller. But what can be the trigger to go to the next file?
As an alternative, I use multiple If controller with e.g. ${__eval(${__threadNum})} < 1000 and ${__eval(${__threadNum})} > 1000 and ${__eval(${__threadNum})} < 2000 to make sure the users read from different CSV files, but this is a bit cumbersome when the number of users change often, because you need to change the if conditions accordingly.
Perhaps you should consider switching to __CSVRead() function which is capable of fetching data from multiple CSV files. Optionally in conjunction with __counter() function if you need to switch files based on certain condition
See How to Use JMeter Functions post series for advanced information on aforementioned and more useful JMeter Functions.

how to login multiple users with different input in different threads in Jmeter using CSV data set config

How to login multiple users with different input in different threads in Jmeter using CSV data set config?
I have added CSV data set config but the thread is picking only the first entry and i m not able to see the responses for other user login
If you use CSV data set config which contains parameterized values which users(threads) will use while running script.
below is snapshot of jmeter of csv data set config which contain emp.csv file which contains values like,
nachiket,101,test
nikhil,102,test
harish,103,test
which are empname,empid,passwd respectively for 3 users.
if you run test with 3 users then thread1 will pick first and 2nd thread will pick 2nd val so on and you can repeat the file if it has less values than no of threads.
You need to provide enough loops/iterations as given one iteration only CSV Data Set Config will read only the first entry.
Try putting the request you want to parametrize under a Loop Controller, set enough loops and see whether it resolves your issue.
See Using CSV DATA SET CONFIG guide for more details.

How to set up a large amount of request data for a jMeter load test

I want to simulate a few hundred http request each with a different token and userId which I have in a database table.
What's the best way of setting up a jMeter load test to do this?
You can use JDBC Sampler to extract you data from DB to create a CSV and a JSR223 Sampler using groovy (add groovy-all.jar in jmeter/lib folder) to write the extracted values to a CSV file.
Then in the real plan , use CSV DataSet Config using the generated file.
Depending on how you want to use the dataset, you will play with Sharing mode attribute.
If you want to do both steps within the same plan you can use a Setup thread Group that will contain the JDBC Sampler part to write the CSV File, this will use 1 thread and then
the other part in regular Thread Group that will use the number of users you need.
One way is to put all your parameters into a csv file and use CSV Data Set Config in jmeter. Right click on the thread you have created - add- Config Element- CSV Data Set Config. Remember you need to set the Number of Threads(users) to match the number of users in your CSV file.

Resources