当前位置: 首页 > 测试知识 > 软件测试工具LoadRunner Controller场景设计
软件测试工具LoadRunner Controller场景设计
2026-06-11 作者cwb 浏览次数7

LoadRunnerController场景设计指南


一、场景设计想测试什么?

在打开Controller之前明白测试目的。场景参数:

标准测试:用少量Vuser单跑业务,确定单用户或低并发下的性能标准。

负载测试:按预期生产负载施压,测试系统在正常峰值下表现是不是稳定,标准是不是达标。

压力测试:不断增加负载,直到系统短板暴露或崩溃,找出系统极限和恢复能力。

容量测试:阶梯式加压,确定系统在不同配置下能支撑的最大并发用户数或吞吐量。

稳定性/耐久测试:以中等负载长时间运行,观察是不是有内存泄漏、连接未释放等问题。


二、创建场景的步骤

打开Controller,点击新建场景:

手动场景:自己完全控制Vuser的启动、运行时长和停止方式,适合绝大多数精细控制的负载和压力测试。

面向目的场景:设定一个性能目的如每秒事务数、响应时间,让Controller自动调整Vuser数量来达成目的,用于测试系统能否在特定目的下正常工作。


以下是手动场景的设计流程,这也是最常用的方式。

1.添加脚本,确定要压的业务

将VuGen录制的脚本添加到场景组中。一个场景可以包含多个脚本,模拟不同业务的混合比例。

如:登录脚本占10%,浏览商品占50%,下单占30%,搜索占10%。通过组的Vuser数量来分配比例。


2.设置Vuser总数和负载生成器

根据目的设定总Vuser数,比如模拟500并发用户。

将负载生成器分配到不同的物理机器上,避免Controller本身的资源成为短板。在生成器栏添加机器名并测试连接。


3.设计加压方式

切换到“计划”视图,一般包括三个部分:


启动Vuser(Ramp Up)

决定用户怎样开始执行。常用方式:

同时启动:全部Vuser一瞬间开始,用于模拟秒杀、抢购等突发并发。

阶梯递增:每间隔一段时间启动一批Vuser,比如每30秒启动50个,直到达到峰值。

自定义计划:可以分段设置不同速率,模拟午餐、晚间高峰等不规则流量。


不断时间(Duration)

规定在峰值保持多久。常用方式:

完成指定迭代次数后停止:每个Vuser跑完N遍脚本就退出,总负载会自然下降。适合需要精确控制事务执行总量的场景。

运行指定时间后停止:保持在最大Vuser数下运行30分钟、2小时。这是稳定性测试的标准做法,能观察稳态下的各项标准。


停止Vuser(Ramp Down)

一般设置为每间隔一段时间停止一批用户,模拟流量逐渐消散。除非测试瞬间掉流量的场景,否则不建议让所有用户同时退出,那样观察不到资源的回卷过程。

一个典型负载测试的计划示如下:

每15秒启动20个Vuser,一共启动100个(达到峰值需75秒)。

在100Vuser负载下不断运行30分钟。

然后每30秒停止20个用户,直到全部停止。


4.设置运行时行为,让虚拟用户像真实用户

在运行时设置中配置几项重点参数,直接影响负载真实性:

思考时间:开启随机思考时间,设置一个范围(如3-8秒)。实际用户操作时会有停顿,忽略思考时间会制造过高的压力,导致结果失真。

日志级别:设计场景执行时,标准做法是设为标准日志或仅出错时记录日志,避免大量调试日志消耗负载生成器资源并拖慢脚本执行。

网络模拟:如需要模拟弱网或不同带宽,可在运行时开启网络仿真,并选择相应的网络类型。

迭代和错误处理:设定出错时继续可避免一个脚本错误让整个Vuser停止,使场景更贴近真实,因为在真实世界中极少用户会因为一个页面报错就完全放弃系统。


5.配置监控,抓住性能证据

没有监控的性能测试只是盲测。在Controller的运行视图中,添加以下资源监控:

服务器层:CPU、内存、磁盘IO、网络吞吐量。Windows系统可添加相关计数器,Linux/Unix通过rstatd或SiteScope等获取。

应用层:Web服务器请求队列、应用服务器线程池、数据库连接数和慢查询。

LoadRunner层:添加运行时和事务图表,实时观察事务响应时间、吞吐量、点击数、Vuser状态等。

可设定SLA(服务级别协议):如登录事务平均响应时间不能超过3秒,超过时场景中会有醒目告警,事后报告中会直接标记SLA通过和否。

三、模拟真正的高并发

集合点用于让多个Vuser在某个操作点上等待,直到足够数量的用户到达后,再同时向服务器发出请求,以此模拟秒杀、抢购、考试报名等并发瞬间。


设计:

只在需要很高峰值的少数重点事务前插入集合点(如在“提交订单”之前),滥设会让整个场景失去真实性。

集合点方法可设定为“当xx%的到达用户时释放”或“当x个用户到达时释放”,前者更灵活。

注意等待超时设置,避免因少数用户迟迟不到造成大量用户一直阻塞。


四、场景设计一些问题

脚本未做参数化和关联:这是导致回放失败或把缓存数据压进数据库的第一要务原因。设计场景前,保证脚本已处理好登录令牌、会话ID等动态数据,并对重点业务数据做了参数化和唯一性处理。

负载生成器本身成为短板:一台机器能模拟的用户数有限,当CPU或内存先被打满,产生的负载就不准确了。一般一台普通负载生成器建议限制在几百Vuser内,大并发必须分布到多台生成器。

忽略带宽和网络限制:测试环境可能都是千兆网络,而生产环境可能存在带宽短板。如果不模拟,得到的TPS可能超过实际能力。

只看平均响应时间:90%响应时间可能已经严重恶化,却被平均值掩盖了。设计场景时就应该在监控图表中同时重视平均、中位数和90/95分位值。

不做渐进式摸底:一上来就用预想的最大负载压测,发现系统崩溃也无法判断是在哪个量级开始劣化。正确的做法是:先用一个较小的负载找出第一个性能拐点,再逐步加大。

场景结束后不保留数据和审计:每次执行后,及时保存原始结果文件,并导出图表或报告。很多有作用的性能短板信息,事后复盘时才发现。


文章标签: 软件测试 测试工具
咨询软件测试