datafactory案例分析(4个)

来源:互联网 发布:哪个淘宝课程好 编辑:程序博客网 时间:2024/06/16 09:53

案例说明:

 

       案例一: 外健字段的产生

 

   案例二: 外部数据(TXT文档)的引入

 

   案例三: 单据编号的产生方法

 

   案例四: 主从表关系数据的建立

 

 

1          外健字段的产生

    

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


 图 1.0 

1) Insert valuefrom an sql database方式

 

     图 1.1                               图 1.2

 

 上图中Countryarea表中CA_tradezone和Tradezone表中TZ_code之间是外健关系

我们把CA_tradezone字段产生的方式先设置成为写SQL语句的方式,然后通过

Select TZ_code from Tradezone 这个简单的SQL语句使Ca_tradezone得到TZ_code的值,并且用户可以在SQL返回的结果中,筛选所需要的内容if more than onerecode is returned(如果返回的条件超过一行),

Use first record                                (只选择第一行作为当前字段值)

Select a record at random            (随机选择一个值作为当前字段值)

 

注意: 

当然这种数据产生方式其实不仅仅可以产生外健关系的数据,因为SQL语句是比较灵活的,读者可以自己常识写一些复杂的SQL语句来多尝试一下

 

 

2)      Insert value from a data table 方式

     

     

                    图 1.3

 

如图选择Insertvalue from a data table 方式,分别出现以下设置内容

  Data (产生数据的数据源)

    

                               图 1.4

 

    

                      图 1.5

 

     说明: Data下拉框默认列出了系统中提供的数据源,包括各个国家的公司名称,男英文名称,女英文名称,电话号码,区号-电话号码,等等,特别说明的是,用户可以通过勾选图1.5中的Createtemporary data table.. (创建一个临时的数据表),来使在datafactory中数据源中有对应的表,比如选择数据表TRADEZONE,然后在图1.5中勾选Create temporary data table ,这样当数据表TRADEZONE下面任意使用Insert value from a data table方式时,Data中就会有相应的TRADEZONE选项,

   注意: datafactory中左边的数据表是有上下关系的,用户可以通过右击表,通过下图中的Move UpMove Down来调整表的上下顺序

 

 

 

Fild

 

  

               图 1.6


 说明: 如图1.6中,列出了当前选择的数据源中的可选字段,

 

RetrievalMethod (取数方法)

 

    

                  图 1.7

 

说明:  如图 1.7中, Select arecord at random (随机选择一行)

          Select records sequentially (按顺序选择一行)

          Synchronizewith other fields from the same table(相同的字段从同一个表中)

 

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

 

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

   上海,大连,香港,福建,青岛 .....

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

 port_name:varchar(100), port_sname:varchar(100)

  上海,shanghai

  大连,dalian

  香港,xianggang

 …………

 

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

 

引入TXT文件的方法:

  右击项目名称(比如说这里的liyuan),如图1.8所视,选择InsertCreate Datatable 进入图1.9界面,点选Import data from file,点击下一步,点击Browse选择相应的TXT文件,点击下一步,然后为该引入的TXT自定义一个名字,下一步,最后完成引入TXT文件的操作.

引入成功后,在左边的树型结构中会有如图1.8.1中的数据源,图中"国内区域",”国家地区”,”贸易区”,”港口” 是引入TXT后的结果.

                                     

  

                    图 1.8                                                     图 1.8.1

 

                              图 1.9

    

     

使用引入后的TXT字段内容:

如图2.0是根据上面的TXT引入到datafactory中后,产生的数据源.,Data 中显示的是TXT文件的名字,Field里显示的是TXT文件中第一行的字段名,当然这里的名字可以完全自定义,

 

           图 2.0

 

  当然用户也可以把几个表的字段内容同时放在一个TXT文件里,做一次引入,但是这样不方便以后的数据源维护,不建议使用.

  比较遗憾的是,Datafactory导入的方式只支持TXT文件.

  图1.9中的Import data from database 是根据一段SQL语句来得到数据源,原理跟图1.0中使用Insert value from an sql database差不多,读者可以自己尝试一下.

 

3          订单编号的产生 

 

 

说明:在ERP的测试中,对单据的测试是最重要的,那么我们如何来产生符合实际业务的数据那,比如说单据编号,以及之后要讲解的单据主从关系表的产生.

比如说,系统中的单据编号产生的方式是 TP + 当前日期 + 一个自动增加的流水号

   TP20080826001,TP20080826002,…..

 

  

                图 2.1

 

