LR 中参数设置的更新方法和分配方法研究
上一篇 / 下一篇 2007-12-05 12:26:11 / 个人分类:软件性能测试
最近在用LR做性能测试的时候,总是在参数化问题上碰到一些问题,比如在参数化用户登陆时,照设置字面意思理解,选择了sequential和Each occurrence,以为每当一个VU碰到该参数就会顺序从参数表中取下一个值,结果导致执行测试时只有一个VU成功PASS,有时还在执行测试时,还会碰到"insufficient records for param 'OutputValue' in table to provide the Vuser with unique data"这样的错误,等等这些错误都是对LR中参数设置的更新方法和分配方法没有理解透彻.参考LR用户手册,但还是觉得有点糊涂,所以自己做了一些实践来加强对这些参数设置的理解.避免在以后工作中再碰到类似的错误.
在LR脚本中,我写了一段简单的C代码以供实践研究用,如下:
Action()
T(xB(S4K4?8~0{
y&ues.z%\f3|0 char * output1;
lryd VQ&p"dKY0 char * output2;51Testing软件测试网steyc"x
char * output3;
9_PN)Y_cx
TK7k0n0 output1 = lr_eval_string("{OutputValue}");51Testing软件测试网%K
A`Yej
v@T
output2 = lr_eval_string("{OutputValue}");51Testing软件测试网h0eGlx8K*I[m
output3 = lr_eval_string("{OutputValue}");51Testing软件测试网v&l
@;d
G9~
lr_output_message("iteration%s: vu%s output1 is %s",lr_eval_string("{iteration}"), lr_eval_string("{vuID}") ,output1);
u
J5Or(v]-v%E0 lr_output_message("iteration%s: vu%s output2 is %s",lr_eval_string("{iteration}"), lr_eval_string("{vuID}") ,output2);
*]4hU!s!ZD:j"X0 lr_output_message("iteration%s: vu%s output3 is %s",lr_eval_string("{iteration}"), lr_eval_string("{vuID}") ,output3);
return 0;51Testing软件测试网C aQ,N+Gv'R
}
参数化了三个值:OutputValue,iteration,vuID,其中OutputValue是我们要研究的对象,其参数类型为File,参数表中设置了20个参数值,分别是001~020,其他两个参数作为辅助参数以方便在log中进行查找使用,参数类型分别为Iteration Number和Vuser ID.
为了在log中看到详细的参数替换信息,可以在run-time settings中点选Extended log -> Parameter substitution.
1. sequential分配方法:
场景设置:10个VU,10次迭代
迭代 | Each Iteration | Each occurrence | Once |
1st | 所有的VU在参数出现的所有位置都使用“001” | 所有的VU在第一次参数出现的位置使用“001”,第二次参数出现的位置使用“002”,第三次参数出现位置使用“003” |