基本概念

1.集合点(Rendzvous)

        插入集合点是为了衡量在加重负载的情况下的性能情况。在计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到计划中的需求。

(注:一般在事务之前插入集合点。)

2.事务(Transaction)

        为了衡量性能,我们需要定义事务。比如:我们在脚本中有一个数据查询操作,为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 运行在脚本中插入不限数量的事务。


3.检查点

         为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text/Imag 检查点,这些检查点验证网页上是否存在指定的Text 或者Imag,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。推荐最好能在录制过程中添加Text/Imag 检查点。

4. 参数化

        参数化的定义:使用指定的数据源中的值来替换脚本录制生成的语句中的参数。

Vuser脚本进行参数化的好处:
1、减小脚本的大小
2、提供了使用不同的脚本的值执行脚本的能力
参数化涉及两个任务:
1、用参数替换Vuser脚本的常量值
2、为参数设置属性和数据源
Select next row”定义的是如何选择下一行数据。该处有三个项"Sequential","Random","Unique",
Sequential:顺序地向Vuser分配数据。
Random:当测试开始运行时,“随机”方法为每个Vuser分配一个数据表中的随机值。
Unique:为每一个Vuser的参数分配一个唯一的顺序值。在这种情况下必须确保表中的数据对所有的Vuser和它们的迭代来说是充足的。如果拥有20个Vuser并且要进行5次迭代,则测试者的表格中必须至少包含100个数值。
Update value on”定义的是什么时候更新数据值,备选项有每次迭代,每次出现和一次。
 
5.关联
(1)关联的含义

关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,已变量的形式替换录制时的静态值,从而向服务器发出正确的请求,这种动态获得服务器响应内容的方法被称作关联(  所谓的关联(correlation)就是把脚本中某些写死的(hard-coded)数据,转变成是撷取自服务器所送的、动态的、每次都不一样的数据。)。

其实关联也属于一同特殊的参数化,只是与一般的参数化有些不同


一般的参数化的参数来源于一个文件、一个定义的table、通过sql写的一个结果集等,但关联所获得的参数是服务器响应请求所返回的一个符合条件的、动态的值


(2)什么时候需要做关联

要想弄清这个问题,我们首先要知道客户端与服务器端的请求与响应的过程



过程说明:

客户端发出获得登录页面的请求


服务器端得到该请求后,返回登录页面,同时动态生成一个Session Id

当用户输入用户名密码,请求登录时,该Session Id同时被发送到服务器端

如果该Session Id在当前会话中有效,那么返回登录成功的页面,如果不正确则登录失败


在第一次录制过程中loadrunner把这个值记录了下来,写到了脚本中,但再次回放时,客户端发出同样的请求,而服务器端再一次动态的生成了Session Id,此时客户端发出的请求就是错误的,为了获得这个动态的Session Id我们这里用到了关联。



所以我们得出结论:



当客户端的某个请求是随着服务器端的相应而动态变化的时候,我们就需要用到关联

当然我们在录制脚本时应该对测试的项目进行适当的了解,知道哪些请求需要用到服务器响应的动态值,如果我们不明确那些值需要做关联的话,我们也可以将脚本录制两遍,通过对比脚本的方法来查找需要关联的部分,但并不是说两次录制的所有不同点都需要关联,这个要具体情况具体分析