Applies to LoadNinja 1.0, last modified on {{#DATE-PLACEHOLDER#}}

Why use databanks in tests?

The test runner simulates test events using hard-coded parameter values, that is, the values that you entered during the web test recording or editing.

To get larger coverage and check how your web application works with different input values, run your test using varying data – for example, record a number of web tests each entering different data. An easier solution, however, is to use some file as a data source (or databank), read it row by row, and run test commands for each row in that databank. Such tests are called data-driven load tests.

Databank formats

The databank must be a CSV or TXT file, with either commas or tabs as a value delimiter. The first line may contain column headers.

How it works in LoadNinja

To create a data-driven load test in LoadNinja, attach databanks to individual web tests that your load scenario will run. Then, map databank columns to event parameters as explained below.

LoadNinja supports this type of parameterization for the Keyboard Input events, Select Input events, and web page URLs.

During the load test execution, each web test will typically run several times. For each iteration, LoadNinja will pick a databank row and insert column values from this row into event parameters:

Data-driven testing with LoadNinja: Using data rows in test iterations

Click the image to enlarge it.

How LoadNinja picks values from the databank

By default, LoadNinja picks databank rows randomly. To change this behavior, go to  Settings in the web test recorder and change the value of the Run Databank Rows setting:

Run Databank Rows setting

Click the image to enlarge it.

Possible options are –

Value Description
Random Default value. LoadNinja will pick random data rows from the databank for each iteration and each virtual user.
During the test run, there is a possibility that multiple users will use the same data at the same time.
Depending on the number of iterations and the number of rows, some rows are used more or less frequently than others. If the number of iterations is significantly larger than the number of rows, each row will be used approximately the same number of times.
Sequential For each virtual user, LoadNinja will pick data sequentially for each iteration, that is, the first iteration of a virtual user will use the first databank row, the second iteration will use the second databank row, and so on.
Each virtual user processes the databank on its own, so it means that multiple virtual users may be using the same data at the same time.
Unique At any given time instance, LoadNinja will pick unique data rows for virtual users, so they will never use the same data at the same time.
The number of databank rows should be equal to or greater than the number of virtual users that will run this web test.

Attach a databank to a web test

1. Prepare the databank

Create a .csv or .txt file with the desired data, using either commas or tabs as value delimiters. Use any text editor to create the file. Many spreadsheet applications such as Microsoft Excel, Numbers, and LibreOffice Calc also export data to CSV.

Tip: We recommend that the first line contains descriptive column headers. In this case, the test will display the column names rather than indexes (1, 2, …).

2. (Optional) Record a web test

If you do not have a test yet, record it. Replay the recorded test once to make sure it works correctly.

3. Import a databank
  1. In the web test editor, click  Upload Databank:

    Upload Databank

    Click the image to enlarge it.

  2. Click Browse and select one or multiple .csv or .txt files from your device you want to use as databanks.

    To remove the file you have accidentally added from the list, click near that file.

    Import Data Bank

    Click the image to enlarge it.

    Click Next: Define File Format to proceed.

  3. In First row contains, specify whether the first row of each file you have attached should be treated as a header or a data row. In the Column delimiter column, select the symbol that separates columns within your databank.

    Import Data Bank: Structure

    Click the image to enlarge it.

    Click Next: Review Import. LoadNinja will try reading data from your files.

  4. LoadNinja will display a preview of the data. If the data does not look right, click Back and change the parsing settings.

    Import Data Bank: Preview

    Click the image to enlarge it.

    If LoadNinja loaded data correctly, go to the next page by clicking Next: Map Data to Script.

  5. On the next page, map column values to test commands in your web test. LoadNinja will locate parameters within the test and list them.

    To command LoadNinja to use a databank for replacing parameter values, do the following for each input event:

    • Select a file you want to use as the databank in the Map file column for a parameter.

    • Select the databank column from which the input values will be taken during the playback.

    In both these cases, select No Mapping to skip this setting and use the hard-coded recorded value during the playback.

    Tip: To change these mappings later, simply click  Upload Databank in the script recorder.

    LoadNinja will show a preview of the item in the first data source’s row in the rightmost column:

    Import Data Bank: Map Values

    Click the image to enlarge it.

    To learn how to map values in the web test editor, see below.

  6. Click Next: Save Mapping.

LoadNinja will upload your data file to the cloud and update the test. Events that use values from a databank will have the corresponding label:

A web test event that uses a databank
Note: Databanks are not shared among web tests. To use the same databank in another test, attach it to that test separately.

Change event-to-data column mappings

To change the databank columns used for events, use the  Modify Databank command or edit the event parameters directly.

For all events

  1. Click  Modify Databank on the toolbar.

    Modify Databank
  2. Update the mappings as required and click Save.

For a single event

Currently, LoadNinja supports this feature only for Keyboard Input events. For parameterizing URLs and selection inputs, consider creating a mapping while uploading a databank.

  1. In the list of test steps, find the Keyboard Input event you want to parameterize.

  2. Expand the event parameters and click .

    Mapping values: Start

    Click the image to enlarge it.

  3. Select or unselect the Use Dataset check box as required.

  4. If Use Databank is selected, select the databank column to take the parameter value from.

    Mapping values: Select the databank column

    Click the image to enlarge it.

  5. Click Submit.

Update or replace a databank

LoadNinja stored databanks along with the tests which use these databanks. After you attached a databank to a web test, LoadNinja replaces the  Import Databank command on the toolbar with  Modify Databank. To update or replace the databank, follow these steps

  1. Click  Modify Databank on the toolbar.

    Modify Databank
  2. (Optional) Remove the obsolete databanks by clicking near them.

  3. Browse for the new databank and click Next: Define File Format.

  4. Configure the importing settings, as you do for the new databanks.

  5. Check the preview.

  6. If the new databank has a different set of columns, update the event-to-column mappings as required.

  7. Click Save.

In Mocha scripts

When you attach a databank to a web test, LoadNinja updates the Mocha code of this test accordingly. While it is not possible to edit the Mocha code in LoadNinja directly, knowledge of databank-related statements can be helpful if you wish to reuse this code in external testing tools.

The databank is put into an array. The array name (DS_test_data in the example below) consists of the DS_ prefix followed by the name (without extension) of the databank file.

let DS_test_data = [
    {"Name":"Mark Twain", "Password":"Password1"},
    {"Name":"Maria Gripe", "Password":"Password2"},
    {"Name":"Jules Verne", "Password":"Password3"},
    {"Name":"Leo Tolstoy", "Password":"Password4"},
    {"Name":"Jhumpa Lahiri", "Password":"Password5"}
    ...
]

Array items correspond to the databank rows. Each array item is an object where the keys are column names and the values are column values. If the databank file does not include column names, LoadNinja uses numbers as column names: "1", "2", and so on.

The code then picks a random row number to be used during the test. Here, 10 is the total number of databank rows; your databanks may have a different number of rows.

let random_test_data = generateRandomNumber(10);

If LoadNinja is configured to pick data rows in accordance with specific rules, additional code is used:

  • If LoadNinja picks rows from a databank sequentially, the function that generates random numbers is replaced with the following function:

    if (parent &&
        parent.parent &&
        parent.parent.iteration &&
        !isNaN(parent.parent.iteration)
    ) {
      random_test_data = (parent.parent.iteration - 1) % 5;
    }

  • If LoadNinja is configured to provide virtual users with unique data, the function that generates random numbers is replaced with the following function:

    if (parent &&
        parent.parent &&
        parent.parent.totalVUs &&
        parent.parent.actualVU &&
        parent.parent.iteration &&
        !isNaN(parent.parent.totalVUs) &&
        !isNaN(parent.parent.actualVU) &&
        !isNaN(parent.parent.iteration)
        ) {
        const { actualVU, totalVUs, iteration } = parent.parent;
        random_test_data = (actualVU - 1 + totalVUs * (iteration - 1)) % (5 - (5 % totalVUs) ) ;
    }

Test events that are connected to the databank will use the values from the specified data row. Here, "Name" is the databank column mapped to this event.

let test_data1 = DS_test_data[random_test_data]["Name"]; // Get the value
await driver.sendKeys(test_data1); // Use the value

See Also

LoadNinja Documentation

Highlight search results