LoadRunner性能测试的事务和思考时间的设置是为了模拟真实用户负载获取准确性能数据。共同定义了测试情形的真实和可度量。
事务
事务用于度量服务器响应特定业务操作所花费的时间,如登录、查询或提交订单。
定义和目的
事务的目的是精确度量服务器端处理请求的响应时间,获取真实、可分析的系统性能数据,一般用于生成性能报告中的重标准(如平均响应时间、通过率等)。
设置方法
脚本插入:在VuGen中,使用 lr_start_transaction("事务名称") 和 lr_end_transaction("事务名称", LR_AUTO) 函数来标记事务的起始和结束。
运行时自动定义:在“运行时设置”的“Miscellaneous”选项中,可以启用“Define each action as a transaction”,自动将每个Action函数或每个步骤(step)定义为一个事务,即“自动事务”。
重点
一个事务的时间不只包含服务器响应时间,还由响应时间、思考时间、浪费时间和事务自身开销四部分组成。
可以使用 lr_wasted_time() 函数将脚本中非请求处理(如复杂计算、外部DLL调用)所消耗的时间标记为“浪费时间”,使事务响应时间结果更准确地反映服务器处理时间。
思考时间
思考时间指模拟真实用户在不同操作间进行“思考”或停顿的时间。能有效调节对服务器的压力,使测试情形更贴近实际。
设置方法
脚本插入:使用 lr_think_time(秒数) 函数。
运行时方法:在“运行时设置”的“Think Time”中,有多种方法可供选择,这比修改脚本更灵活:
忽略思考时间:忽略所有lr_think_time函数,用于对服务器施加最大压力,获取极限性能数据。
按录制回放:完全按照录制时捕获的时间间隔回放,模拟固定方式。
乘以/随机百分比:将录制的思考时间乘以一个系数,或在一个随机百分比范围内取值,能模拟不同熟练度的用户,使负载更真实。
限制最大值:为思考时间设置一个上限,防止个别超长的停顿影响整体节奏。
事务和思考时间的关系和设置
两者关系是:思考时间是不是被包含在事务计时内,应该放置在事务的什么位置。
关系和影响
默认情况下,位于lr_start_transaction和lr_end_transaction之间的lr_think_time会被计算在事务的响应时间内。会导致事务响应时间被人为拉长,无法测试服务器的处理能力。
设置原则
原则:事务内不应包含思考时间。
最好是将思考时间放置在两个事务之间,而不是事务内部。如:
text
lr_end_transaction("登录", LR_AUTO); // 结束“登录”事务
lr_think_time(3); // 用户查看登录结果,思考下一步操作
lr_start_transaction("查询"); // 开始“查询”事务
分析时的处理:在用LoadRunner Analysis分析时,如果事务内包含了思考时间,可以通过设置过滤规则扣除,来获取纯净的服务器响应时间。
不同测试目标下的方法建议
您的设置方法应服务于测试目标:
基准/负载测试:定义重要业务操作,保证事务纯净(无思考时间)。采用“随机百分比”方法,模拟真实用户间歇。获取在贴近真实情形下的系统性能基准。
压力/稳定性测试:同基准测试。 初期采用真实思考时间,后期可逐步缩短或“忽略”。逐步增加压力,考察系统极限及长时间运行稳定性。
极限性能测试:同基准测试。选择“忽略思考时间”。消除用户延迟,获取服务器在不断最大请求下的绝对处理能力。
注:涉及集合点的并发测试的集合点 (lr_rendezvous) 必须放置在事务开始之前 (lr_start_transaction),保证所有虚拟用户在开始执行事务操作前已集结完毕。
在LoadRunner中,事务用于测量,思考时间用于模拟。将它们清晰分离,是获得专业、可信性能测试结果的重点。