There are three types of test data files:
- Tabular data has a regular structure of rows and columns. DTM Flat File Generator is suitable for this kind of test files generation.
- The structured files have structure contains static and changeable content. For example, e-mail message has "from", "to" and "subject" static headers with variable data: names, address or text in the message body.
- The non-structured files have changeable content only. The file can have or have not the rule that describes a sequence of variable data items.
In the article, we'll dwell with the second case and with the third case with a repeatable structure of information block.
Let's define "template" as a document that defines a sequence of static content and rules. Each rule describes how the changeable item of the target text should be generated.
There are three types of changeable items:
- Randomly generated content.
- Optional document's fragment.
- Repeatable document's fragment.
Of course, the second and third items can contain static text as well as the first item or items. Let's look at a few examples for each type of item. The first example is a greeting part of the message:
Dear ^^=$Lib(FullNames)^^,
This part of the template contains three items "Dear " text, test data generation engine call
($Lib function) and comma at the end of line.
The second example demonstrates how the optional fragment works:
Technical support^^optional^^ team^^end^^.
This text also has three fragments and adds " team" string between "support" word and the dot sign at the end of the statement. The probability of the "optional" fragment is 50% by default. The NN parameter defines custom probability for the block.
The last example for changeable items is more complex because it contains "repeat" command and two nested data generation engine calls:
^^Repeat 5^^ ^^=$Inc()^^) ^^=A{5:10}^^
The repeat-end block defines that the program should iterate the block five times. $Inc() call with ') ' produces 1), 2), ... 5) elements and A{5:10} generates a random string of upper letters between 5 and 10 symbols, e.g.:
1) GLOTXOX 2) HHZRC 3) TQEOSC 4) ASKMBJ 5) QKVEKLRPY
Test File Generation Process
How to use the template-based test file generator in the software development process? Obviously, we have to define the template at the first step. The preview function shows sample template processing result by one click.
Please keep in mind, that you allowed using database data as a source for template filling out. The engine's functions like $Table or $Query were designed for this purpose. We recommend to establish default connection if you decide to use this feature.
The second step is output options definition. By default, only output folder is a mandatory parameter. However, you can manage output file name and even add $DATE$ and $TIME$ macro to the file name pattern. This feature helps to generate the unique set of test files per each execution.
In the last part of our article, we'll build the complete sample. It is a file with the three-level corporate structure: department-manager-employees.
Step 1, general template and department level loop.
Corporate Structure Definition. ^^repeat 5^^ Department '^^=$Lib(Departments)^^' (we'll place manager definition here at the second step) ^^end^^
Step 2, manager information definition
Manager: '^^=$Lib(FullNames)^^', Room# ^^=NNNN^^
We added manager's name and four-digits room number.
Step 3, employees with hire date and phone extension
^^repeat 2 to 7^^ -^^=$Lib(FullNames), from $RDate(DD-mon-YYYY,,31-dec-2014), Ext:NNN^^ ^^end^^
As you can see, nested ^^= statement contains a few data generation engine calls at once. It is acceptable in most cases. Please refer to engine's manual for details.
There is begin of sample output file:
Department 'Executive' Manager: 'Warner Pencak', Room# 6151 -Katy Yopp, from 14-sep-2011, Ext:725 -Florencia Myrck, from 05-jan-1985, Ext:620 -Keneth Nykiel, from 19-dec-2005, Ext:020 -Warner Feduccia, from 26-aug-1981, Ext:496 -Tania Mcgranahan, from 29-feb-2002, Ext:951 Department 'Marketing' Manager: 'Isreal Millstead', Room# 3762 -Dell Draa, from 18-nov-2013, Ext:187 -Cortez Baumkirchne, from 20-mar-1986, Ext:445 -Erlene Krolick, from 19-jan-2009, Ext:066 Department 'Logistics' Manager: 'Hong Neither', Room# 5428 -Granville Cirioni, from 17-nov-2011, Ext:137 -Althea Paras, from 01-aug-1977, Ext:089 -Broderick Derenzis, from 19-nov-2003, Ext:561 -Arnoldo Linkon, from 19-feb-2001, Ext:425
See Also
- How to build test XML documents
- Populate MongoDB database with DTM Data Generator for JSON