大批量测试数据的产生

来源:互联网 发布:淘宝csv数据包 编辑:程序博客网 时间:2024/04/29 10:03

我记得前段时间有论坛兄弟问我,性能测试中关于大测试数据产生的问题,因为前段时间比较忙,所以也没有功夫回答,现在不忙了,可以跟大家讨论讨论这个问题。

相比之下,大批量测试数据是针对系统设计的,目前我们公司的软件架构是标准的三层,前台业务操作后,通过CORBA,将数据交给DB处理,我相信国内目前很多的软件都是这样的,或者少了CORBA这一层。

在大批量测试数据产生的操作方面有一个逻辑,就是测试针对业务,我感觉有些朋友在这种测试设计上偏向了硬件方面的性能,对于业务的数据单项生称我可以举个例子:

1.某种业务,通过某种业务规则的数字输入,通过验证后,请再次输入某种认证数字,最终提交。
2.分析该业务操作顺序,如果有ROSE的顺序图或者时序图那是最好了,如果没有那就只能看CODE了,看CODE最关键的是要知道前台取值、两组验证方法和最终数据插入DB顺序动作。
3.设计单项业务数据生成程序
4.验证生成程序的数据是否可以被业务正确操作

第一步是个业务操作的顺序,很简单,我相信大家手头都有一堆的功能测试用例,根据这个提取就可以了。
第二步两组验证方法可能是个关键设计点,这将最终影响你的后续生成数据脚本是否正确,比如第一组验证,首先是在前台做规则验证,然后到Table_res01中取数据进行数据是否存在验证,第二组验证先到Tabl
e_res02中取数据进行数据是否存在验证,然后做该数据的状态位验证,我相信任何系统对输入数据的验证都要比我举的例子复杂。
第三步可以写程序或者使用数据库提供的Script,我门这里ORACLE,所以使用ORACLE的PL-SQL就很明朗了,我提供一个通用的脚本,很简单的:
procedure proc_new_create
is
v_number_status Table_res01.v_number_status % type;--状态位描述01
v_status01 Table_res01.v_number_status % type;--状态位描述02
v_status02 Table_res01.v_number_status % type;--状态位描述03
v_status03 Table_res01.v_number_status % type;--状态位描述04
v_begin_id number;--起始位
v_loop_number number;--生成序列
v_loop_index number;
v_region_code Table_res01.region_code % type;--地区标示

begin

v_begin_id := 0;//起始位0
v_loop_number := 10000;//生成10001个数据
v_region_code := '570';//地区编码
v_number_status:= '#2305';//前置标准码,固定

v_loop_index := 0;

delete from Table_res01 where res_number_status = v_number_status and region_code = v_region_code;
commit;--事先删除旧数据是个好的习惯

while v_loop_index < v_loop_number
loop
v_status01 := v_loop_index + v_begin_id;
v_status02 := '#' || v_status01;
v_status03 := '#' || v_status02 || lpad( to_char( v_loop_index ), 4, '0' );

insert into Table_res01 (status01, status02, status03,number_status)
values(v_status01, v_status02, v_status03,v_number_status);

insert into Table_res02 (status01, status02, status03,number_status)
values(v_status01, v_status02, v_status03,v_number_status);

v_loop_index := v_loop_index + 1;

if mod(v_loop_index, 1000) = 0 then
commit;
end if;

end loop;

v_loop_index := 0;
commit;
end;

这种程序是很简单的,我相信很多人轻易的就可以写出来,实际上业务数据是很复杂的,所以不断的DEBUG是必需的,值得注意的是,不要在正式的数据库中进行调试,如果必须请记录表的SEQUENCES,便于数据的
清除,当然写个配对的删除脚本也是必需的,这种脚本的编写也是巨大的,因为业务数据的受理成功后会给多个表插值,其中涉及大量的数据交叉,写的时候务必小心。

第四步实际上是一个业务验证,严正你写出的脚本产生的数据能被你的业务正确的接受,正确的执行,很简单,做一遍。

如果是性能测试,就要涉及性能测试工具,如果是LR就把数据到出到TXT,然后加入LR测试数据池。如果是自写程序执行验证,可以直接到数据库取值操作,不过这样跟严整的业务没什么两样,就是多了循环次数控制和结
果搜集,很少有人这么做,不过我倒是很希望大家能这样做做,呵呵。

写了这么多,请大家再看后给点自己工作中大数据的生成思路和范例脚本,个人提高困难,大家提高容易!

原文:http://blog.51testing.com/index.php?op=Default&postCategoryId=256&blogId=130

原创粉丝点击