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 Up和Move 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
- datafactory案例分析(4个)
- DataFactory
- DataFactory
- 第一个struts1案例分析
- MATLAB神经网络43个案例分析
- struts2.X心得2--第一个struts2案例分析以及整合c3p0连接数据库案例分析
- MBA案例分析(沟通)
- MBA案例分析(人员培训)
- (转)需求分析案例
- autosignck(1.案例分析)
- hadoop案例分析(二)
- hadoop案例分析(三)
- Hibernate读书笔记-----hibernate第一个案例的分析
- struts1.x心得2--第一个struts案例分析
- 《MATLAB神经网络30个案例分析》学习笔记
- 关于《 MATLAB神经网络30个案例分析》坑的控诉
- 案例分析
- 案例分析
- 无法使用内置管理员账户打开的终极解决方法
- Handler,MessageQueue,Runnable,Looper
- adb shell 命令详解
- 将Word文件快速转换为PPT文稿
- Python序列类型操作符和内建方法
- datafactory案例分析(4个)
- 杭电OJ A+B for Input-Output Practice (I)
- expire_logs_day binlog自动过期清理binlog
- WebAPI的一种单元测试方案
- 欢迎使用CSDN-markdown编辑器
- 多线程 - 阻塞栈blockingDeque
- Android实现滑动的几种方法
- UML中关联(Association)、聚合(Aggregation)和合成(Composition)之间的区别
- 角色类设计2