【性能测试】五、jmeter—脚本增强

一、没有接口文档如何处理

抓包: F12 、fiddler、wireshark、Charles
第三接口:api接口
swagger:

二、 写脚本方法拓展

录制脚本

  • badboy --曾经很流行,现在已经不维护,已经被遗弃
  • 代理录制:用于脚本参数比较多,或者用手动编写脚本,一时半会写不出来。

代理录制:

  • 代理服务器: 自己启动一个代理服务器

  • 本地:要使用代理服务器的ip和端口,使用自己启动的代理服务器

  • 步骤:

    • 1.添加线程组
    • 2.测试计划>非测试元件>http代理服务器
      • ip就是你自己电脑的ip,port是可以修改,默认8888,可以随意修改
      • 目标控制器,一定要修改 修改为 测试计划>线程组
      • 添加过滤器,可以将不需要的请求过滤,不进行采集
    • 3.启动代理服务器时,会出现一个证书的弹窗;
      • 如果要抓取https,就必须使用证书。
      • 点击ok,可以在bin目录下生成一个有效期7天的证书,每次生成会覆盖之前的
      • 将证书安装到浏览器, 注意:有效期7天
    • 4.本地浏览器使用代理服务器上网
      • 在这里插入图片描述
      • 访问浏览器,可以看到录制到的请求。
      • 此步骤还可以通过chrome插件来实现,就不用去系统设置配置代理。参考:
  • 5.录制完成,关闭代理服务器,本地使用代理服务器配置关闭。

三、脚本功能增强

1.关联

  • 关联:前面接口的响应信息,有动态值,作为后续接口的参数参数

2.定义变量

jmeter中定义变量有两种:

  • 1.用户定义变量
    • 配置位置:测试计划>配置元件
    • 作用域:全局变量。作用于整个测试计划。在启动运行时,获取一次值,在运行过程中,不会动态获取值,值一直都不变。
    • 使用方法:
      • 定义:var_para: “abc” - -注意参数类型及引号
      • 调用:${var_para}
  • 2.用户参数
    • 配置位置:前置处理器
    • 作用域:当前线程组、或者当前取样器.获取一次值,在运行过程中,还会动态获取值
    • 使用方法:同上
    • 配置项:每次迭代更新一次:一个线程组下所有的接口,全部执行完1次,才算1个迭代

**注意:**如果将参数配置成可变参数:

对于获取一次值,在运行过程中,不会动态获取值,值一直都不变②获取一次值,在运行过程中,还会动态获取值的理解:

  • ①:该情况下,无论设置多少个线程组,还是运行多少次,参数值都不会变
  • ②:该情况下,不管是多个线程组、还是执行多次,都会获取到变化后的参数,每次都不一样。如果勾选【每次迭代更新一次】,可以在这一个迭代中参数不变。

3.jmeter的函数

  • 1.函数助手。tools>函数助手对话框,或者快捷键:CTRL+shift+f1
    在这里插入图片描述
  • 2.规则:
    • 双下划线开头
    • 函数名称,严格区分大小写
  • 3.常用函数
    • ${__counter(,)} 计数器
    • ${__dateTimeConvert(,)} 时间格式转换
    • ${__RandomDate(,)} 随机日期
    • ${__digest(,)} 加密 简单加密
    • ${__intSum(,)} 整数相加函数
    • ${__P(,)} 获取属性函数
    • ${__property(,)} 获取属性函数
    • ${__setProperty(,)} 设置属性函数
    • ${__Random(,)}
    • ${__RandomString(,)}
    • ${__threadNum} 获取线程号函数
    • ${__time(,)} 获取当前时间戳函数
    • ${__timeShift(,)} 数据格式化
    • ${__V(,)} 拼接函数
  • 4.调用函数
    • 点击生成按钮,可以将函数直接复制到粘贴板,粘贴到脚本中需要调用的地方即可
      在这里插入图片描述
    • 注意事项: 函数名称的大小写

4. jmeter的属性

回忆:
全局变量: 可以跨线程组,在运行过程中不会动态获取值。
局部变量:不能跨线程组,在运行过程中,还会动态获取值。
提问:
那么用户如果想变量可以跨线程组,还可以动态获取值,应该怎么做?
答:属性

  • 1.什么是属性?
    是jmeter工具自身带有的标签,
    以.properties结尾的文件,都是jmeter的属性配置文件。
    • .jmeter工具属性 --可能被改变的
      • 静态属性:写在properties文件中属性信息,都是静态属性
      • 动态属性:运行过程中,动态定义属性
    • 系统属性
      • 不可改变
    • .属性 /参数 /变量 的区别?
      • 属性是jmeter工具具有的,所以,jmeter中的线程组都可以使用
      • 参数/变量 ,有局限访问
  • 2.设置属性
    • 查看属性:测试计划>添加>非测试元件>属性显示
      在这里插入图片描述
      在这里插入图片描述
  • 设置属性
    使用设置属性函数${__setProperty(,)},将需要跨线程组使用的参数设置为属性
    在这里插入图片描述
  • 获取属性
    使用获取属性函数${__P(,)},获取设置为属性的参数,
  • 动态属性,是在运行过程中产生的,关闭jmeter,就是自动释放了。
  • 多个线程组的执行顺序?
    • 取样器从上到下,顺序执行
    • 线程组默认是并行执行
    • 在做性能测试时,不要勾选测试计划中:独立运行每个线程组。
      在这里插入图片描述
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JMeter是一个功能强大的开源性能测试工具,用于评估系统的负载和压力。在进行290万并发的登录性能测试设计时,需要考虑以下几个关键步骤: 1. **需求分析**: - 明确测试目标:比如响应时间、吞吐量、系统稳定性等指标。 - 用户行为模拟:登录过程中的所有操作,包括HTTP请求、参数传递、验证码处理等。 2. **环境设置**: - 使用分布式测试:JMeter支持分布式测试,需要配置多个测试代理节点(JMeter slaves)来模拟大量用户并发。 3. **脚本设计**: - 创建登录测试计划:包括登录页面的HTTP请求、登录表单填充、提交按钮模拟点击等。 - 使用用户类加载器:如Thread Group,设置线程数、循环次数来达到所需并发。 4. **参数化**: - 使用CSV Data Set Config或JDBC取样器为大量用户生成随机数据。 5. **负载调度**: - 使用 ramp-up 或 ramp-down 功能,渐增或渐减并发用户,避免一开始就对系统造成过大冲击。 6. **监控与结果分析**: - 配置断言检查响应是否正确,使用视图结果树查看请求和响应情况。 - 设置合理的超时和重试策略,应对网络延迟或服务器响应问题。 8. **压力测试**: - 进行压力测试并记录关键性能指标,观察系统在高并发下的表现。 相关问题: 1. 在JMeter中如何设置用户类加载器以模拟大量并发用户? 2. 如何在JMeter中处理验证码以增强测试的复杂度? 3. 性能测试期间如何调整和优化JMeter脚本以提高测试效率?

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值