第2章 测试工具-JMeter,扩展组件开发

一、测试工具篇-JMeter

  • 断言在并发时,不适合用

常用功能

【测试计划】可以理解为各种测试元件的容器。

【线程组】可以设置一些并发策略,模拟并发用户发送请求。

【Sampler】取样器


HTTP请求:测试必备,jmeter测试http协议接口的各种传参方式(链接);
BeanShell Sampler:
Debug Sampler调试取样器:只看到jmeter变量,其他2个默认false;
如果是其它协议,比如java、dubbo、websocket、smtp、tcp、jdbc,添加对应的取样器等即可,如果没有,那么就需要我们自己开发,所以,java基础是必备的。

【逻辑控制器】

if
事务控制器、吞吐量控制器
ForEach控制器
仅一次控制器

【前置处理器】发送请求前做的一些处理

BeanShell PreProcessor
用户参数

【后置处理器】发送请求后做的一些处理

正则表达式提取器:关联的方式很多,用万能的正则;另外,jmeter关联的5种方式
Debug PostProcessor:除了可以看到jmeter变量,还可以看到配置信息,最好放在正则表达式提取器后面,否则看不到提取的结果;
BeanShell PostProcessor

【断言】

响应断言
BeanShell断言

【定时器】类似于LR思考时间

固定定时器
高斯随机定时器
Synchronizing Timer

【配置元件】

HTTP信息头管理器
HTTP Cookie管理器
CSV 数据文件设置:参数化
HTTP请求默认值 


提醒:分隔符不能是参数化的值中的符号,否则会被截断,比如,你参数化整个json,逗号作为分隔符,而json中就有逗号,所以,发送请求的时候,会被截断。

【监听器】

查看结果树
聚合报告

【函数助手】
常用的函数需要掌握,如随机函数等,举例:生成1-1000的随机数,可以通过${__Random(1,1000,key)}生成随机数,通过${key}可以获取这个随机数;

【作用域】
全局的放线程组下,局部的,专属哪个取样器,就放哪个取样器下。

【jmeter执行顺序】
配置元件 → 前置处理器 → 定时器 → 取样器 → 后置处理器 → 断言 → 监听器;
同一层级的,顺序执行;
注意:一个万能且保险的方法,放到对应的取样器下面即可。

Jmeter中定义变量的地方:有4种

  a) 测试计划(Test plan),在右边的面板上添加User Defined Variables
  b) 线程组,右键选择 配置元件——用户定义的变量;( config element)-->User Defined Variables
  c) 通过前置或后置处理器生成的变量:Jmeter关联,正则表达式提取器,
前置处理器—用户参数;
  d)使用csv参数化的变量:Jmeter参数化
注意:如果同一个变量在多个 b 中被定义,那么只有最后一个定义会生效。
例如 c 或者 d 可以被用来重新定义变量,这些重定义仅仅影响当前线程。

【jmeter生成测试报告】

  • 创建脚本
    线程组:3个线程持续运行30秒,
    http请求:访问百度首页,响应断言“百度一下”
    http请求:百度搜索,添加“wd,python”,响应断言“python”

  • 1、命令方式执行生成报告
    jmeter -n -t G:\111lianxi\lianxi\jmeter\3.功能\生成测试报告-举例.jmx -l G:\111lianxi\lianxi\jmeter\3.功能\result.jtl -e -o G:\111lianxi\lianxi\jmeter\3.功能\TestReport

  • 2、查看报告
    点击index.html
    聚合报告


【分布式压测】

分布式压测也是需要掌握的,参考:jmeter5.1分布式压测
https://mp.weixin.qq.com/s?__biz=MzIxMzMxMDcwNA==&mid=2247484111&idx=1&sn=85d15b3175bce5821eca5f14b6612e79&chksm=97b98f50a0ce0646b054aa83d78c5ce0a3a823cc19ab3acb89cfb31d4a86e78e7bd9a12caa5b&scene=21#wechat_redirect

【beanshell】

可以参考:玩转jmeter:beanshell必备技能
https://www.cnblogs.com/uncleyong/p/7189778.html

性能测试方案

jmeter实现多并发

  • 线程组:负载发生器,用多线程或多进程的方式来模拟用户的使用行为。jmeter是以线程的方式来进行模拟用户的并发访问的。

jmeter实现逻辑分支控制

  • 逻辑控制器:用来控制测试脚本的逻辑判断,也可以理解为如何控制脚本的运行。例如控制器,就是当满足什么条件后执行哪一步操作。
  • 常用的有:如果(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。

jmeter实现配置管理


  • 请求头,参数化数据,用户自定义变量 来定义常量

jmeter最佳实践

http://jmeter.apache.org/usermanual/best-practices.html
Jmeter压测减少资源使用的一些建议,即压测结果会更准确:
1、使用非GUI模式(也就是CLI,Command Line Interface,命令行界面):jmeter -n -t test.jmx -l result.jtl
2、少使用Listener, 如果使用-l参数,它们都可以被删除或禁用
3、在加载测试期间不要使用“查看结果树”或“用表格查看结果”监听器,只能在脚本阶段使用它们来调试脚本
4、包含控制器在这里没有帮助,因为它将文件中的所有测试元素添加到测试计划中
5、不要使用功能模式
6、使用CSV输出而不是XML
7、只保存你需要的数据
8、尽可能少地使用断言
9、如果测试需要大量数据,尤其是需要将其随机化,可以提前准备好测试数据放到数据文件中,从CSV数据集中读取, 这样可以避免在运行时浪费资源

二、Jmeter扩展组件开发实战、

1、自定义java请求开发

  • 准备工具:下载java,idea——maven

注意:4个方法,顺序


举例:显示百度;访问百度/QQ网页,OK;java代码可以改结果树那里的名称

2、扩展组件开发:自定义函数

  • 添加beanshell填写内容:为 下方生成的
  • 函数助手,生成复制

火爆的大数据:hadoop


  • 对数据处理:实时处理,离线处理
  • 了解架构,按模块测试;

实时数据处理三大框架





实战使用jmeter进行大数据性能测试

1、百度Apache kafkat,zookeeper,下载;搭建环境

2、

posted @ 2020-02-19 17:16  吃一口冰淇淋  阅读(454)  评论(0编辑  收藏  举报