背景问题及解决方案问题
一个系统中所有模块的输入数据结构一致,都是明文的行数据,行数据之间逻辑、列数据之间逻辑通过数据本身很难看出,导致构造的数据可复用成本高,对大数据的可复用成本几乎为0,而每个数据对应的测试点更是难以一一对应
解决方案
数据之间的逻辑关系通过规则文件描述,然后用开源DGL工具将规则文件变成实际的输入、输出数据,解决了数据逻辑不易读的问题,同时解决了数据与测试点难一一对应的问题,将规则文件抽取公共lib库,只关注模块处理的域,大大降低DGL复用的成本,也增加了规则文件的易读性,解决了手工构造数据后续难复用的问题
DGL功能与原理
主要功能
1. 通过定义模板,生成所需要数据量的数据。
2.dgl构造数据优势:
a) 准确:只要模板定义正确,就不用担心生成数据的正确性
b) 可复用:通过保存定义好的模板,可以为以后的case再构造数据的时候节省时间。定义的模板越通用,这样通用的模板积累的越多,后面构造数据越容易
c) 易维护:当策略改变时,为策略构造的数据也需要修改时,只需要修改相应的规则文件中的一些规则的定义就可以很方便快速的获取新的数据。而且比直接保存case 数据占用空间和修改成本小得多。
d) 为自动化实现打下良好基础:构造的数据后续复用,为自动化工具提供可行性
原理
DGL定义了一组简单的模板拼装的语法,用户用这种语法生成模板传给DGL工具进行解析,会得到解释为C语言的.c文件。再将.c文件编译执行即可以得到数据
适用范围
1. 适用于生成规律性强的数据,大数据量的输入构造,
2. 不适用与结构复杂的数据,如网页数据
创新点及应用效果
创新点
1. 将原来手工构造数据工作自动化,并建立公共规则lib库,使得数据易复用,易修改
2. 解决了原始方式回归测试时,因数据不可复用而无法进行的问题
应用效果
1.提高了代码覆盖率,提高测试质量:原始手工构造数据无法复用,每次测试只关注新feature,遗漏了因修改新feature带来的旧feature bug
2.缩短原式数据构造时间的30%:原始手工构造时需要构造每个域,因为规则文件有公共lib库对default属性描述,现在只需要关注程序逻辑关注的域,会大大降低数据构造的时间
3.为自动化实现打下良好基础:构造的数据后续复用,为自动化工具提供可行性
4.构造大数据通过操作一个变量即可:改变原来手工一点点构造的方式,只需修改一个变量,在分钟级即可实现大数据的构造描述