LoadRunner loadrunner 实现分布式压测

目录: 添加window机器的压力机器

添加Linux机器的压力机器

添加Windows压力机器 一般压力机器分为Windows和Linux 1.添加Windows压力机器的步骤如下:

Ø 前提是先需要在压力机器上面安装了Loadruner Agent,并启用(看状 态栏有一个小卫星图标)

Ø 添加的压力机遇Controller所在机器要在同一个网段,建议关闭防火墙

Ø 本地系统的RPC服务要开启(在“控制面板”—>“管理工具”—>“服务”中 开启,建议改为自动启动:Remote Procedure Call (RPC) Locator)

Ø 从Controller所在的机器上登录到压力机器,验证是否可以连通。单击 Windows系统的“开始”菜单,选择“运行”,在弹出的对话框中输入“\机 器名”,如果不报错则成功

Ø 进入到Controller,单击Scenario—>Load Generators菜单项,默认会 有一台本机的压力机器

或直接点击下面的按钮

LoadRunner loadrunner 实现分布式压测

 

单击add按钮,添加其它压力机器

Ø name:输入IP地址

Ø platform:选择Windows

LoadRunner loadrunner 实现分布式压测

 

LoadRunner loadrunner 实现分布式压测

 

Ø选择刚添加的loadruner Generators,点击“Connect”进行连接

Ø当状态(status)变成Ready,表明已经连接成功了

LoadRunner loadrunner 实现分布式压测

 

在场景中的load Generators下拉框显示刚添加的load Generators

LoadRunner loadrunner 实现分布式压测

 

Ø选择刚才添加的负载机,到时压力就会在这台机器上面

Ø跑脚本时,在负载机的工具栏,看到如图的小图标

LoadRunner loadrunner 实现分布式压测

 

2、添加Linux压力机器

Ø 到HP官网下载HP_LoadGenerator,解压之后,选择文件名为Linux 的包,上传到Linux系统中

Ø 在控制台输入

Ø [root@jmeter opt]# chmod -R +x Linux/*

Ø [root@jmeter opt]# cd Linux

Ø [root@jmeter Linux]# ./installer.sh

Ø 输入n

Ø 输入a

Ø 输入i

LoadRunner loadrunner 实现分布式压测

 

安装依赖包

Ø [root@jmeter yum.repos.d]# yum whatprovides libstdc++.so.5

LoadRunner loadrunner 实现分布式压测

 

Ø 安装这个版本的

Ø [root@jmeter yum.repos.d]# yum install compat-libstdc++-33- 3.2.3-69.el6.i686 -y

Ø 安装的目录: /opt/HP/HP_LoadGenerator

Ø 输入f,完成安装

Ø 设置环境变量:[root@jmeter Linux]# useradd -g 0 -s /bin/bash generator # 创建一个generator用户

Ø [root@jmeter Linux]# vim /etc/profile 输入一下内容: export PRODUCT_DIR=/opt/HP/HP_LoadGenerator export M_LROOT=$PRODUCT_DIR export PATH=${M_LROOT}/bin:$PATH

Ø 输入:wq保存

Ø 输入[root@jmeter Linux]# source /etc/profile使环境变量生效

Ø [root@jmeter Linux]# su - generator # 切换到generator

Ø [generator@jmeter ~]$ [generator@jmeter bin]$ cd
/opt/HP/HP_LoadGenerator/bin/ # 进入到默认安装目录中

Ø [generator@jmeter bin]$ ./verify_generator

Ø 看到如下安装信息,表示安装成功

LoadRunner loadrunner 实现分布式压测

 

配置hosts [root@jmeter yum.repos.d]# vim /etc/hosts

在文件中加入如下信息

127.0.0.1 jmeter # 你本机的机器名

启动agent [root@jmeter bin]# ./m_daemon_setup start

m_agent_daemon ( 64416 ),

出现上面信息,表示启动成功

回到controller页面,与添加Windows的方法一样,不同的是,需要勾选“Don’t use RSH’

LoadRunner loadrunner 实现分布式压测

 

点击connect,出现Ready,说明连接成功

LoadRunner loadrunner 实现分布式压测

推荐一个软件测试学习交流群:785128166,群里有分享的视频,面试指导,测试资料,还有思维导图、群里有视频,都是干货的,你可以下载来看。主要分享测试基础、接口测试、性能测试、自动化测试、TestOps架构、Jmeter、LoadRunner、Fiddler、MySql、Linux、简历优化、面试技巧以及大型测试项目实战视频资料。合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

公众号:程序员二黑, 关注后免费领取海量学习资料。

好东西要和朋友一起分享哦
 

