一:做性能测试注意事项
(1) 不要加断言
(2)尽量不使用beanshell元件
(3)运行方式:尽量使用非GUI形式
(4)所有的监听器都要禁用,不要使用无线网
二:soap协议脚本(参考博主:https://www.cnblogs.com/stone9159/p/8078842.html)
soap协议本身就是http+xml协议,主要是将xml的协议的格式写在jmeter中的boby data中,soap请求的内容主要写在body data中,也会用到http请求头,主要用于存储Content-Type或则SOAPAction,目前看到的主要有需要SOAPAction和不需要SOAPAction的两种格式
情况一:Content-Type=text/xml;charset=UTF-8,这种需要SOAPAction值 (下图是通过soapui查看的结果)
1.创建http请求
2.添加http请求
情况二:Content-Type: application/soap+xml;charset=UTF-8;这种不需要SOAPAction,但是需要在body data 的header中加<wsa:Action>
1.添加http头
2.添加http请求(红框处必须加,不加会报错,来自soapui请求的raw)
三:jdbc脚本编写
1. 编写脚本之前的准备:
(1)jdbc是java调用数据库的语言
(2)通过这个数据可以直接执行sql脚本
(3)需要引用对应的jar包,选择jar包的版本注意施行;jar包的版本一定要大于数据库的版本,数据库一般是5.7;jar包对应的地址是https://mvnrepository.com/search?q=connector
也可以通过百度网盘获取:链接:https://pan.baidu.com/s/1hAwVTw-2Qv_dHsiR_SELEw
提取码:1z12(4)将获取的jar包放在jmeter的lib文件夹中,然后进行重启jmeter,有了这个jar包有jdbc这个配置元件并且可以发送jdbc请求,如果没有这个jar包不可以发送jdbc请求
2. 编写jdbc请求的脚本
2.1 线程组先添加JDBC Connection Configuration
(1)连接池一定要填写并且后面的jdbc的请求要跟这个保持一致
(2)填写数据库的ip port dbname user password
(3)database url针对不同的数据库类型格式有不用的写法
mysql写法:
jdbc:mysql://host[;port]/dbname
driverclass驱动:com.mysql.jdbc.Driver(只适用于mysql5的版本,mysql8的版本使用com.mysql.cj.jdbc.Driver;驱动那边选择编辑按钮手动输入这个)
postgreSQL写法:
jdbc;postgresql:dbnamel
driverclass驱动:org.postgresql.Driver
2.2 线程组添加jdbc request请求
(1)连接池的名称一定要跟jdbc connection configuration中保持一致
(2)jmeter中写sql可以不写分号,一个取样器只能写一个sql,写多个sql就使用多个取样器
(3)query Type:select statument(select 查询语句)/update statusment(修改语句)/prepared select statumengt/prepared update statument(待参数的可以使用占位符?的查询语句)
3. jdbc的一些场景应用
3.1将jdbc查询的数据导出成csv文件或者txt文件
(1) 新建一个线程组--添加jdbc connetion configuration--添加jdbc request请求
(2)这个线程组添加监听器--保存到响应文件
(3)这个时候到jmeter的bin目录下会找到txt的文件,就是sql的响应结果,但是这个响应结果循环次数不管设置了多少条,我每次去执行的时候都是覆盖的,所以如果需要得到一些不同的测试数据这个方法就不可行
(4)mysql中查询到的数据,保存到响应文件可以直接保存位csv文件么??默认情况下,保存文件用\t进行列分割,所以保存文件,txt,xlsx,不能为csv,因为csv文件使用逗号进行分割的。
3.2 将jdbc查询的数据导入到新建的sqlite中进行测试数据的叠加,请求需要这份测试数据直接从sqlite表中进行读取
(1)使用sqlite数据的前置准备
sqlite是一个内存关系型数据库,不需要安装
(2)下载sqlite jar包,放在jmeter的lib文件夹下,下载的地址是:https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc/3.31.1或者网盘自取:https://pan.baidu.com/s/1hAwVTw-2Qv_dHsiR_SELEw
提取码:1z12(3)需要重启jmeter
(4) 新建一个jdbc connetion configuration 用来配置一些sqlite的一些配置信息、
(5)创建一个jdbc request的请求
先创建一个创建表的请求:
再将mysql查询出来的数据写入到sqlite中,mysql查询出来的数据会有很多字段,将这个需要写入到sqlite表中的字段给提取出来可以添加一个取样器看这些mysql查询出来的数据
这些数据写入到sqlite就需要使用循环控制器进行写入
因为mysql查询出来的提取的值的变量都是类似tokens_1,tokens_2.....这种格式的所以引用个技术器
再新建一个插入数据的jdbc request的请求,至于占位符的数据使用V函数进行拼接
执行以后生成的test01_datafile.db,就可以使用navicat进行打开看是否数据已经写入
四:dubbo脚本(websocket,mq,dubbo)
1. websocket
1.1基本概念
是基于tcp的网络,是全双工协议,http只能是客户端向服务端发送请求,tcp:既可以是客户端向服务端发送请求,也可以是服务端向客户端发送请求
1.2 jmeter中编写websocket脚本
(1)准备工作:jmeter中要引入差劲,jmeter本身的取样器中不支持websocket协议
插件管理:jmeter-plugins-manager-1.6.jar,放在jmter的lib\ext文件夹中,这个文件夹中放第三方开发的jar包https://jmeter-plugins.org/install/Install/;也可以通过网盘自取:https://pan.baidu.com/s/1hAwVTw-2Qv_dHsiR_SELEw
提取码:1z12,
(2)插件放置好以后需要重启jmeter在jmeter的菜单---选项--plugin manager 的入口,点击这个插件就会出现插件管理界面在available plugins中搜索websocket,勾选 websocket samplers by peter doornbosch,点击右下角apply changes and restart jmeter
(3)安装完成以后取样器就多了一些选项:
websocket close 关闭websocket
websocket open connection 建立一个websocket
websocket ping/pong 测试websocket协议
websocket read sampler :客户端从服务器端口获取
websocket write sampler :客户端向服务器端发请求(WebSocket Single Write Sampler
connect:user exist connection 使用已经建立连接
setup new connection 新建一个连接
Data:数据: text 文本 binary 二进制 request data)
websocket request-response sampler:同时具备读写功能
2.mq
消息队列的总称,kfaka,rabaitmq,MQTT,队列是:先进先出;先发布然后订阅;jmeter中进行插件管理中下载MQ并下载安装,MQTT Protocol Support 如果下载失败,左边有红色, 再次点击 apply changes and restat jmeter
3. dubbo(https://www.cnblogs.com/shaohuang/p/17508060.html)
微服务框架:假设有三个server需要部署先要将这个部署信信,以及里面的一些方法放到zookeeper注册中心,这个注册信息中的数据会被monitor管理进行管控,当消费者需要某个方法的时候会去zookeeper中取放法需要先经过monitor进行管理看是否有这个空闲的放法,这个整个体系就是dubbo;zookeeper默认端口是:2181
jmeter测试dubbo接口:下载dubbo插件并且放在lib/ext文件夹下面https://github.com/thubbo/jmeter-plugins-for-apache-dubbo/releases,新建一个dubbo的取样器