Datafactory 实际使用案例

Datafactory 实际使用案例

一、       简介

QuestDataFactory 是一种快速的、易于产生测试数据工具,它能建模复杂数据关系,且有带有GUI界面。DataFactory是一个功能强大的数据产生器,它允许开发人员和QA毫不费力地产生百万行有意义的测试数据。

二、       原理说明

通过和数据库进行连接后,首先读取数据库中表的schema(概要),即表的定义之类的内容,以列表的形式显示;然后由用户定制要产生数据的具体内容,如数字范围、字符串长度、要产生数据记录的个数等等,最后运行工程,批量生成数据,Datafactory支持各种主流数据库(oracle、DB2、MS SQL),甚至excel、access等。下面以以主流的oracle为例进行说明。

三、       安装说明

第一步:解压Quest DataFactory v5.6 英文正式版.zip,执行setup.exe文件,按向导安装。

第二步:运行Keygen.exe,在Site Message中设置名称,下拉框中选择DataFactory生成 key。

 

 

第三步:安装成功后,使用key在bin文件中的工具(dfactory.exe)进行注册,选择DataFactory,点击Edit key,输入第二步中生成的key以及Site message中设置的名称即可。

 

四、       数据库环境说明

 

 

 

图表 1

数据库中有3个表,一个是FW_DEPARTMRNT(部门表),一个UP_STAFFROOM(教研室表),另一个为JH_COURSE(课程表)。现在我们需要用datafactory往JH_COURSE中插入记录,JH_COURSE中的STAFFROOMID需要读取UP_STAFFROOM中的STAFFROOMID,而 UP_STAFFROOM中的STAFFROOMID又取自FW_DEPARTMRNT的DEPID,所以我们需要先给UP_STAFFROOM插入记录,才能在继续添加课程记录。

下图为JH_COURSE中的字段信息:

图表 2

下图为UP_STAFFROOM中的字段信息

图表 3

五、       详细操作步骤

1、            连接数据库,创建工程文件

安装完datafactory之后,进入file菜单下面点击new,然后选择oracle数据库类型。

 

图表 4

下一步,输入需要连接数据库服务、用户名和密码。

 

下一步,选择需要插入数据的表UP_STAFFROOM和JH_COURSE。

注意:“Fetch Dependent Tables”按钮,用来加入对应所选表在数据库设计中有依赖关系的表,防止生成数据库时的疏漏。(不建议使用)

 

下一步,输入工程名称为“JH_test后,下一步完成即可。

 

 

2、            设置数据量及生成数据方式

Datafactory可对每个字段进行设置,在导入数据表时工具已通过数据字典读取每个字段的数据类型,根据不同的数据类型datafactory可进行不同的规则设置:

首先选择左侧的表设置需要插入的数据数量,如图:

 

Datafactory工具栏中的setting可进行通用设置,如下所示

 

3、            常见的三种数据类型的设置

1)   数字型

  1. 从本地表格中选择数据

将本地数据文件导入DataFactory的配置中,下次可以方便选择。

 

导入数据文件的操作如下:

第一步:准备数据文件,要求TXT格式,文件模版。

COURSENAME:varchar(64)

评论写作

论文写作

外贸英语

专业英语

低温物理导论

英语影视

英语听说训练

 …………

第二步:按图将数据文件导入DF。

 

 

 

 

  1. 取相关联的表的数据信息(主从表关系的字段)

比如,有2张表课程表(COURSE)和教研室表(STAFFROOM),课程的STAFFROOMID需要部门表STAFFROOMID中取值,如图设置:

 

  1. 从数据库的查询结果中选择数据(具有主键关系和转码的字段)

将查询的sql 语句粘入文本框,如教研室表中的STAFFROOMID信息需要在部门表的PEDID中取值,如图设置:

 

  1. 插入连续的值

   我们能够设定起始值及增长值的大小,系统自动计算结果,如:起始值为001,增长值为1,则产生的数据序列为001,002,003,……例如编号(COURSENO),具体设置如下图:

 

  1. 插入一定范围内的随机值

插入随机值,我们可以设置其范围,则结果大小在设定范围之内,所以选择Insert random values方式,例如学分(CREDITHOUR)设置为0—20之间随机取值,具体设置如下图:

 

  1. 插入常量

将字段信息设置为一个常量,例如总学时(TOTALPERIOD)设置为80,方法如图所示:

 

2)   字符型

  1. 从本地表格中选取数据

