自动化测试框架爱好者,非培训机构、非托、非盈利,纯个人!软件自动化测试交流 请加我QQ 459864689!更多自动化测试的信息请访问我的个人小站www.zhushangyuan.cn,专门研究selenium自动化测试框架的分享站点。

存储过程在性能测试中的应用

上一篇 / 下一篇  2009-01-12 09:54:56 / 个人分类:性能测试

存储过程在性能测试中的应用51Testing软件测试网/Sr,[y7e(G%w

 

7Qy0mt*L0

测试具有重复性,每个测试用例可能执行十几遍,我恨透了每执行一次测试,准备测试数据、还有清理测试数据都要花费大量的时间,怎么样做才能把这个时间减为0?在大量数据处理的性能测试中这个需求更迫切。怎么样做才能让测试环境更健壮呢?我执行了一次测试用例,喝杯水抽支烟的功夫,就能再次执行的同样的测试用例,想想多好呀。

2aFu#XR;V0

    在年前负责的工作流项目的性能测试过程中,遇到一个小问题,我们需要足够多的工作流用户。在实际生产环境中也是需要这么多的登录用户的,不可能出现几百个用户同时登录系统处理同样一条记录的情况吧。怎么解决这样的问题?在界面上一个用户一个用户的增加?800个用户呢?!因为登录用户的信息是维护在数据表里面的,在界面上的操作都会调用持久层的接口把用户信息保存在数据库的,我们如果明白后台SQL语句执行逻辑,是可以使用存储过程批量生成工作流用户的。这样就能保证每个工作流用户的待办任务显示的流程记录是不一样的。

%P]U `JteL8v0

下面是创建存储过程department_insert_test_usersSQL语句,可以像创建一个普通的表对象一样在SQL/PLUS里执行。这里只是演示使用,为避免泄漏项目信息,一些表名和字段已经删改,现在不保证在数据库可以执行通过。

B k1g8F|"V)zTea0

 51Testing软件测试网*Y!DG @,Aa-io0]1BMA`

createorreplaceproceduredepartment_insert_test _users(testuserinvarchar2,iCountinnumber)is
4n!xg)d!v5|0iint;51Testing软件测试网 nljVt[ a)hZ
--parent department stru_id BPM
V$C;j\zw0p_stru_idvarchar2(
30);
2K9\-b O4^)S?0p_organ_idvarchar2(
30);51Testing软件测试网-~3|'M J(lM0] d!A
p_stru_pathvarchar2(
20);
YAq@0f4_0accountvarchar2(
20);51Testing软件测试网/V_DKTu(e rj
var_organ_namevarchar2(
20);51Testing软件测试网;m4C @@ S%_(FY$g
var_organ_idvarchar2(
20);51Testing软件测试网,B F:T&LP8v2Z[!N8K3[e@#R;W
var_stru_id varchar2(
20);
:~?-xd~6N9y.b0var_stru_pathvarchar2(
1000);
}Q/@-@+\7vz0begin51Testing软件测试网g#M~9tV tg_
--insert bpm department51Testing软件测试网(i TSj[]
p_stru_id :=
'Sp_stru_id00113';
bQAyg.R-T0p_organ_id :=
'Op_organ_id0113';
BBn.\ q7J0p_stru_path :=
'1#'|| p_stru_id;
Z2w JcY#C0
I;h7}S!m1z9tXu0deletefromtest_struwhereSTRU_ID=p_stru_id;
K X MVn0eM"W0deletefromtest_organwhereorgan_id=p_organ_id;
`,SQ MvMxH0commit;
{!AFm^3g;q'b0insertintoTEST_ORGAN (ORGAN_ID, ORGAN_CODE, ORGAN_NAME, SHORT_NAME, ORGAN_TYPE, WORKPLACE_ID, BEGIN_DATE, END_DATE, SCN, IN_USE)51Testing软件测试网:u/RGL0R.@\-\H
values(p_organ_id,
'999902','BPM部门','BPM部门','2','1','20080904','99991231',50,'1');
"N ["G5r#K/D0Za8l0insertintoTEST_STRU (STRU_ID, ORGAN_ID, ORGAN_ALIAS, STRU_TYPE, PARENT_ID, PRINCIPAL_ID, CORPORATION_ID, STRU_LEVEL, STRU_PATH, STRU_ORDER, GLOBAL_ORDER, BEGIN_DATE, END_DATE, SCN, IS_LEAF, IN_USE, DEPARTMENT_ID, PERMISSION_STRU_ID)51Testing软件测试网-k8E%AI6? w?Ca
values(p_stru_id, p_organ_id,
'BPM部门','00','1',null,'1',2, p_stru_path,400,1,'20080904','99991231',54,'0','1','1','1');51Testing软件测试网]:|$tQ8p$l,K0}&J
commit;
9q ~,vvK051Testing软件测试网8[)eV| AFw ?9yLR
foriin
1..iCountloop51Testing软件测试网x `!g+G{

 

!MvdZ2t2w0

--insert organstru51Testing软件测试网,A/h]K_D
var_organ_name :=
'BPM员工'|| to_char(i);
Q(CfDP ?4q0var_organ_id :=
'vorgan_id'|| to_char(i);51Testing软件测试网 GmS3HfTjt
var_stru_id :=
'vstru_id'|| to_char(i);
t)X4V9Cg c$s2`*|j8ug0var_stru_path :=p_stru_path ||
'#'|| var_stru_id;51Testing软件测试网:m'WD xEn t%R T4Tus!e
51Testing软件测试网,_y}4Ni#G-o
insertintoTEST_ORGAN (ORGAN_ID, ORGAN_CODE, ORGAN_NAME, SHORT_NAME, ORGAN_TYPE, WORKPLACE_ID, BEGIN_DATE, END_DATE, SCN, IN_USE)
4{-@-c;K*a4f0values(var_organ_id, var_organ_id, var_organ_name, var_organ_name,
'8','1','20080904','99991231',57,'1');
#b/mG$c)~cR-J0
fay o,[5Qn{0insertintoTEST_STRU (STRU_ID, ORGAN_ID, ORGAN_ALIAS, STRU_TYPE, PARENT_ID, PRINCIPAL_ID, CORPORATION_ID, STRU_LEVEL, STRU_PATH, STRU_ORDER, GLOBAL_ORDER, BEGIN_DATE, END_DATE, SCN, IS_LEAF, IN_USE, DEPARTMENT_ID, PERMISSION_STRU_ID)51Testing软件测试网:M5_#\4Sj"r
values(var_stru_id, var_organ_id, var_organ_name,
'00', p_organ_id,null,'1',3, var_stru_path,200,1,'20080904','99991231',58,'1','1', p_organ_id,'1');
1lmb@%TG\0
--insert user
h-T1~.h,N+i5V K~tv0account := testuser || to_char(i);51Testing软件测试网ho8T*u8mB9v
insertintoTEST_USERS (USER_ID, EXTERNAL_USER, USER_NAME, PASSWORD, ACCOUNT_STATUS, SECURITY_LEVEL, MAX_SESSIONS, IS_SYS, IS_CPUBLIC, CREATE_TIME, LOCK_TIME, EXPIRED_TIME, PSWD_UPT_TIME, PSWD_TIME, CORPORATION_ID, DEPARTMENT_ID, EMPLOYEE_ID, E_MAIL, MSN, QQ, MOBILE, CHAR_1, CHAR_2, NUM_1, NUM_2, PERMISSION_STRU_ID)51Testing软件测试网(oV6b;y g
values(account,
'01', var_organ_name,'99c6b157085564b43b85711360ec6166','11',0, -1,'0','0','20080904 16:12:57',null,'99991231 23:59:59','20080904 16:12:57','20081103 16:12:57','1', p_stru_id, var_stru_id,null,null,null,null,null,null,0,0,'1');
1wKxo%F+t0insertintoTEST_USER_DATAREF (REF_ID, USER_ID, RES_VALUE, DATA_RES_TYPE, IS_DEFAULT, IN_USE, STRU_ID, STRU_TYPE, DATE_BEGIN, DATE_END, IS_WRITABLE)
X^/qX1[C;A+l#L^0values(account, account,
'1','permitOrgT','1','1',null,null,'20000101','99991231','1');51Testing软件测试网8?.|nyxGU;| }&R
insertintoTEST_USER_PROXY (USER_ID, PROXY_USER_ID)
)u_;vx+N0values(
'CPUBLIC', account);51Testing软件测试网v[ ]F%s"N
insertintoTEST_USER_PROXY (USER_ID, PROXY_USER_ID)
[g+S kRz$z+b%A0values(
'GPUBLIC', account);51Testing软件测试网d"ODC;W:xO
insertintoTEST_USER_ROLE (USER_ID, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE)
WAj0VB5V.P rST[0values(account,
'GPUBLIC','1','1');
1[9w-t"IG h0insertintoTEST_USER_ROLE (USER_ID, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE)
@^w-j&oQ0values(account,
'SYSADMIN','1','1');
R}4}c&|9W0insertintoTEST_USER_ROLE (USER_ID, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE)51Testing软件测试网 i"RI _Fs
values(account,
'WORKFLOWADMIN','1','1');51Testing软件测试网(rOu.]@-]+D.k
insertintoTEST_USER_ROLE (USER_ID, GRANTED_ROLE, ADMIN_OPTION, DEFAULT_ROLE)51Testing软件测试网;X'wK5ek4ak
values(account,
'WORKFLOWCOMUSER','1','1');51Testing软件测试网ghogt!nY3Mi1za
insertintoTEST_STRU_TYPE_REF (USER_ID, STRU_TYPE, STRU_ID, ORGAN_NAME)
n @ ntk/hz~3R0values(account,
'00','1','State Grid');51Testing软件测试网l%n*Auy/y0j
 endloop;
!S }O5lY r.Z0 commit;

1i&?I P7F_Rb0

enddepartment_insert_test_users;51Testing软件测试网,{2bB~"T8x ^

 51Testing软件测试网#~*K9g L1K2D

可以使用下面的语句在sql/plus窗口调用,'BPM'作为前缀需要大写:

7sT#^)U)[f+d0

SQL> call department_insert_test_users('BPM',100);

k]c~U,]0

调用完成。

fLX QuG[g/dh0

 51Testing软件测试网s*{"T0M.HZ~v(w

下面的两个存储过程delete_test_usersdelete_test_stru_organ可以用于清除工作流用户数据,会清除BPM部门,BPM员工,BPM用户,后台的其他信息。调用方法如下:

.V,O`:^/Lgk]v0

SQL> call delete_test_users('BPM');

I nY$EM!iL1w_4`;R0

调用完成。51Testing软件测试网qx'EEa6Rk

SQL> call delete_test_stru_organ();

8yl2k8v4tF2L0

调用完成。

-c c4^*PT\0

 

3Nci}DPCEBgy0

createorreplaceproceduredelete_test_users(likecount in varchar2)is
J:K5v:]7Rv0likecount2varchar2(
30);51Testing软件测试网"Wn.p E1wg p"hc{
begin51Testing软件测试网2N_;@"Q P0K'[[ w[u
 likecount2 :=likecount ||
'%';
X,S#PTk4P4]\o051Testing软件测试网(EH$CVJ g9t}
 deletefromTEST_USER_ROLE twheret.user_idlikelikecount2;
*O1_jv*T-g0 deletefromTEST_STRU_TYPE_REF twheret.user_idlikelikecount2;51Testing软件测试网/vKng:@X Aj
 deletefrom TEST_USER_PROXY twheret.user_idlikelikecount2ort.proxy_user_id likelikecount2;51Testing软件测试网-?Y2a6b0x$Wa;T#a0x
 deletefromTEST_USER_DATAREF twheret.user_id likelikecount2;51Testing软件测试网7~h{"gbB
 commit;
-W2qVBl"g0 deletefromTEST_USERS twheret.user_id likelikecount2;
9|ht)a7BA9Gj0 commit;
&mY*G\9IF2PWaJ:@N0enddelete_test_users;

5r.K~E*gSF0

 51Testing软件测试网y5NyvR _,S

createorreplaceproceduredelete_test_stru_organis
Y*~!E2u2b5M8Nl J/`0p_stru_idvarchar2(
30);51Testing软件测试网sKf-h%sL-S1H
p_organ_idvarchar2(
30);51Testing软件测试网GvK.p-zd9@h
begin51Testing软件测试网&L*e:U%{O9@r H
p_stru_id :=
'Sp_stru_id00113';
0p B6t d}#~[0p_organ_id :=
'Op_organ_id0113';
] Cbtj+K4vj;C0deletefromtest_struwhereSTRU_ID=p_stru_id;
@?9nF{%`"EYB:y"|0deletefromtest_organwhereorgan_id=p_organ_id;51Testing软件测试网i8d zOJ&~jQ:U#y
deletefromtest_stru twheret.organ_idlike
'vorgan_id%';51Testing软件测试网}9Si HQd
deletefromtest_organ twheret.organ_idlike
'vorgan_id%';
x g p3@/x9dzAvA0commit;
8l a:q(b~W)?;Z0enddelete_test_stru_organ;

T$^-z0N g0

TAG: 性能测试

 

评分:0

我来说两句

Open Toolbar