Loadrunner的脚本开发几个关键技术

来源:互联网 发布:ubuntu vbox 打不开 编辑:程序博客网 时间:2024/06/01 09:26

Loadrunner的几个关键技术

1、集合点(Rendezvous Point)(也称作 同步点)
     一般在Loadrunner测试过程中,并不能保证所有的Vuser真的在同一时刻进行操作,这样就达不到并发测试的目的,因此需要集合点技术。
     在LoadRunner模拟多用户进行测试时,需要同步各个 Vuser以便在同一时刻执行任务,通过创建集合点,可以确保Vuser同时执行操作。
     集合点的意思即是:在一个操作之前设置一个集合点,则LoadRunner的Controller会等待所有的Vuser都准备好要执行该功能时才开始执行,如果只是部分Vuser准备好,都不会执行该功能,其强调的是所有Vuser都已准备好。
     集合点函数:lr_rendezvous("rendezvous name");

Notice:1)  只能在Action中添加集合点(不能在vuser_init/vuser_end中添加)。
2)  因为集合点是协调多个虚拟用户的并发操作,因此,在VU运行脚本时,同步点没有任何意义的,只有Controller多用户并发场景时,同步点的意义才能表现出来。

 

2.     关联(Correlation)

所谓关联即是,服务器返回给客户端一些动态变化的值,客户端使用这些值去访问服务器的时候,不能把这些值写死(hard-code)在脚本里面,而应该存放在一个变量里面。

关联的三种方法:

a) 录制前关联,又叫做规则关联(Rule Correlation)。使用录制前关联的必要条件是我们必须在录制脚本之前就知道哪些变量需要关联。Vugen内建自动关联引擎(auto-correlation engine),可以自动找出需要关联的值,并且自动使用关联函数建立关联。

b) 录制后关联:有别于录制前关联,录制后关联则是在执行脚本后才会建立关联,也就是说,当录制完脚本后,脚本至少需被执行一次,录制后关联才会作用。录制后关联会尝试找出录制时与执行时,服务器响应内容的差异部分,藉以找出需要关联的数据,并建立关联。

c) 手动关联,手动关联原理与自动关联一样,找出哪些变量是需要关联的,然后用Loadrunner提供的web_reg_save_param来实现关联。(录制两脚本,用WinDiff工具协助找出需要关联的数据。)手动关联的原理:

i. 捕获第一个操作的输出;

ii. 保存为参数;

iii. 将参数传递到另外一个操作的输入。

d) 关联的用途:1)简化和优化脚本代码;2)动态产生数据;3)支持唯一数据。

 

3.     事务(Transaction)

a) 一个事务应该具有原子性、一致性、隔离性和持久性。

b) 设置Transaction方法:1)选择新Transaction开始点,在被度量脚本段之前插入lr_start_transaction;2)选择新Transaction结束点,在被度量脚本段之后插入lr_end_transaction .

c) 手工插入的事务称为“显式事务”,而另一种“隐式事务”在VU的Run-time Settings中,称“自动事务”。Vuser->Run-time Settings->Miscellaneous->Automatic Transaction中定义自动事务。

d) 注意:1)事务的开始点与结束点必须在一个Action中,不允许跨越多个Action;2)Transaction的名字必须是唯一的;3)事务可以嵌套使用,叫做“Nested Transaction”。

 

4.     思考时间(Think Time)

a) 用户在执行两个连续操作期间等待的时间称为“思考时间”。

b) 使用lr_think_time模拟用户思考时间,参数单位为秒,如lr_think_time(5)表示执行到此条语句时,停留5秒,然后再继续执行后面的语句。

c) 如果不想执行Think Time语句,则在Run-time Settings中可以设置忽略Think Time,而不用逐条删除来修改脚本。

 

5.    HTTP Vuser脚本录制模式选择:

    在默认情况下,选择“HTMl-based script",说明脚本中采用HTML页面的形式来表示,这种方式的script脚本容易维护,理解,推荐以这种方式录制。

    “URL-based script"说明脚本中的表示采用基于URL的方式,所有的HTTP的请求都会被录制下来,单独生成函数,所以URL模式生成的脚本会显得有些杂乱。

    如何选择HTML或URL模式,可以参考以下原则:

    1)基于浏览器的应用程序推荐使用HTML-based script。

    2)不是基于浏览器的应用程序推荐使用URl-based script。

    3)如果基于浏览器的应用程序中包含了Javascript并且该脚本向服务器产生了请求,比如DataGrid的分页按钮等,则要使用URL-based script方式录制。

    4)基于浏览器的应用程序中使用了HTTPs安全协议的,使用URL-bases script 方式录制。

 

6.     数据驱动-参数化(Parameters)

a) 数据驱动就是把测试脚本与测试数据分离开来的一种思想,脚本体现测试流程,数据体现测试案例。

b) 参数化的两个优点:A.可以使脚本的长度变短;B.可以增强脚本的可读性和可维护性。

c) 参数化的过程:A.在脚本中用参数取代常量;B.设置参数的属性以及数据源。

 

7.     检查点(Check Point)

a) 检查点的作用是验证程序的运行结果是否与预期结果相符。

b) 两种设置检查点的方法:

i. ContentCheck定义:在【Run-time Settings】>【ContentCheck】中,设置是为了让Vugen检测何种页面为错误页面。

ii. 检查函数:通过检查函数来完成检查点功能,web vuser提供Image Check和Text Check两种方式。其原理就是在上一个请求页面函数完成后,运行检查函数,在结果页面中搜索既定的图片/关键文字。如:web_find,web_image_check,web_reg_find.

c) 检查点设置技巧

i. 检查点必须满足是验证事务通过与否的充分必要条件。检查点通过,我们就能够确信系统是一个正常的状态。

ii. 检查点可以是常量,也可以是变量。

iii. 检查点可以是文本、图像文件,也可以是数据库记录等。

原创粉丝点击