负载压力测试中动态参数关联详解

发表于:2007-06-25来源:作者:点击数: 标签:压力测试参数关联
1.为什么需要动态参数关联 之所以需要动态关联的原因是在系统交互过程中, 服务器 会动态的生成一些动态的信息给客户端,客户端需要将接受到的动态信息原封不动或者经过相应的处理再次返回给服务器,通过这样的交互,服务器可以认定客户端的 可靠性 或者适应

1.为什么需要动态参数关联

之所以需要动态关联的原因是在系统交互过程中,服务器会动态的生成一些动态的信息给客户端,客户端需要将接受到的动态信息原封不动或者经过相应的处理再次返回给服务器,通过这样的交互,服务器可以认定客户端的可靠性或者适应业务的需要。比如session的动态信息;OA系统中发布新的公文产生的新的流水号;C/S应用中服务器可能动态的给客户端分配新的端口号。

2.LR中动态关联的原理

在HTTP的LR脚本中,LR实现动态关联的机制是在服务器返回的信息中匹配查找一些特征串信息,然后将找到的特征串保存在变量中,在后续的业务操作中,LR将保存的变量值提交给服务器,从而实现了动态信息的关联,联动,保证LR的脚本回放过程中使用的是新的动态参数,而不是历史的脏数据信息。

在C/S的LR脚本中,LR提供相关的函数,可以将从服务器接收到的buffer中的部分内容保存在变量中,替换后续的变量信息,就可以实现动态参数的关联了。

3.B/S动态关联的方法

B/S动态关联的方法可以分为自动关联和手动关联两种。

自动关联就是LR中已经默认的定义了一系列的动态参数查找匹配的规则,录制的脚本回放后,LR会自动的识别一些动态参数,自动的修改脚本,添加相关的脚本关联函数,实现动态参数的关联;

手动的关联是在LR不能自动关联的情况下被迫进行的相关的手动修改脚本的方式,同样实现自动关联的效果。

4.自动关联的实现

自动关联在回放脚本后,LR会自动弹出提示对话框,询问是否进行correlation(自动关联),确认后LR会自动比对,查找出脚本中需要自动关联的参数位置,供测试人员选择确认参数是否需要自动关联;

5.手动脚本的关联实现

明确脚本中需要关联的参数,观察的细节一般是脚本中频繁出现的一些变量,比如脚本中的web_submit_data提交的客户端请求中包含的一些参数,比较两次录制的脚本,可能会发现里面的某些变量的参数值发生变化,这种情况一般需要引起关注,是否存在动态参数的关联。另一种方式可能需要和开发人员交流,在业务的交互中,是否存在某些动态的验证参数数据。

动态参数的查找位置一般是提交动态参数前的web交互中的服务器响应中查找,可以将LR的视图切换到TREE VIEW视图下,测试人员可以看到每一个web交互过程中的服务器响应的详细数据信息以及客户端提交的web请求信息。

定位到要找的动态参数的服务器响应位置后,下面的操作是进行手动的关联,将动态参数值保存在变量中。首先在返回动态参数值的web请求前注册一个变量,使用web_reg_save_param注册一个变量,可以详细的查看一下该函数的帮助信息。在LR的TREE VIEW视图下,用户可以使用GUI交互的方式很方便的注册一个变量,用来保存动态参数。步骤如下:

在返回参数的web请求上点右键:insert before –》 service -> web_reg_save_param,填写相应的参数特征信息,解释一下,左右边界(左右边界是动态参数值的左边和右边的特征串,LR就是通过左右边界来唯一的找到web请求的服务器响应数据中的动态参数的。)另外一个比较重要的地方就是部分特殊字符的转义问题,如果在左右边界中出现了特殊字符,如引号,在出现问题是需要考虑这个环节。

确认以后,测试人员可以在scripte view视图中看到LR自动添加的参数注册函数。

测试人员可以使用lr_error_message函数来打印调试信息,检查是否正确的捕获了动态参数;方式如下:

lr_error_message(“the param value is %s”,lr_eval_string(“{变量名}”));

这样,在脚本的回放中,用户可以看到红色的打印输出信息。

最后的步骤就是将脚本中的历史动态参数信息替换成已经注册的变量,这样LR就可以自动的提交动态参数值了,而不是提交不进行修改的历史数据信息。替换方法是将以前的值替换成{变量名}的方式即可

原文转自:http://www.ltesting.net