如图2.1中的PI_ID字段,我们对它做一个单据编号产生方式的设置,

   选择Option里的Build a composite field(创建一个合成字段) ,当然这个选择只有字段类型是Text时才存在,原因读者自己琢磨.

    然后我们来对这个合成字段做格式设置,首先单据编号中的TP是个固定字符,通过点击图2.1中的add按钮,得到图2.2界面,因为我们要产生TP这个固定的字符,所以我们选择Text类型,点击OK,进入如图2.3界面,在Option中选择对应的Insert a string constant ,然后在Constant Text Expression中输入自定义的字符,比如这里的TP ,完成后保存设置,以上是对单据编号TP字符自动产生方式的设置过程,之后的时间,流水号的产生方式,在这里不再详细解说,原理是一样的,只不过在Element Type中选择不同的类型,

Date / Time 或 Numeric ,相关截图,图2.4 是Data /Time 的设置界面,图2.5 是Numeric的设置界面.

 

    图 2.2


            图 2.3

 

 

                     图 2.4

 


                  图 2.5

 

4   主从关系表的创建

 

说明:

主从表是ERP系统中最常见的一种表关系结构,这里先简单介绍一下主丛表的结构

比如说有一张单据,TPxxxx001,单据里有3个商品,分别是商品1,商品2,商品3.

 TPxxxxx001              数量         单价        金额

        商品1      10                   1.58                15.8

        商品2           20                    2.1                 42

    商品3           30                    3.1                 9.3

 

主表里的数据结构:

    CO_ID

       TCxxxx001      单据属性1      单据属性2      单据属性3

 

丛表里的数据结构:

        COD_ID  明细编号      数量        单价    …                       

     TCxxxx001     1          10          1.58

     TCxxxx001     2           20           2.1

     TCxxxx001     3           30           3.1

      TCxxxx001    N          N             N      …

   说明: 主表中是以单据编号为主健的,丛表中是以单据编号+明细编号的组合为主健.

我们来分析一下这二个表中三个字段之间的关系,首先要确定的是,主从表之间应该是先有主表记录,再有从表对应的内容,这点是非常重要的,比如上面的单据表结构,首先我们要确定的是主表中的单据编号,然后把该单据编号复制到从表的COD_ID中,当然这个时候从表的该单句编号对应的明细可能是1-99999的任意数值,对应的实际业务也就是说,一张单据里面可以包括99999条明细记录,并且从表里的明细ID编号不能重复对于一个COD_ID来说.(这是数据库设计方面的知识,读者自己理解)

 

下面我们来看在Datafactory中怎样实现这个逻辑:

 

   

    图 2.6                              


 图 2.7

 

   如图2.6中,CUSTOMERORDER表是主表,CODETAIL是对应的明细表,读者可以通过图2.7和图2.8的方法来产生主从表关系,

   如图 2.8中,Records1 to 5的意思是指,主表中的一条主健ID允许对应丛表里的最多5条明细ID,(读者注意,对应明细ID的数量是1-5,也就是说产生的单据明细可以是5以内的任何值). Parent Table中选择主表中的主健字段,child Table中选择丛表中对应的关联字段,比如图中的CO_ID和COD_ID.它们是这二个主丛表之间的父子关联字段.当然,图2.8中也可能是对多个主丛字段之间的关联,这个留给读者自由发挥.

由上面的分析我们知道,COD_DETAILCODE这个是明细表里的明细编号,对于一个单据编号来说,这个明细编号应该是唯一的,所以我们可以把COD_DETALCODE这个字段设置成自动增加的类型,根据上面的设置,我们可以得到下面的二张单据表

主表

TCxxxx001     

TCxxxx002       

……

TCxxxx00N

丛表

TCxxxx001         1

TCxxxx001         2

……

TCxxxx001         N

TCxxxx002         N+1

TCxxxx002         N+2

 

 

 

            图 2.8

 

 

 

 

 

关于主丛表关系的思考:

 

  1 明细编号COD_ID的循环问题

    上面明细id产生的方式跟实际数据有所不同,实际的数据应该是每张不同的单据明细是各自增加的,当换一个单据编号后,明细id应该重置成1开始自增,但问题是我们如何知道重表中的当前COD_ID是新的?

 

2     主丛表数量一致的问题

 

数据主丛表结构的人都知道,一般对于一张单据来说,主表里会有一个总数量,明细表里又存储了各个商品的数量,实际的业务数据总数量肯定会=对应明细数量之和,但是我们在datafactory里就很难实现这个数据产生逻辑


希望能结识更多爱好软件测试的朋友,喜欢交流的朋友请加 群:339614248

0 0
原创粉丝点击