【文章末尾给大家留下了大量的福利】
一、csv数据文件设置
1、使用场景:测试过程中需要使用手机号码等大量数据时,用random函数随机生成数字;也可以使用Excel拖动生成一批手机号,也有可以从数据库中导出一批手机号,把准备好的数据,放到txt文件,或者csv文件中,使用csv数据文件设置直接调用。
2、txt文件、csv文件:都是文本文件,只是csv文件是用逗号分割列的文本文件
3、使用csv数据文件设置,建议使用 txt文件,有两点原因
3.1 csv文件被打开时,占用的系统资源要多于txt,从性能测试角度分析,要尽可能使用不会影响到性能得文件
3.2 csv文件默认使用Excel来编辑,Excel的默认保存文件编码不是utf8,那么,在文件中有中文的时候,可能就会出现中文乱码
4、文件名:在线程组中添加csv数据文件设置后,必须导入文件,因为文件名为空,jmeter工具就会报错,整个脚本就不能运行
4.1 相对路径:相对的起始点
4.1.1 jmeter的bin文件夹 ----这个是jmeter的脚本默认的保存路径
4.1.2 jmx脚本保存的路径
4.2 csv文件放置位置:放在jmx路径相同的位置,相对路径使用'.\'反斜杠
4.2.1 这个.\ 可以在linux系统中被使用------也就是说,这个路径可以跨平台(兼容window、 mac、linux)
4.2.2 做性能测试时,我们的jmx脚本可能要放到linux 系统中来运行,所以,我们建议这个相对路径的 斜杠 用 '.\'
4.3 在使用CLI命令进行性能测试时,建议把csv的文件放在 jmeter命令执行的位置
5、变量名称:定义的变量名称,会接收对应列的值,启动运行,就会从第一行开始取值,默认: 如果你启动运行之后,会循环运行多次,那么,就会自动的从第一行开始往下取值,如果总的运行次数,超过我们文件行数量,就会从第一行开始,再从上往下取值。 多个变量名称之间,用固定逗号来分割
6、忽略首行:选择 false不忽略首行; true忽略首行,从第二行开始
7、分隔符: 默认为“,”这个是csv的默认分割符合 这个可以根据你自己的文件中的分割符来改变。
8.2 true:是的,我会继续循环,从头开始循环,文件第一行;false:停止循环
9.1 停止循环:停止做某件事情,不再从文件开头进行循环
9.2 false 不,我不会停止脚本的运行;true 是的,我会停止脚本的运行
10、T1+T2
10.1 T1 true + T2 false == 不会停止运行,继续运行,又从头开始取值。
10.2 T1 true + T2 true === 发生冲突,导致T2无效,会继续运行,从头开始循环
10.3 T1 false + T2 true ===我会停止运行,T1也没用了
10.4 T1 false + T2 false ===不会停止运行,T1就一直在最后一个空值 上循环
11、线程共享模式
11.1 所有线程: 所有的并发用户都共享一个csv文件,所有线程取这个文件中的值的时候,循环取值
11.3 当前线程: 线程组中每个线程都有一个独立csv文件
11.4 后置处理器、csv数据文件设置等等一些元件中定义的变量,都是 jmeter 的参数变量,不能直接跨线程组。
二、逻辑控制器
1、逻辑控制器是用来控制脚本执行的逻辑顺序,控制的主体为取样器
2、if条件控制:if条件满足才会去执行下面的取样器
2.1 默认请求下,必须使用jexl3 或 groovy这个函数,把表达式的结果计算出来,为真,才执行逻辑控制器下的取样器,如果为假,则不执行,输入框填写计算式:${__groovy(${jcode} == 0,)}
2.2 去掉 Interpret condition as variable expression的复选框,输入框填写表达式{jcode} == 0
3、foreach控制器:对一个明确列表数据来进行循环
3.1 使用场景一:后置处理器提取出多个值的时候,多个值,就会自动带上_数字
3.2 使用场景二:用一个变量来接收,从数据库中返回数据,当这个变量的值有 多个时,这个变量名称后面也会跟上_数字,你要用这些值。
4、循环控制器:控制取样器执行次数
5、仅一次控制器:启动运行之后,每个线程只会运行一次
6、事务控制器
6.1 jmeter中,默认,一个取样器执行一次请求,就是一个事务
6.2 jmeter中,也可以通过事务控制器,把多个接口合并在一起,发起 一次完整的请求,当做一个事务。
6.3 用jmeter做接口的性能测试, 先对单接口进行性能测试,然后,再 试多接口构成业务进行性能测试, 再多业务一起性能测试,系统的性能测试。
6.3.1 全链路:发起请求的数据流的各个环节都需要测试。
6.3.1.1 常规理解:使用jmeter先对1个接口进行测试,再扩展到2-3个,最后慢慢的把整个产品中, 非常多个多的接口,都进行性能测试,对于中小微企业,或者完全还没有性能测试部门的公司,这就是全链路测试
6.4.1.2 真正意义上的全链路:多个接口都需要做性能测试;对应服务器的各个环境,都需要进行监控;流量回放;压测工具 ;全链路监控;全链路性能分析
三、其他协议脚本编写
1、soap协议 = = http协议 + xml数据
1.1 用jmeter写soap协议脚本, 使用http取样器 + xml,数据放在消息体数据中
1.2 soap协议接口版本 1.1版本与1.2版本的区别
1.2.1 消息头: 1.1中 SOAPAction, Content-Type不一样
1.2.2 请求体中,节点的标签名不一样
2、jdbc协议:java语言连接数据库执行sql的api接口协议
2.1.1 了解数据库的类型dbms: MysqL、oracle、 postgresql、sqlite
2.1.2 获取java语言调用数据库的驱动包:通过maven仓库
2.1.2.1 http://mvnrepository.com/ 搜索MysqL
2.1.2.2 确认自己的MysqL的版本:如果自己的MysqL版本为5.7.x的版本,你的驱动包,可以选择大于等于数据库版本的包;如果你的MysqL是8.x的版本, 你选择的驱动包, 就要与你的数据库版本一致
2.1.3 把下载的驱动包,放到jmeter的lib\ext文件夹中,然后,重启 jmeter
2.1.4.1 数据库的ip、port、账号、密码
2.1.4.2 在jmeter中,添加数据库配置信息:JDBC Connection Configuration
Variable Name for created pool: 自定义
DatabaseURL(MysqL写法):jdbc:MysqL://msyql_ip:port/dbname
JDBC Driver class:当你的数据库版本为5.7.x版本,可以直接 选择 com.MysqL.jdbc.Drvier;数据库版本为8.x版本: com.MysqL.cj.jdbc.Driver
用户名,密码
2.1.5 执行sql脚本 -----取样器
2.1.5.1 jdbc request
pool: 填写Configuration中自定义 pool名称
sql Query: 写脚本
query type: select statement
2.1.6 sql Query:在执行查询语句时不建议查全表,因为jmeter图像界面工具,默认只能支持10m的响应;查看结果树中,默认只会显示最新的500响应,超过了会导致 jmeter卡死,后面程序有部分数据会看不到;在jmeter.properties配置文件中可以修改但是不建议改,因为,我们性能测试不用图像界面,也不用查看结果树。
2.1.6.1 编写sql时这个结尾的分号可以不写,因为,jmeter默认不支持 一个取样器中写多个sql
2.1.6.2 怎么定义变量来接收数据库查询结果:如果想使用特定的参数,则将不使用的参数用一个逗号隔开
2.1.6.3 在sql中引用变量:1、直接变量引用 ${变量} ---这种用法,可能存在安全风险不建议使用;2、使用 ? 来占位,占用一个变量引用的位置:parameter values: 填写 ${变量};parameter type: 填写 varchar, 如果要传入整数 integer;注意: query type 修改为 prepared select statement ;带有 prepared 开头是在脚本中,可以传入参数;多个变量时,用逗号分割
2.2.1 是一个关系型数据库,这个数据库,只需要你有图像界面系统,然后有浏览器, 这个数据库在你电脑里已经应用。
2.2.2 使用:下载jar文件 mvn仓库中下载-放入jmeter的lib\ext文件夹, 重启jmeter
2.2.3 JDBC Connection Configuration:pool: 自定义;DatabaseURL: jdbc:sqlite:sqlitefile.db;Drvier class: 选择 org.sqlite.JDBC;账号密码: 空
2.2.4 这个数据库,不用建库,只需要建表;sqlite 数据库是一个内存数据库,但是,这个数据库,不支持多线程并发
一、保存数据到入csv、txt文件
1、写代码
2、不写代码
2.1.1 在jdbc取样器下面,添加保存响应到文件(右键-监听器-保存响应到文件)
2.1.2 文件名称前缀: 写一个文件名包含文件格式:例如 jdbcresult.txt (文件可以是txt、xls、xlsx格式)
2.1.3 勾选:Don't add number to preffix,Don't add content type suffix,否则保存文件类型会出错
2.1.4 如果保存的文件名不变,保存响应到文件,保存的则是最后一个取样器执行的结果到文件中,会覆盖前面的响应结果
2.2 有注册接口,用了参数,我期望把用到的参数值保存到本地文件。
2.2.1 写代码
2.2.2 不写代码方法:http://testingpai.com/article/1595507274025
二、DDT数据驱动二
2、用传统的csv方式,作为性能测试输入源数据
3、两者的区别
3.1 使用的数据量如果完全相同的话,csv\txt文件用的内存会比 sqlite的方式大一些
3.2 csv\txt文件本身包含了我们不需要的数据,所以csv\txt文件大小就要比sqlite方式占用内存要大
3.2.1 比如:txt文件中有5列,但是,使用csv数据文件设置我只需要使用其中的3列,那么有多余2列的数据也会占用内存。
3.2.2 sqlite数据库是以查询的方式来获取数据,所以我只需要select查询对应3列数据就可以,这样不会占用更多的内存。
3.3 csv数据文件设置,不可以从指定位置开始读取数据,因为每次读取,都是读取整个csv\txt文件。而用sqlite数据库查询的方式,可以使用查询语句从指定行查询数据:select xxx from table limit xxx offset xxx。
3.4 在性能测试中,如果要使用数据驱动性能测试,sqlite查询数据的方 式,要比传统的csv方式要更灵活,效率也更高。
三、websocket协议
1、概念:是一种基于TCP的全双工通信协议,websocket这个协议与http协议相同,都是用tcp方式来传输数据
2、协议区分:ws--没有加密的数据传输方式;wss--使用加密方式来传输数据
3、全双工通信
3.1 http:半双工, 只能从通信的一方主动发生数据给另一方进行数据通信
3.2 websocket: 全双工, 双方都可以主动发起数据通信
3.2.1 数据传输:客户端 -> 服务器端发送数据,也可以由服务器端主动 --> 客户端发送数据。
3.2.2 典型应用:微信,QQ消息提醒,物联网
3.3 websocket VS socket:两种完全不同的协议
3.3.1 websocket是应用层的一个协议,是在互联网中进行数据通信的一 个协议,这个协议的数据是暴露在互联网中的
3.3.2 socket 是服务与服务之间进行数据通信的协议---这种方式的 数据有效率比较高。
3.3.3 websocket可以用jmeter元件写脚本进行测试,socket就需要写代码来调用
3.3.4 jmeter测试websocket协议,需要引入插件 jpgc
4、jmeter引入插件
4.1 jar包:jmeter-plugins-manager-1.7.jar,放到jmeter的lib\ext文件夹 重启jmeter、
4.2 在"选项"菜单下 plugins manager入口
4.2.1 installed plugins 已经安装的
4.2.2 available plugins 可以安装的:搜索 websocket 或者 拉到最下面---勾选 websocket samplers by perter Doornbosch----点击 【apply changes and restart jmeter】
4.2.3 upgrade 需要升级的
5、编写脚本
5.1 启动项目:./stwebsocketserver.sh
5.2 取样器:
5.2.1 websocket close 关闭
5.2.2 websocket open connection 建立一个连接:serverURL--ws
5.2.3 websocket Single Read sample 从服务器上获取消息
5.2.4 websocket Single write sample 向服务器发送指令:use existing connection 使用已经建立的连接;Data:txt-文本,binary: 二进制
5.2.5 websocket request-response sample 读-写请求都有
四、MQ消息队列
1、实现消息队列的软件很多 mqtt、rabbitmq、kafka .....
2、发送一个消息,服务器收到消息,根据先收到先处理的原则,排队,在前面的就会被先消费,属于异步消息
3、启动项目:./stmqttserver.sh
3.1 服务端口
3.1.1 1883 MQTT/tcp 协议端口,可以被外部访问
3.1.2 11883 MQTT/tcp 协议端口,只能在内部访问
3.1.3 8883 MQTT/ssl 协议端口
3.1.4 8083 MQTT/ws 协议端口
3.1.5 8084 MQTT/wss 协议端口
3.1.6 18083 HTTP端口,可以通过浏览器访问 admin / public
4、测试
4.1 安装mq插件:插件管理 > 可安装的插件 > 搜索mqtt > 选择 MQTT Protocol Support, 下载
注意:插件下载,有可能会失败,因为,这些插件的服务器在国外,所以,网络原因可能导致失败。
4.2 publisher 发布主题:tcp://youmqttserver_ip:1883 主题、内容
4.3 subscriber 订阅主题:tcp://youmqttserver_ip:1883 主题
4.4 MQ异步消息的性能测试
4.4.1 开启2个jmeter线程组:
4.4.1.1 1个jmeter进行 主题发布,可以是单个用户发送
4.4.1.2 1个jmeter进行多用户并发的 主题订阅:设计性能场景进行测试,最终要得到是订阅的性能报告
五、dubbo协议
1、现在企业中用springboot做微服务的开发,微服务之间的通信,很多都会用dubbo, 这个协议,通信内容,不会暴露在公网
2、测试:
2.1 启动服务 ./stdubboserver.sh
2.2 把jmeter-plugins-dubbo-2.7.3-jar-with-dependencies.jar放到jmeter的 libext文件夹中重启jmeter
2.3 取样器:dubbo sample
2.3.1 registry setting填写 注册中心信息
2.3.1.1 protocol: 协议选择zookeeper,默认端口2181
2.3.1.2 address: ip:20181
2.3.2 点击 【get provider list】:yes 出现jmeter有几秒无响应
2.3.2.1 选择method: list
2.4 带有参数
重点:学习资料学习当然离不开资料,这里当然也给你们准备了600G的学习资料
【需要的扫描文章末尾的官方推广二维码进技术吹牛聊天群】
记得备注【csdn000】哦
项目实战
app项目,银行项目,医药项目,电商,金融
大型电商项目
全套软件测试自动化测试教学视频
300G教程资料下载【视频教程+PPT+项目源码】
全套软件测试自动化测试大厂面经
python自动化测试++全套模板+性能测试
听说关注我并三连的铁汁都已经升职加薪暴富了哦!!!!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。