<think>嗯,用户要求了解如何使用LoadRunner进行API接口测试的方法和示例。从引用的材料来看,用户可能具备一定基础,但需要具体操作指导。用户展示的引用内容很有价值:引用1提到web_custom_request函数的使用;引用2是资源获取渠道;引用3展示了登录和参数处理的复杂场景;引用4给出完整的接口测试脚本范例。这些恰好构成一个完整的知识链。需要重点解决三个层次的问题:基础函数选择(web_custom_request/web_submit_data的区别)、参数化处理(尤其认证参数)、结果校验机制。引用4的示例特别实用,可作为核心模板,但要注意提醒用户修改四个关键点:事务名称、请求地址、参数名称、结果判断逻辑。用户可能是中级测试工程师,正在搭建测试框架。深层需求可能是想验证高并发下的接口稳定性。需要强调负载机部署、监控配置等关键但易忽略的环节。准备用三阶段结构:脚本编写(函数选择+参数化)+场景设计(配置)+结果分析(成功标准)。在事务控制部分会特别说明lr_start_transaction的正确用法,因为引用4示例里把它放在web_reg_save_param之后是易错点——必须确保事务包含整个请求过程。</think> 以下是使用LoadRunner进行API接口测试的完整方法和示例,结合关键函数及最佳实践: ### 一、核心步骤及代码示例 ```c // 示例:带参数校验的API脚本 Action() { // 1. 动态获取鉴权token(以登录接口为例) web_reg_save_param_ex( "ParamName=access_token", "LB=\"token\":\"", "RB=\"", SEARCH_FILTERS, LAST ); web_custom_request("login_api", "URL=http://api.example.com/login", "Method=POST", "Body={\"username\":\"testuser\",\"password\":\"123456\"}", "RecContentType=application/json", LAST ); // 2. 使用获取的token测试目标接口 lr_start_transaction("target_api"); web_custom_request("main_api", "URL=http://api.example.com/target_endpoint", "Method=GET", "Header=Authorization: Bearer {access_token}", // 动态插入token LAST); lr_end_transaction("target_api", LR_AUTO); // 3. 结果校验 web_reg_find("Search=Body", "Text=success", "Fail=NotFound", LAST); } ``` ### 二、关键函数说明 1. **`web_custom_request`** 全能请求函数,支持所有HTTP方法: - `"Method=POST|GET|PUT|DELETE"` - `"Body=..."` 传递JSON/XML等参数 - `"Header=Content-Type:application/json"` 设置请求头 2. **动态参数处理** - 获取响应参数:`web_reg_save_param_ex`(正则提取) - 参数化:`lr_eval_string("{param}")` ```c // 参数化示例 char *dynamic_data = lr_eval_string("{createTime}"); web_custom_request(..., "Body={\"timestamp\":\"{dynamic_data}\"}", ...); ``` 3. **断言机制** ```c web_reg_find("Text=200", "Fail=NotFound", LAST); // 响应状态校验 if(atoi(lr_eval_string("{response_code}")) != 200){ lr_error_message("请求失败!错误码:%s", lr_eval_string("{error}")); } ``` ### 三、测试配置要点 1. **场景设计** | 配置项 | 推荐值 | 作用 | |---|---|--| | Ramp Up | 每30秒增加50用户 | 模拟渐进流量 | | Duration | ≥15分钟 | 获取稳定系统表现 | | Think Time | 3-5秒 | 模拟用户操作间隔 | 2. **监控指标** - 服务端:CPU/Memory(通过LR的`unix_monitor`) - 网络:`web_get_int_property(HTTP_INFO_DOWNLOAD_SPEED)` - 事务响应时间:`lr_get_transaction_duration()` ### 四、结果分析重点 1. 通过率:确保事务成功率 > 99.5% 2. 响应时间:95百分位数 ≤ 1秒 3. 错误类型: - HTTP 5xx:服务端问题(需检查服务日志) - Connection Refused:连接数耗尽(需扩容) - Timeout:API处理能力不足 ### 五、完整工作流 ```mermaid graph TD A[脚本开发] --> B[参数化处理] B --> C[场景配置] C --> D[执行] D --> E[性能监控] E --> F[结果分析] F --> G{性能达标?} G --是--> H[生成报告] G --否--> I[性能优化] ``` > **最佳实践提醒** > 1. 重要接口建议用`web_js_run`执行JavaScript预处理逻辑[^2] > 2. 生产环境需隔离数据库,避免脏数据污染 > 3. 持续时添加思考时间`lr_think_time(5)`降低服务端力[^4] --- **相关问题** 1. LoadRunner如何模拟高并发下的IP地址轮换? 2. 如何检API过程中的内存泄漏问题? 3. LoadRunner脚本如何实现对WebSocket协议的支持? 4. 分布式时如何解决多台负载机的数据同步问题? [^1]: 关键请求函数选取指南 [^2]: JavaScript预处理实现方法 [^4]: 思考时间设置规范文档
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值