TestOptimal Data Designer

a smart test data design tool

What is Data Designer

TestOptimal DataDesigner is a rule-based combinatorial test data design and generation tool.

DataDesigner Features

  • Data generation
  • Data permutation
  • Data filtering
  • Custom function

press down arrow for feature details

Data Generation

  • Random distributions - guassian, poisson, etc
  • Patterns - email, phone#, address, etc.
  • Random select from a list

press down arrow to go to next slide.

Data Permutation

Combinatorial algorithms to generate minimum # of test cases to meet specific test strength (coverage):

  • Pairwise - two-way interactions
  • 3-Wise - 2-way and 3-way interactions
  • 4-Wise - 2-, 3- and 4-way interactions
  • 5-Wise - 2-, 3-, 4- and 5-way interactions
  • 6-Wise - 2-, 3-, 4-, 5- and 6-way interactions
  • Full Combinatorial - all possible interactions

press down arrow to go to next slide.

Data Filtering

Rule-based filters to remove unwanted test combinations:

  • Impossible scenarios
  • Low risk scenarios
  • Duplicate/similar scenarios

press down arrow to go to next slide.

Custom Function

Sharable user defined functions to:

  • generate field domain values
  • filter out unwanted combinations
  • set up field dependencies

DataDesigner IDE Overview

We will cover:

  • IDE UI Intro
  • Create New DataSet
  • Handle Field Dependency
  • Define Variable Test Strength
  • Create Filter Rules
  • Leverage Plugins
  • Generate Field Domains
  • Apply DataSet to Models
  • Example DataSets

IDE UI

DataDesigner IDE consists of:

  • Ribbon style tabs and toolbars
  • DataSet List Pane
  • DataSet Editor Pane

press down arrow to go to next slide.

IDE UI

press down arrow to go to next slide.

Tabs and Toolbars

  • Tab holds a set of toolbar items
  • Show/hide Tab Toobar section by clicking on tab label
  • Custom Toolbar on the right
  • Manage Custom Toolbar by clicking on
  • Toggle fullscreen display by clicking on

press down arrow to go to next slide.

DataSet List Pane

Search/filter DataSet List:

  • Enter text to search or filter DataSets
  • Support Regular Expression
  • Click on "x" to clear the filter
  • Drag divider to resize left/right panes

press down arrow to go to next slide.

DataSet List Pane

  • Click on DataSet name to open DataSet
  • Previous DataSet is closed automatically
  • Hide or un-hide DataSet List Pane by clicking
    "Hide"/"Unhide" in File/DataSet List Toolbar

press down arrow to go to next slide.

DataSet List Pane

New DataSet:

  • Create new DataSet by clicking
    File Toolbar icon
  • New DataSet automatically opens
    in Editor pane with default name

press down arrow to go to next slide.

DataSet List Pane

Delete DataSet:

  • select DataSets by checking the checkboxes
  • click "Delete" in File Toolbar
    to delete selected DataSets

press down arrow to go to next slide.

DataSet Editor Pane

  • Advanced Options - Rules & Variable Strength
  • Field Definition - Fields and domain values
  • DataTable - generated test combinations

press down arrow to go to next slide.

Create DataSet

Creating a DataSet involves:

  • Create a new DataSet by clicking on
    "New" in "File" toolbar
  • Create fields and define their domain values
  • Generate DataTable from field definition
  • Review DataTable, adjust field definition
    and re-generate DataTable

press down arrow to go to next slide.

Create / Edit DataSet

Field Definition Section:

  • Add a field by clicking on
  • Operations on selected fields (checked)
    • Delete - click "Delete" in Field Toolbar
    • Move - click "Shift Left"/"Shift Right"
      in Field Toolbar
    • Hide - click "Hide Checked" in Field Toolbar
  • Show all fields (unhide) - click on "Show All"
    in Field Toolbar

press down arrow to go to next slide.

DataSet Editor Pane

Field Definition Section - Domain:

press down arrow to go to next slide.

DataSet Editor Pane

Field Definition Section - Domain:

  • Field domain values to be tested for the field
  • List all possible values
    • One value per line
    • Discrete values
    • Boundary values
    • Equivalence class values
  • Integer, float, boolean or string
  • Blank value allowed, but must not be the last line
  • Can use MScript expressions
  • # of values drives # of test permutations

press down arrow to go to next slide.

DataSet Editor Pane

DataTable Section:

  • Generate DataTable by clicking
    DataTable Toolbar icon
  • Values can be edited but not recommended. Instead update Field Domain and re-generate DataTable
  • Add rows for additional test scenarios

press down arrow to go to next slide.

DataSet Editor Pane

DataTable Section - operations on selected rows:

  • Check the checkbox to select rows
  • Double click checkbox to check or un-check all rows
  • Row operations:
    • Delete
    • Move up
    • Move down
    • Move top
    • Move bottom

press down arrow to go to next slide.

Handle Field Dependency

