Creating datapools with multiple substitutions

Before the 9.2 release, you could substitute one datapool value at a time. Starting from the 9.2 release, after the test is generated, you can view all the datapool candidates, add multiple candidates as datapool values, substitute values, and create a new datapool out of it. You can also substitute multiple datapool candidates for an existing datapool.

About this task

When you substitute multiple datapool candidates to create a new datapool, the same number of columns are created in the datapool. The names of the candidates become the names of columns and values in the datapool. When you substitute multiple datapool candidates in an existing datapool, the column names in the datapool are retained. If the number of substitutions chosen was greater than the number of columns in the datapool, the extra number of substitutions are added as columns in the datapool. For instance, if a datapool has three columns and you substitute five datapool candidates, two new columns are created by using the names of the datapool candidates.

Procedure

To create datapool from multiple datapool candidates:

  1. In the Test Editor, select the name of the test and from the Test Details section, select Common Options and click Show Datapool Candidates. Alternative: After the test generation when you open the test, you are prompted that some of the test data needs to be correlated or data pooled. If you click Yes, you can see the list of datapool candidates.
  2. Select the datapool candidates that you want to add as values to the datapool and click Substitute multiple candidates. The Add Datapool dialog box shows the list of datapools that are in the project but not associated with the test.
  3. To associate an existing datapool with the test and assign the selected datapool candidates as values and substitutions, select a datapool and click Next. To associate a new datapool with the test, click the Use wizard to create new Datapool and click Next.
  4. Select the Open mode for the datapool. This mode determines the view that virtual users have of the datapool. Different tests can open the same datapool differently, and you can change the open mode later by opening the test and double-clicking the datapool title.
    Option Description
    Shared (per machine) (default)

    Virtual users on each computer draw datapool values from a shared view of the datapool, with datapool rows apportioned to them collectively in sequential order, on a first-come-first-served basis.

    This option makes it likely that the virtual users or loop iterations will use data from different rows and that the server will see variable data. The exact row access order among all virtual users or iterations cannot be predicted because this order depends on the test execution order and the duration of the test on each computer.

    Private

    Each virtual user draws datapool values from a private view of the datapool, with datapool rows apportioned to each user in sequential order.

    This option ensures that each virtual user gets the same data from the datapool in the same order. Because each user starts with the first row of the datapool and accesses the rows in order, different virtual users will use the same row. The next row of the datapool is used only if you add the test that is using the datapool to a loop in the schedule with multiple iterations.

    Segmented (per machine)

    Virtual users on each computer draw datapool values from a segmented view of the datapool, with data apportioned to them collectively from their segment in sequential order, on a first-come-first-served basis. The segments are computed based on how a schedule apportions virtual users among computers. For example, if a schedule assigns 25% of users to group 1 and 75% to group 2, and assigns these groups to computer 1 and computer 2, the computer 1 view will consist of the first 25% of datapool rows and the computer 2 view will consist of the remaining 75% of rows.

    This option prevents virtual users from selecting duplicate values (for example, account IDs). If you disable wrapping, you cannot use the row more than once.

  5. If you are setting how the test accesses the datapool during this session, select one of the following options. Different tests can access the same datapool differently, and you can change the access mode later by opening the test and double-clicking the datapool title.
    • Sequential: Rows in the datapool are accessed in the order in which they are physically stored in the datapool file, beginning with the first row and ending with the last.
    • Random: Rows in the datapool are accessed in any order, and any given row can be accessed multiple times or not at all. Each row has an equal chance of being selected each time.
    • Shuffled: Before each datapool access, the order of the rows is changed that results in a different sequence. Rows are accessed randomly but all rows must be selected once before a row is selected again.

    The nonsequential access order (Random and Shuffled) is like a shuffled deck of cards. With Random access order, the selected card is returned anywhere in the deck, which means that one card might be selected multiple times before another is selected once. Because you never reach the end of the deck, Wrap when the last row is reached is unavailable. With Shuffled access order, the selected card is returned to the bottom of the deck. After each card has been selected once, you either resume selecting from the top with the same access order (Wrap when the last row is reached is Yes), or no more selections are made (Wrap when the last row is reached is No).

  6. Select one of the following options.
    Option Description
    Wrap when the last row is reached

    By default, when a test reaches the end of a datapool or datapool segment, it reuses the data from the beginning. To force a test to stop at the end of a datapool or segment, clear the Wrap when the last row is reached check box. Forcing a stop might be useful if, for example, a datapool contains 15 records, you run a test with 20 virtual users, and you do not want the last five users to reuse information. Although the test is marked Fail because of the forced stop, the performance data in the test is still valid. However, if reusing datapool data does not matter to your application , the default of wrapping is more convenient. With wrapping, you need not ensure that your datapool is large enough when you change the workload by adding more users or increasing the iteration count in a loop.

    Note: This option is unavailable with the Random option because with random access, there is, in effect, no end of file.
    Fetch only once per user

    By default, one row is retrieved from the datapool for executing each test, and the data in the datapool row is available to the test only for the duration of the test. Select Fetch only once per user to specify that every access of the datapool from any test being run by a particular virtual user will always return the same row.

    To illustrate how these options affect the rows that are returned, assume that a test contains a loop which accesses a datapool. The loop has 2 iterations. The following table shows the row that is accessed in each iteration:
    Datapool option Iteration 1 Iteration 2
    Sequential and Private row 1 row 2
    Shared and Shuffled row x row y
    Fetch only once per user row x row x
  7. Click Finish.
Feedback