具体方式参考:(A.从本地表格中选择数据

  1. 取相关联的表的数据信息(主从表关系的字段)

具体方式参考:(B取相关联的表的数据信息(主从表关系的字段))

  1. 从数据库的查询结果中选择数据(具有主键关系和转码的字段)

具体方式参考:(C从数据库的查询结果中选择数据(具有主键关系和转码的字段))

  1. 插入随机的字符组合

插入随机的字符组合,可以设置字符组合的长度,例如SHORTNAME(课程简称),具体设置如下图:

 

  1. 插入常量字符串

将字段信息设置为一个常量字符串,例如“是否实践环节”(ISPRACTICE)这个字段,可以根据体的业务要求输入一个常量字符串“是”或“否”,具体设置如图所示:

 

  1. 插入组合文本,可以插入文本,数字,日期时间混合的文本。

设置一个固定字符串+一个递增值为1的流水号的字段。

 

例如课程名称(COURSENAME)需要设置固定字符串为“英语”,递增值为1,具体操作如下:

第一步:选择Build a composite field(组合文本)方式。

 

第二步:通过点击的 add 按钮得到下图界面

 

第三步:根据具体要求选择首先选择Text字符型,点击Ok,得到下图,进行设置如下:

 

第四步:点击Add,因为要插入递增流水号,随意选择Numerice,点击ok得到下图进行设置:

3)   日期/时间

  1. 取相关联的表的数据信息(主从表关系的字段)

具体方式参考:(B取相关联的表的数据信息(主从表关系的字段))

  1. 从数据库的查询结果中选择数据(具有主键关系和转码的字段)

具体方式参考:(C从数据库的查询结果中选择数据(具有主键关系和转码的字段))

  1. 插入连续的时间

插入连续的时间,可以指定起始时间和增长时间,例如入学时间(ENROLDATE)设置如下图:

 

  1. 插入随机的时间(可以设置时间范围)

插入随机的时间,可以设置时间范围,例如毕业时间(GRADUATEDATE)具体设置如下图:

 

  1. 插入当前系统时间

插入系统当前的时间,可以设置日期的格式。

 

格式设置方式如下:

第一步:点击Format(日期格式)设置按钮

 

第二步:进入页面进行设置

 

4、     Run(运行)

 

5、          运行时出现的一些关于约束的问题

出现一些字段有关于约束的提示

 

根据提示的字段到数据库中进行相关约束的查找查询,后根据具体的字段约束,选择合适的方式进行设置。

+

 


 

  

 

 

  • 从数据表插入数据,这里的数据表是系统提供的。
  • 从数据库插入数据,我们需要自己编写SQL语句从数据库中提取数据。
  • 用表达式产生数据,我们可以编写表达式,系统将使用结果生成数据。
  • 插入连续的值,我们能够设定种子及增长值的大小,系统自动计算结果,如:种子为1,增长值为2,则产生的数据序列为1,3,5,7……
  • 插入随机值,我们可以设置其范围,则结果大小在设定范围之内。
  • 插入常量,结果将为常量值

实例说明:

数据型有4种设置规则 Insert values  from  an arithmetic expression、Insert sequential values、Insert random values、Insert a constant value.

  1. 1.   Insertvalues  from  an arithmetic expression方式如下

用表达式产生数据,我们可以编写表达式,系统将使用结果生成数据,如下图:

 

  1. 2.   Insert sequential values方式如下:

如JH_COURSE表中的COURSENO(教研室编号),COURSENO编号字段为long integer类型,这里设定为插入顺序值(insert sequential values)。

 

  1. 3.   Insert random values方式设定规则如下:

如JH_COURSE表中的TOTALPERIOD(总学时)为number类型,这里设定一个随机数值(Insert random values),数字跨度为1—200如下图:

 

  1. 4.   Insert a constant value.方式

例如TOTALPERIOD(总学时),我们需要设置它为一个固定的数字,就直接选择Insert a constant value(插入常量)方式,然后自定义将要应用的常量数据,如下图:

 

4)   字符型

 

  • 从数据表中插入数据。
  • 从数据库中插入数据。
  • 从外部文件中插入数据。
  • 插入随机的字符组合,可以设置字符组合的长度。
  • 插入常量字符串
  • 插入组合文本,可以插入文本,数字,日期时间混合的文本。

实例说明:

1、     外部数据(TXT 文档)的引入

说明: 在测试数据库时,很多情况要求根据真实的数据来做必要的测试,这就需要我们可以通过外部自定义的文档来产生数据表中的数据,比如我现在有一个 TXT 文档,里面我想要录入到数据表”港口”的值,上海,大连,香港,福建,青岛 .....

首先创建一个 TXT 文件,名字任意,格式如下

注意: 字段名称:字段类型 (字段类型长度)

引入 TXT 文件的方法:

   右击项目名称(比如说这里的 JH_COURSE),如图下图所视

 

选择 Insert Create Datatable 进入如下图界面

 

点选 Import data from file,点击下一步,点击 Browse 选择相应的 TXT 文件,点击下一步,然后为该引入的 TXT 自定义一个名字,下一步,最后完成引入 TXT 文件的操作.引入成功后,然后选择Insert value from  data  table方式,在data中选择刚刚定义的那个名称。

 

例如JH_COURSE表中的COURSENAME(教研室名称),我们需要设置的字段要求是:教研室+一个自动增加的流水号,方式如下:

首先选择Build a composite field(创建一个合成字段)方式,然后我们来对这个合成字段做格式设置,通过点击的 add 按钮得到下图界面

 