Coupling - group dependent fields

  • Fields need to be synchronized,
    for example CreditCardType and CreditCardNum
  • Want to explicitly define combinations
  • Reduce generated test combination
  • Allow up to 9 coupling groups

press down arrow to go to next slide.

Handle Field Dependency

Coupling - group dependent fields

press down arrow to go to next slide.

Handle Field Dependency

Field Definition Section - Coupling:

  • blank for independent fields - common case
  • select same group for dependent fields
  • fields of same Coupling Group must have
    same # of domain values
  • Each group must contain at least 2 fields
  • Verify - used for result verification
  • Verify - not to participate in permutation

Define Variable Test Strength

Field Definition Section - Interaction/Strength:

  • Interaction/Strength determines test coverage
  • Overall Strength applies to all fields
    This may be sufficient
  • When to use field level Strength:
    • higher degree interactions for some fields -
      increase test coverage
    • lower degree interactions for some fields -
      reduce test coverage

press down arrow to go to next slide.

Define Variable Test Strength

Advanced Options Section - Interaction Group

  • First, create a new Interaction Group by clicking on
  • Group name is required and must be unique
  • Groups may be set to the same strength
  • Delete group by clicking on
  • Groups used by any field can not be deleted -
    not displayed

press down arrow to go to next slide.

Define Variable Test Strength

Field Definition Section - Interaction:

  • Identify fields to set the desired interaction
  • Assign fields to the same Interaction Group
  • Field can only be assigned to one Interaction Group
  • Minimum # of fields for Interaction Group,
    2 for pairwise, 3 for 3-wies, etc.

Create Filter Rules

Filter Rules - remove certain test combinations:

  • Infeasible combinations
  • Low risk scenarios - reduce test combinations
  • Redundant scenarios - reduce test combination

press down arrow to go to next slide.

Create Filter Rules

Advanced Options Section - Rules

  • Create a new rule by clicking on
  • Rule name is required and must be unique
  • Rule expression is required
  • Delete rule by clicking on
  • Rules used by any field can not be deleted -
    not displayed

press down arrow to go to next slide.

Create Filter Rules

Advanced Options Section - Rule Expression

  • Format: IF expr THEN expr
  • expr must evaluates to true or false
  • expr can be simple expr or compound expr

press down arrow to go to next slide.

Create Filter Rules

Advanced Options Section - Rule Expression

  • Simple expr: fieldName=value:
    • Operator - >, <, =, !=, >=, <=
    • Intger value - F1>5
    • Text value - F2="ABC"
    • Value can be an expression involving
      arithmetic operations on numeric fields: +, -, *, /, and %
  • Compound expr: use paranthesis to group exprs
  • More details on rule: wiki

Test Verification

Create fields to verify the test outcome

  • Support multiple verify fields
  • Verify fields do not participate in permutation
  • Static verify value: text, number, boolean
  • Dynamic verify value: MScript expression

press down arrow to go to next slide.

Test Verification

Dynamic verify field - MScript Expression

  • MScript expression using MScript utility functions -
    $today(), $rand()
  • Access other fields with [fieldName] -
    $add('[f1]','[f2]')
  • Nested MScript expression allowed -
    $add('$rand('[f3]')', '[f2]')
  • Custom plugin MScript function

Leverage Plugins

Other Options Section - Plugins

  • Plugins - select one or more plugins to
    add MScript functions
  • MScript function documentation available in Help
  • Only authorized (purchased) plugins can be selected

press down arrow to go to next slide.

Leverage Plugins

Other Options Section - Plugin List

  • DataDesign - support combinatorial data
    generation algorithms
  • DataGen - provides data generation functions
  • Service - provides utility functions and access
    to file, db, websvc
  • custom plugin - write your own plugins to provide
    additional MScript functions

Data Table Generation

  • Generate using Pairwise, 3-wise, ..., 6-wise
    and Full Combinatorial Algorithm
  • All dependencies (coupling) and rules are enforced
  • Mode - Affect performance (generation speed)
  • Default Mode IPOG good for most cases
  • Best Practice - instead of delete rows from DataTable:
    • adjust field domain
    • add/change filter rules

press down arrow to go to next slide.

Data Table Generation

DataTable Partition:

  • DataTable too large - Concurrent test case execution
  • Execute certain test cases together by a single
    model execution
  • Partition on any field - rows with same value form
    a partition
  • To partition DataTable:
    • identify or create a field whose value represents partitions
    • select the field as the partition field in "Other Options" section
    • re-generate DataTable

Import DataSet to Models

Use DataSet by importing into Models:

  • Open a model in IDE
  • Select "Transition DataSet" from transition context menu
  • Click "dataset" link next to "Import From" field.
  • Review DataTable imported
  • "_partField" column is the DataSet Partition Field if specified
  • Call $filterDataByThread('dsName') to activate DataTable Partition

Example DataSets

ATM Transactions:

press down arrow to go to next slide.

Example DataSets

Credit Card Payments:

THE END

Visit other tutorials Here

© TestOptimal LLC.