Jmeter从小白到高手(三)超详细

一.Jmeter性能测试里面BeanShell作用

1.1什么是BeanShell

  • 什么是BeanShell

    • 用Java写成的 小型、免费的Java源代码解释器
    • 可以执行标准Java语句和表达式,完全符合java语法的java脚本语言(需要会javase语言)
    • 包括一些脚本命令,有自己的一些语法和方法,是一种松散类型的脚本语言(这点和JS类似)
    • 用于一些复杂的个性化需求,使用更灵活,功能更强大
    • 官网地址:http://www.beanshell.org

1.2使用场景

使用场景

  • 需要在jmeter里面对数据的二次处理,定制自己的业务逻辑
    • 对参数进行加密、base64编码、时间格式化、文件操作、自定义断言等
  • 属于Jmeter二次开发
  • Jmeter里面开启【日志查看】方便调试

1.3BeanShell常用分类 

  • 采样器BeanShell
  • 前置处理器 BeanShell PreProcessor:提前对参数处理比如加密编码
  • 后置处理器 BeanShell PostProcessor :对返回结果做处理
  • 断言 BeanShell Assert :验证请求接口是否满足要求

 1.4外观样式调整

1.5BeanShell内置对象 

1.5.1添加BeanShell

1.5.2 内置对象 
SampleResult, ResponseCode, ResponseMessage, IsSuccess, Label, FileName, ctx, vars, props, log


 .BeanShell开发核心知识点应用实战

2.1Bean shell内置对象vars

  • 使用Bean shell内置对象vars对【变量】进行存取操作,作用在当前线程组,类似java里面的map
    • vars.put("name","jack");数据存到jmeter变量中
    • vars.get("name");从jmeter中获得变量值

在Bean shell脚本中,我们定义了id,title

在http请求中添加参数

查看结果树,有BeanShell请求和http请求,并且Http响应返回了我们设定的参数值

2.2Bean shell内置对象props

使⽤Bean shell内置对象props对【属性】进⾏存取操作,作⽤在跨线程组使⽤

props.get("language"); //jmeter.properties⾥⾯定义的属性

props.put("language","zh_CN");

我们使用脚本来得到jmeter.properties⾥⾯定义的属性


三.BeanShell基于响应结果自定义断言实战 

3.1需求背景 

  • 需求

    • 根据业务结果,自定义响应断言

3.2步骤 

 1.准备工作,创建一个http请求,传参的话这里我们需要用到前置处理器

2.添加前置处理器,编写参数

3.添加结果树,添加断言BeanShell

4.了解核心变量,prev是内置函数,可以拿到相应信息和响应码

String data = prev.getResponseDataAsString()  //获取响应信息
prev.getResponseCode() //获取响应code
Failure = false  //表示断言成功,
Failure = true //表示断言失败

5.在断言BeanShell中添加脚本

6.为了解析出正确的内容,我们需要引入json解析包

使用JSON工具

  • jar包放入jmeter目录下的 \lib\ext 中( 本章本集资料包里面)

  • 更多api参考 JSONObject

7.引入json工具包之后,编写脚本

 8.查看结果树

3.3拓展 

拓展

  • 有些项目会有需要对参数进行加密,比如MD5,则可以这样操作

import org.apache.commons.codec.digest.DigestUtils;

String signs = DigestUtils.md5Hex("1111");
log.info("md5==="+signs);

vars.put("title",(signs.toString()).toUpperCase());

四.Jmeter-html可视化压测报告实战

4.1测试报告及步骤 

  • 测试报告

    • 聚合报告(前面讲过)

      • 有收集到性能数据,但显示比较单一

    • Jmeter 可以生成 HTML 性能测试报告

  • 步骤

    • 保存jmx到本地

    • 进到jmeter的bin目录下

./jmeter -n -t /Users/xdclass/Desktop/report.jmx -l /Users/xdclass/Desktop/temp/jtl/result.jtl -e -o /Users/xdclass/Desktop/temp/result
  • 参数说明

    • -n 非gui方式运行jmeter

    • -t :jmx 脚本路径

    • -l :result.jtl 运行结果保存路径,注意:.jtl 文件名不能重复,文件夹需要存在

    • -e :在脚本运行结束后生成 HTML 报告

    • -o :用于存放 HTML 报告的目录,文件夹需要存在

4.2操作实战 

1.前置条件,创建线程组

 

2.创建http请求

 

3.保存jmx在本地,这里我们将其命名为report.jxm

 

4.进入jmeter的bin目录

 

5.输入上文提到的脚本

 

6.在对应的文件中生成了对应的结果文件

 

4.3Jmeter压测生成多维度图形化HTML测试报告讲解 

  • dashboard讲解

    • Test and Report informations

      • Source file:jtl文件名

      • Start Time :压测开始时间

      • End Time :压测结束时间

      • Filter for display:过滤器

      • Lable:sampler采样器名称

    • APDEX(Application performance Index)

      • apdex:应用程序性能指标,范围在0~1之间,1表示达到所有用户均满意

      • T(Toleration threshold):可接受阀值

      • F(Frustration threshold):失败阀值

    • Requests Summary

      • OK:成功率

      • KO:失败率

    • Statistics 统计数据

      • lable:sampler采样器名称

      • samples:请求总数,并发数*循环次数

      • KO:失败次数

      • Error%:失败率

      • Average:平均响应时间

      • Min:最小响应时间

      • Max:最大响应时间

      • 90th pct: 90%的用户响应时间不会超过这个值

      • 95th pct: 95%的用户响应时间不会超过这个值

      • 99th pct: 99%的用户响应时间不会超过这个值 (存在极端值)

      • throughtput:Request per Second吞吐量 qps

      • received:每秒从服务器接收的数据量

      • send:每秒发送的数据量

  • charts讲解

    • Over Time(随着时间的变化)

      • Response Times Over Time:响应时间变化趋势

      • Response Time Percentiles Over Time (successful responses):最大,最小,平均,用户响应时间分

      • Active Threads Over Time:并发用户数趋势

      • Bytes Throughput Over Time:每秒接收和请求字节数变化,蓝色表示发送,黄色表示接受

      • Latencies Over Time:平均响应延时趋势

      • Connect Time Over Time :连接耗时趋势

    • Throughput

      • Hits Per Second (excluding embedded resources):每秒点击次数

      • Codes Per Second (excluding embedded resources):每秒状态码数量

      • Transactions Per Second:即TPS,每秒事务数

      • Response Time Vs Request:响应时间和请求数对比

      • Latency Vs Request:延迟时间和请求数对比

    • Response Times

      • Response Time Percentiles:响应时间百分比

      • Response Time Overview:响应时间概述

      • Time Vs Threads:活跃线程数和响应时间

      • Response Time Distribution:响应时间分布图

 

具体如下:

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值