Fastpoint
级别: 总版主
精华:
44
发帖: 5033
基地声望: 390 点
基地币: 1689 Bug
基地贡献: 0 点
好评度: 15 点
在线时间:818(小时)
注册时间:2005-10-08
最后登录:2008-07-22
|
[性能测试] 大批量测试数据的产生
我记得前段时间有论坛兄弟问我,性能测试中关于大测试数据产生的问题,因为前段时间比较忙,所以也没有功夫回答,现在不忙了,可以跟大家讨论讨论这个问题。
相比之下,大批量测试数据是针对系统设计的,目前我们公司的软件架构是标准的三层,前台业务操作后,通过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测试数据池。如果是自写程序执行验证,可以直接到数据库取值操作,不过这样跟严整的业务没什么两样,就是多了循环次数控制和结 果搜集,很少有人这么做,不过我倒是很希望大家能这样做做,呵呵。
写了这么多,请大家再看后给点自己工作中大数据的生成思路和范例脚本,个人提高困难,大家提高容易!
[ 此贴被Fastpoint在2005-10-18 01:11重新编辑 ]
|
可不可不要这么样徘徊在目光内 你会察觉到我根本寂寞难耐 即使千多百个深夜曾在梦境内 我有吻过你这毕竟并没存在
人声车声开始消和逝 无声挣扎有个情感奴隶 是我多么的想她 但我偏偏只得无尽叹谓
其实每次见你我也着迷 无奈你我各有角色范围 就算在寂寞梦内超出好友关系 唯在暗里爱你暗里着迷 无谓要你惹上各种问题 共我道别吧别让空虚使我越轨
|
|
[楼 主]
|
Posted: 2005-10-14 10:10 |
| |