《LoadRunner性能测试巧匠训练营》——3.2 场景设计实战

简介:

本节书摘来自华章计算机《LoadRunner性能测试巧匠训练营》一书中的第3章,第3.2节,作者:赵 强 邹伟伟 任健勇 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 场景设计实战

Controller可以完成多种场景设计,如快增长、慢增长、组模式等,基本可以满足日常的性能测试场景需求。启动Controller后的新建场景界面如图3-1所示。


17337cb737b437f9c543733e0a3813094e7b7cf1

下面解释图3-1中的主要选项。
1)Select Scenario Type:选择场景类型。根据需要,可以选择手工场景和基于目标的场景。各子选项含义如下。

  • Manual Scenario:手工场景。就是手工指定场景如何运行,比较灵活,可以完成绝大多数的场景需求。此处还有一个选项,是否使用百分比模式,一般情况下不勾选。
  • Goal-Oriented Scenario:基于目标的场景模式。就是要设定一个目标,然后达到这个目标。例如,设定Hits per Second 100,接着设定虚拟用户数的范围(这个是和Manual Scenario不同的地方),最后根据设置的时间运行,如果没有达到既定目标,则可以选择停止运行或继续运行,如图3-2所示。


<a href=https://yqfile.alicdn.com/f346dc0cc3dc87a1d1517f1c0cb06fb8920eb683.png
" >

2)Available Scripts:当前可以使用的脚本。如果没有想要的脚本,可以单击Browse按钮选择。
3)Scripts in Scenario:当选中要加入场景的脚本后,单击Add按钮,即可把脚本加入场景并在该列中显示。
此处小白选择了最常用的手工场景,并将之前练习的脚本加入场景,详细学习Controller。
3.2.1 集合点实战
下面将从什么是集合点、如何启用集合点和集合点的应用策略方面进行讲解。

  1. 理解集合点
    集合点是什么呢?仍以前面的跑步为例。所谓集合点,就是10名运动员从起点出发,要跑3圈,规定再次经过起点时要等待所有运动员全部到达后,才能进行第2圈的赛跑。集合点就是这个道理,它的意义在于最大程度地模拟并发。

    集合点并不能模拟真正意义上的并发,因为即使是通过集合点的虚拟用户,但由于网络等多种因素的影响并不能同一时刻到达服务器,仍有先后差异。
    
  2. 启用集合点
    在LoadRunner中启用集合点需要在编写脚本时加入,集合点函数为lr_rendezvous("集合点名称");。只需把集合点函数放到脚本的某个事务或操作之前即可。只有完成这步操作后,才能在Controller中启用集合点,方法为依次单击Insert→Rendezvous菜单项,如图3-3所示。


63f7a06a6932db6141225c81be027a2ff49ad0a6

集合点不要添加到事务中,要放到事务外,否则事务的统计会把集合点的等待时间也统计进去。
  1. 集合点策略
    经过上面的操作就可以进入集合点策略设置界面,如图3-4所示。

图3-4中主要选项含义如下。
1)Rendezvous:集合点的列表,可通过下方的Disable Rendezvous按钮来启用或关闭。
2)Scripts:当前脚本的名称。
3)Vuser:当前设置的并发用户数,可通过下方的Disable VUser按钮来启用或关闭虚拟用户。
4)Policy(集合点策略):单击后进入策略设置对话框,如图3-5所示。


<a href=https://yqfile.alicdn.com/c5728fa1f161fdc5429a8aef6ec797451256ed1b.png
" >

图3-5中显示了常见的3种策略,其含义如下。

  • 当所有用户的X%到达集合点时释放。
  • 当所有正在运行的用户的X%到达集合点时释放。
  • 当X个用户达到集合点时释放。
  • 超时设置。表示等待用户超时的设定,如果在X秒内还没有满足要求的用户到达,则释放集合点。

