当前位置: 首页 > 测试知识 > 软件性能测试工具LoadRunner使用教程:性能测试脚本增强策略
软件性能测试工具LoadRunner使用教程:性能测试脚本增强策略
2025-11-17 作者cwb 浏览次数31

性能测试时,录制完成的脚本往往只是一个起点。要让脚本真正模拟出真实用户行为并获取有价值的性能数据,脚本增强是重要步骤。


脚本增强主要技术

在LoadRunner中,脚本增强主要通过VuGen(Virtual User Generator)完成,主要包括以下几个主要方面:

参数化:避免缓存,模拟不同用户数据。使用数据文件,设置更新方法(如每次迭代)。

插入检查点:验证结果正确性,判断事务成败。在请求前使用web_reg_find注册检查点。

关联:处理服务器返回的动态数据。用web_reg_save_param捕获动态值,后续请求中使用参数。

插入事务:测量特定操作集的响应时间。使用lr_start_transaction和lr_end_transaction,务必成对出现。

设置思考时间:模拟用户真实操作间隔,影响吞吐量。使用lr_think_time函数,事务内避免包含思考时间。


详细操作指南

1. 参数化

参数化是使用参数来替换脚本中的常量值,模拟不同用户使用不同数据的行为。

操作步骤:在VuGen中选中要替换的常量值,右键创建参数并选择参数类型(如File),然后准备数据文件并设置参数属性(如更新方法)。

示例:登录用户名和密码的参数化。


c

// 参数化后的登录代码

web_submit_data("Login",

    "Action=http://example.com/login",

    "Method=POST",

    ITEMDATA,

    "Name=username", "Value={Username}", ENDITEM,  // 使用参数

    "Name=password", "Value={Password}", ENDITEM,  // 使用参数

    LAST);


2. 插入检查点

检查点通过验证响应内容中是否存在特定文本来判断请求是否成功。

操作步骤:在HTTP请求之前插入web_reg_find函数,并设置要查找的文本和用于存储匹配次数的参数。


示例:检查登录后页面是否包含"欢迎回来"字样。


c

// 在请求前注册检查点

web_reg_find("Text=欢迎回来",

             "SaveCount=LoginSuccess", // 保存匹配次数的参数

             LAST);


// 接下来是具体的请求,如web_url等


// 请求后根据检查点结果判断

if (atoi(lr_eval_string("{LoginSuccess}")) > 0) {

    lr_output_message("登录成功");

} else {

    lr_error_message("登录失败");

}

3. 关联

关联用于处理服务器返回的动态变化的值(如SessionID、Token),将其捕获并在后续请求中使用。

操作步骤:使用关联函数(如web_reg_save_param)在动态数据出现的请求前注册,定义左右边界以精确定位,后续请求中使用捕获到的参数值。

示例:处理异步任务的完成状态检查。


c

int num = 0;

do {

    // 在请求前注册关联函数,捕获状态值

    web_reg_save_param("status_success",

        "LB=<string>success</string><long>",

        "RB=</long>",

        "NotFound=WARNING",

        "Search=Body",

        LAST);

    

    // 这是检查任务状态的请求

    web_custom_request("xmlhttp",

        "URL=http://192.168.25.22/test/xmlhttp?bid=addTaskDAO",

        "Method=POST",

        ... // 其他部分省略

        );

    num = num + 1;

    lr_think_time(1); // 每次检查后等待1秒

} while((strcmp( lr_eval_string("{status_success}"), "1" ) != 0) && (num < 61)); // 循环直到成功或超时


4. 插入事务

事务用于衡量一个或多个操作(即一个业务过程)的响应时间。


操作要点:

事务的开始(lr_start_transaction)和结束(lr_end_transaction)必须成对出现,且名称一致。

事务内部不应包含思考时间(lr_think_time),以确保测量的响应时间准确排除了人为等待。


示例:测量用户登录这个事务的响应时间。

c

lr_start_transaction("登录事务"); // 事务开始

// 登录操作的相关请求,如web_submit_data等

web_submit_data("Login", ...);

lr_end_transaction("登录事务", LR_AUTO); // 事务结束,LR_AUTO表示自动判断结果


5. 设置思考时间

思考时间模拟真实用户在操作之间的停顿,对吞吐量和并发数有显著影响。


设置方法:

在脚本中直接使用lr_think_time(秒数)函数。

在运行时设置(Run-Time Settings) 中灵活配置思考时间的行为:

忽略思考时间(Ignore think time):用于压测系统极限性能。

按录制时间回放(As recorded):严格按录制时的停顿执行。

使用随机百分比(Use random percentage):设置一个范围(如50%到150%),更真实地模拟用户差异。

注意:思考时间应放在事务之外,避免影响事务响应时间的准确性。


保持脚本简洁有效:只录制和增强与测试目标相关的必要请求,移除冗余操作。

善用注释:在脚本的关键部分添加注释,便于后期维护和团队协作。

版本控制:对性能测试脚本使用版本控制工具进行管理。

文章标签: 测试工具 软件应用性能测试 应用性能测试 接口性能测试 软件性能测试 性能测试 软件测试
咨询软件测试