因为我们要产生COURSENAME这个固定的字符,所以我们选择 Text 类型,点击 OK,进入下图界面,在 Option 中选择对应的 Insert a string constant ,

 

然后在 Constant Text Expression 中输入自定义的字符,比如这里的教研室,完成后保存设置

 

因为还要生成一个流水账号,所以还要通过点击的 add 按钮,我们选择 Numeric 类型

 

点击 OK,进入下图界面,在 Option 中选择对应的 Insert sequential values,

 

然后进行字段规则的设置,start表示开始流水号,Increment表示递增值,

完成后保存设置

 

对于合成字段的元素,选取后可以进行策略修改(Modify),删除(Remove),顺序上移(Move up),顺序下移(Move down)

 

5)   日期/时间

 

  • 从数据表中插入数据。
  • 从数据库中插入数据
  • 插入连续的时间,可以指定起始时间和增长时间。
  • 插入随机的时间,可以设置时间范围
  • 插入当前系统时间

日期/时间有3种设置规则 Insert sequential values、Insert random values、Insert  the current system date

  1. 1.   Insert sequential values方式

例如JH_COURSE表中的CREATETIME(创建时间),我们需要设置当前时间+递增值为1,递增类型为月的规则,我们将在Option中先选择Insert sequential values方式,start选择当前时间,Increment为1,类型选择month,进行设置,如下图:

 

  1. Insert  random  values方式

例如JH_COURSE表中的CREATETIME(创建时间),在Option中先选择Insert  random  values方式(某一个时间段),我们在Between this date时间选填控件中进行设置,时间跨度选择为2005年-2013年的任何一天,如下图:

 

  1. Insert  the  current  system  date 方式

  例如JH_COURSE表中的LASTMODIFYTIME(最后修改时间),在Option中先选择Insert  the  current  system  date方式(插入系统当前时间),既然是最后修改时间那我们就设置为系统当前日期。

  1. 此外可以通过weekdays and weekend days(工作日+周末)/weekdays only(只有工作日)/weekend days only(只有周末)来设置周末,如下图:

可通过format选项来设置日期格式,分别设置Date和Time的格式,生成数据将以设置样式保存到数据库中,样式可参照最下方Sample。此外,也可以在Custom Format选项中指定自定义格式,如‘2010-08-18’。

6、     外键字段的产生

说明:外健是数据库关系中最普通也是使用最平凡的约束方式,我们可以通过二种方式来实现外健约束. 一种是 Insert value from a data table,另一种是 Insert value from an sql database

1)       Insert value from an sql database 方式

 例如:UP_STAFFROOM表中STAFFROOMID和 FW_DEPARTMENG表中 DEPID 之间是外健关系, 所以选择从数据库插入数据,我们需要自己编写SQL语句从数据库中提取数据,STAFFROOMID需要取DEPID值,因此我们使用Insert value from an sql database方式。

我们把DEPID字段产生的方式先设置成为写 SQL 语句的方式,然后在SQL Statement 中填入Select DEPID from GDS_CS.FW_DEPRATMENT  这个简单的SQL语句使STAFFROOMID 得到 DEPID 的值,并且用户可以在 SQL 返回的结果中,筛选所需要的内容 if more than one recode is returned(如果返回的条件超过一行),Use first record(只选择第一行作为当前字段值),Select a record at random(随机选择一个值作为当前字段值) 注意:由于教研室ID字段是唯一的,所以要勾选Unique(唯一的)。

 

2)       Insert value from an sql database 方式

例如:表UP_STAFFROOM中的SATFFROOMID与表JH_COURSE中的SATFFROOMID为外键关系,所以表JH_COURSE中的SATFFROOMID需要取值与表UP_STAFFROOM中的SATFFROOMID,需要使用Insert value from a data table 方式,分别出现以下设置内容,在Data(产生数据的数据源)中选择与之关联的~GDS_CS.UP_STAFFROOM 表,然后在Field中选择SATFFROOMID 如图:

 

 

7、 字段转码问题

例如:FW_COURSE表中的SUBJECTTYPE(课程学科分类码),转码问题需要选用Insert value from an sql database方式,首先在数据库中查询出需要转码的字段。

 

根据表中的提示,先在FW_CODELIST视图中查看有没有KCXKFLM的码值。

 

我们把需要转码的字段产生的方式先设置成为写 SQL 语句的方式,然后在SQL Statement 中填入select CODEVALUE  from GDS_CS.FW_CODELIST where  CODETYPE='KCXKFLM' 这个简单的SQL语句使SUBJECTTYPE得到KCXKFLM 的码值。

8、 运行(Run)

9、          运行后出现的一些约束问题

如果运行中出现一些字段有关于约束的提示

 

根据提示的字段到数据库中进行相关约束的查找查询。

 

然后根据具体的字段约束,选择合适的方式进行设置。

 

posted @ 2019-11-27 20:41  测试小乙  阅读(1434)  评论(0编辑  收藏  举报