到这里小白并没有停止思考,而是想到了以跑步为例再次理解集合点的3种策略。假设有100个运动员跑步,设置的集合点策略百分比均为100%,但这100个运动员并不是一开始就共同跑的,而是每隔1min加入10个运动员,即10min后才有100个运动员在跑步。这里100就是所有运动员数,而不同时间正在跑的运动员数量是不同的。对应到图3-5中,从上至下的策略(policy)作用如下。
第一个策略:是指当全部运动员都运行到了集合点函数时才释放。
第二个策略:是指当前时间如果只有10个运动员在跑步,那么只要这10个运动员都运行到了集合点函数就释放。
第三个策略:当到达集合点的运动员数达到设置的数量后就释放。
这下小白可算真正理解了集合点的含义以及策略的精髓了。
3.2.2 IP欺骗实战
下面将从以下几个方面来讲解IP欺骗的实践。

  1. 理解IP欺骗
    看到这个搞笑的命名小白心里一乐,这功能看着貌似很好玩。IP欺骗就是使不同用户有不同IP地址,这样最真实地模拟了现实场景。但有一点必须明白,对于一般系统而言,是否使用IP欺骗并不会影响性能测试。只有在特殊的要求下才会使用,如下面两种情况。

1)某系统限制了同一个IP用户在短时间内对系统进行恶意或大量的请求访问。
2)负载均衡策略是根据IP规则分配的。

  1. 启用IP欺骗
    想要启用IP欺骗需要做一项前置工作,就是本地的IP地址不能设置为“自动获取”,必须指定一个静态IP地址,否则会弹出如图3-6所示的提示。

静态IP地址指定好之后就可以设置IP欺骗了,步骤如下。
1)依次单击HP LoadRunner→Tools→IP Wizard进入设置对话框,如图3-7所示。


dc700025514b7d946e89e2133796a4bdd0301637

2)选择Create new setting,单击“下一步”按钮,出现如图3-8所示界面。
3)输入服务器的IP地址,或者留空也可以,单击“下一步”按钮,出现如图3-9所示界面。


bb15103d41c1f796eec5af93e9c2d32fcf4dc7a2

4)单击Add按钮,弹出添加IP的对话框,如图3-10所示。
5)修改From IP为192.168.3.9,Number to add为5,单击OK按钮,出现如图3-11所示界面。

20ea76873c1a9f1514b6ad3b0dbcf5a478d71ede

6)单击“完成”按钮,出现如图3-12所示界面。


1064e180f1780455f630bfe3c53510c3d0f2a28d

7)单击“Save as”按钮可以将本次增加的IP地址保存成.ips 文件,下次再使用时就可以直接选择此文件了。单击OK按钮后完成设置。
8)进入Controller中,选择Scenario→Enable IP Spoofer,完成IP欺骗设置的全部操作。
如果想验证结果,那么可以在VuGen中编写代码(参见代码清单3-1),然后运行即可。

代码清单3-1 获得IP地址
Action()
{
char *ip;
ip = lr_get_vuser_ip();
if( ip )
lr_output_message("IP地址为%s" , ip);
else
lr_output_message("IP欺骗不可用");
return 0;
}
  1. 释放IP欺骗
    IP欺骗使用完成后千万别忘了释放,做事情一定要有头有尾,这样才完整。释放的操作十分简单,重复图3-9~图3-12所示的操作,并在图3-9中,单击Remove按钮,移除后再单击“完成”按钮即可。最后别忘了重启计算机,这样就完成了IP的释放。

3.2.3 添加Windows和Linux压力机实战
既然Controller是LoadRunner的“心脏”,那么压力产生也必然是它发起的,通过压力机来对被测系统产生压力。一般压力机分为Windows和Linux。当并发量比较大时建议使用Linux。

  1. 添加Windows压力机
    添加Windows压力机的步骤相对来说简单些,具体如下。

1)保证要添加的压力机上安装了LoadRunner Agent,并启用(状态栏中会有一个小卫星)。
2)添加的压力机与Controller所在机器要在同一个网段,建议把防火墙关闭。
3)本地系统的RPC服务要开启(在“控制面板”→“管理工具”→“服务”中开启,建议改为自启动)。
4)之后从Controller所在的机器上登录到压力机,验证是否可以连通。单击Windows系统的“开始”菜单,选择“运行”,在弹出的对话框中输入“\机器名”,如果不报错则成功。

建议关闭360等各类管理软件、杀毒软件,同时要拥有足够的权限。

5)进入Controller,依次单击Scenario→Load Generators菜单项,出现如图3-13所示界面,默认会有一台压力机,即本机。
6)如果想添加其他压力机,单击Add按钮,出现如图3-14所示界面。


