性能测试准备阶段一般需要提前将数据准备好,用于脚本的参数化以及后面压测。
性能测试数据一般分为存量数据和交易数据。存量数据为历史记录数据,一般较大。交易数据的数据量则需满足压测时的需求,要足够多。
数据准备一般有以下方法:
1.直接导入已有的数据库;(实际情况不会有大量数据的数据库,客户生产环境的数据库一般不允许导出)
2.用工具直接产生记录,比如压测脚本或者其他造数工具;
适用于测试点连贯的性能测试,可以用压测脚本产生所需要的数据;
3.编写数据库存储器埋数;
可直接将数据埋造于当前节点,不需要前置流转。
这里讲解下第三种方式埋数。
编写数据库存储器埋数前期准备:
1.页面测试点准备一条模板数据;
2.日志级别设置为可打印sql的级别;
3.先查询当前节点记录,记录后台sql相关表及记录状态,然后操作模板记录到下一节点,记录过程中涉及相关表记录;
这期间可借助工具将该记录导出sql文件,比如PLSQL等;
4.通过上一步可得到测试点数据涉及的表及状态;(亦可直接从开发得到相关sql)
5.根据前面得到的sql,将各个sql的字段进行变量参数化,以保证唯一。比如id,sql之间关联字段等;
使用notepad++打开导出的sql文件,汇总导出的sql;
选中字段值,notepad++会高亮显示其他位置关联的值;
Ctrl+h 对id等关联字段值进行变量替换。
6.Sql变量参数化后,套入存储器模板,进行局部调整即可;
7.维护变量参数化取值区间表格,防止多个测试点埋数冲突。
存储器模板:
----------------------oracle-------------------------
create or replace procedure 存储器名(x in number,y in number) is
j number;
i number;
begin
j:=0;
i:=1;
while j<x loop
------------------------------------------外循环sql
while i<=y loop
------------------------------------------内循环sql
i:=i+1;
end loop;
commit;
i:=1;
j:=j+1;
end loop;
end;
/
------------------DB2----------------------
--/
create or replace procedure 存储器名(in x bigint,in y bigint)
begin
declare j bigint;
declare i bigint;
set j=0;
set i=1;
while j<x do
------------------------------------------外循环sqlsql
while i<=y do
------------------------------------------内循环sql
set i=i+1;
end while ;
commit;
set i=1;
set j=j+1;
end while ;
end
/
Oracle存储器在command窗口 sql> 粘贴回车执行
exec 存储器名(x,y); (传入参数值回车执行)
DB2存储器在工具窗口粘贴回车执行
Call存储器名(x,y); (传入参数值回车执行)