58278b7d2127dc70c8ff550c1cd662b92ffd89d7

图3-14中各选项的含义如下。
  • Name:这里很多人都会输入机器的名称,其实应该输入压力机的IP地址。
  • Platform:默认为Windows即可。

7)单击OK按钮,完成压力机的添加,然后单击图3-13右侧的Connect按钮,可以测试能否连通,如果连通,则会显示Ready状态。
8)最后可以把压力机分到对应的脚本上,如图3-15所示。


2683a3ae537a14426b76ba8aad110855832813bf
  1. 添加Linux压力机
    添加Linux压力机稍微复杂些,需要有一定的Linux基础,还好小白平时也经常使用Linux,所以心里松了一口气。添加步骤如下。

1)到HP官网下载HP_LoadGenerator,解压到本地后上传到Linux中,文件名为Linux。
2)在控制台输入chmod -R +x Linux/*命令,用于修改文件的权限。
3)在控制台输入cd Linux命令,进入Linux目录。
4)在控制台输入./installer.sh命令,进行安装,按照提示操作即可。
5)在控制台输入useradd -g 0 -s /bin/bash besttest命令,用于新增一个名为besttest的用户。
6)在控制台输入vi /root/.bashrc命令,用于编辑.bashrc文件,添加如下内容。

export PRODUCT_DIR=/opt/HP/HP_LoadGenerator 
export M_LROOT=$PRODUCT_DIR 
export LD_LIBRARY_PATH=${M_LROOT}/bin 
export PATH=${M_LROOT}/bin:$PATH

7)在控制台输入su - besttest命令,切换为besttest用户。
8)在控制台输入cd /opt/HP/HP_LoadGenerator/bin/命令,用于进入安装后的默认目录中。
9)在控制台输入./verify_generator命令,用于验证配置是否正确。
10)在控制台输入m_daemon_setup start命令,用于启动服务,如果成功,则会显示类似下面的提示。

m_agent_daemon ( 22914 )

11)回到Controller里重复添加Windows压力机的步骤即可。这里需要注意的是,有一点和添加Windows压力机不同,如图3-16所示,要勾选Don’t use RSH复选框。


536aaf31d7e96227c5193cbc9e3d89c6ab0ff765

3.2.4 场景设计实战
场景设计其实就是设置场景的加压方式、运行时间、减压方式等。场景设计并没有好坏之分,因为目的不同,场景就有可能不同,小白学习了如下几种常见的场景设计模型。

  1. 快增长
    快增长的意思就是压力在瞬间启动并达到最大。设置方法为在Controller中的Schedule区域分别双击Start Vusers和Stop Vusers,然后选择Simultaneously,单击OK按钮即可,如图3-17所示。


c8ef1b965d9d44a03ec8b83b30d74dd10bea4d2d

这样的设置在场景中运行,会瞬间启动20个虚拟用户,持续5min后,瞬间停止这20个虚拟用户。

  1. 慢增长
    慢增长的意思就是压力按照设定的规则慢慢增加,当到达设置点后持续运行一段时间,然后慢慢减压。设置方法同快增长,如图3-18所示。


<a href=https://yqfile.alicdn.com/74a3d678597759ecbb71e5f65ca866e205b5132e.png
" >

这样的设置在场景中运行,会以每分钟增加5个虚拟用户的策略增长,当达到20个虚拟用户后,持续运行5min,然后再以每分钟停止5个虚拟用户的策略结束。

  1. 指定运行次数
    这里的运行次数是以虚拟用户数来判断的。例如,如果虚拟用户数是10,选择此种场景策略,则场景运行完10个虚拟用户数后自动结束。双击Duration并选中Run until completion即可,如图3-19所示。


1a09054d9a5e4af897e6e48004e710c59af54233
如果对测试数据没有特别的要求,完全可以利用“指定运行次数”这样的场景策略来制造测试数据。
  1. 组模式
    组模式也比较容易理解,仍然以BestTest论坛为例。一些水军经常会注册登录论坛,然后发一些垃圾帖子,管理员要删除这些帖子。对于这样有先后顺序的场景选用组模式。

组模式中的策略有3种,分别如下。
1)在场景开始时启动执行。
2)在场景执行一段时间后开始运行。
3)当某个脚本完成后再运行选定的脚本。

相关文章
|
5月前
|
数据采集 JSON JavaScript
Cypress 插件实战:让测试更稳定,不再“偶尔掉链子”
本文分享如何通过自定义Cypress插件解决测试不稳定的痛点。插件可实现智能等待、数据预处理等能力,替代传统硬性等待,有效减少偶发性失败,提升测试效率和可维护性。文内包含具体实现方法与最佳实践。
|
6月前
|
存储 关系型数据库 测试技术
玩转n8n测试自动化:核心节点详解与测试实战指南
n8n中节点是自动化测试的核心,涵盖触发器、数据操作、逻辑控制和工具节点。通过组合节点,测试工程师可构建高效、智能的测试流程,提升测试自动化能力。
|
7月前
|
Web App开发 人工智能 JavaScript
主流自动化测试框架的技术解析与实战指南
本内容深入解析主流测试框架Playwright、Selenium与Cypress的核心架构与适用场景,对比其在SPA测试、CI/CD、跨浏览器兼容性等方面的表现。同时探讨Playwright在AI增强测试、录制回放、企业部署等领域的实战优势,以及Selenium在老旧系统和IE兼容性中的坚守场景。结合六大典型场景,提供技术选型决策指南,并展望AI赋能下的未来测试体系。
|
7月前
|
存储 人工智能 算法
AI测试平台实战:深入解析自动化评分和多模型对比评测
在AI技术迅猛发展的今天,测试工程师面临着如何高效评估大模型性能的全新挑战。本文将深入探讨AI测试平台中自动化评分与多模型对比评测的关键技术与实践方法,为测试工程师提供可落地的解决方案。
|
5月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
10月前
|
边缘计算 安全 5G
高精度时钟同步测试仪:构建全场景时间同步生态
在数字化转型中,时间同步至关重要。西安同步电子科技的 SYN5106 高精度时钟测试仪,具备±20ns 时差测量精度与 GPS/北斗双模授时能力,广泛应用于电力、通信、金融和科研领域。它解决变电站时间偏差、5G 基站同步误差及高频交易延迟等问题,助力智能电网、5G 网络和科研实验。产品便携可靠,支持多协议,满足国家安全要求,为各行业提供精准时间同步解决方案。未来将探索量子通信与深空探测等领域,持续推动技术创新。
|
7月前
|
人工智能 缓存 测试技术
Playwright进阶指南 (6) | 自动化测试实战
2025企业级测试解决方案全面解析:从单元测试到千级并发,构建高可用测试体系。结合Playwright智能工具,解决传统测试维护成本高、环境依赖强、执行效率低等痛点,提升测试成功率,内容从测试架构设计、电商系统实战框架、高级测试策略、Docker化部署、CI/CD集成及AI测试应用,助力测试工程师掌握前沿技术,打造高效稳定的测试流程。
Playwright进阶指南 (6) | 自动化测试实战
|
6月前
|
人工智能 数据可视化 测试技术
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
AI 时代 API 自动化测试实战:Postman 断言的核心技巧与实战应用
759 11
|
6月前
|
人工智能 边缘计算 搜索推荐
AI产品测试学习路径全解析:从业务场景到代码实践
本文深入解析AI测试的核心技能与学习路径,涵盖业务理解、模型指标计算与性能测试三大阶段,助力掌握分类、推荐系统、计算机视觉等多场景测试方法,提升AI产品质量保障能力。
|
11月前
|
监控 测试技术 数据库连接
RunnerGo API 性能测试实战:从问题到解决的全链路剖析
API性能测试是保障软件系统稳定性与用户体验的关键环节。本文详细探讨了使用RunnerGo全栈测试平台进行API性能测试的全流程,涵盖测试计划创建、场景设计、执行分析及优化改进。通过电商平台促销活动的实际案例,展示了如何设置测试目标、选择压测模式并分析结果。针对发现的性能瓶颈,提出了代码优化、数据库调优、服务器资源配置和缓存策略等解决方案。最终,系统性能显著提升,满足高并发需求。持续关注与优化API性能,对系统稳定运行至关重要。