下载

jemter
https://jmeter.apache.org/download_jmeter.cgi
image.png

java (jmeter运行的时候需要先安装一下java这个软件)
https://www.oracle.com/java/technologies/downloads/#jdk17-windows
image.png

基本配置

image.png
image.png

  1. jemter.properties文件里面添加这两行代码,意思是语言选择中文,返回的结果编码格式支持中文
  2. sampleresult.default.encoding=UTF-8
  3. language=zh_CN

基本使用

添加线程组

点击【测试计划】右击【添加】———-【线程(用户)】————【线程组】
所有的http请求都是在线程组下面
image.png

添加http请求

右击【线程组】—-【添加】—-【取样器】—-【HTTP请求】
image.png
http请求里面的内容
内容编码那里写上 utf-8 可以解决中文乱码的问题
image.png

添加察看结果树

右击【线程组】—-【添加】—-【监听器】—-【察看结果树】
运行http请求之前,要先保存,并且添加一个 察看结果树,可以在里面查看到请求运行的情况
image.png
#第一次运行的时候需要先保存一下测试计划
image.png
image.png

添加信息头管理器

右击【线程组】—-【配置元件】—-【HTTP信息头管理器】
这个信息头并不是一定要添加,当api文档有要求请求头(header)里面要传递参数的时候再添加
image.png
image.png

添加请求默认值

右击【线程组】—-【添加】—-【配置元件】—-【http请求默认值】
image.png

用户定义变量

在测试计划里面可以定义变量,定义好变量之后,应用的方式为 ${变量名}
image.png
定义好之后引用变量
image.png

添加调试取样器

右击【线程组】—-【添加】—-【取样器】—-【Debug Sampler】(调试取样器)
用来查看提取到的变量的值
#调试取样器必须放在最下面,不然获取不到变量,可以通过查看结果树——-reponse(响应)——response body(响应体)里面查看到设置的变量
image.png
image.png

变量提取

json提取器

  1. #获取返回的json串
  2. postman中用 var jsondata=pm.response.json(); 来进行表示
  3. jmeter中用 $ 来表示

右击【http请求】—-【添加】—-【后置处理器】—-【json提取器】
一个json提取器只能提取一个变量,并且要在某个请求下面
image.png
1代表第一个
image.png
可以在查看结果树中使用【json path tester】,来看一下json路径是否能提取到变量值
image.png

正则表达式提取器

(.+?)来提取中间的内容

正则表达式网站
https://www.runoob.com/regexp/regexp-flags.html
前置条件 (.+?) 后置条件

  1. 例子:
  2. 文本:1234567890-1234567890
  3. 正则表达式:67(.+?)12
  4. 匹配到内容:890-
  5. 前置条件(890-)后置条件

image.png

右击【http请求】—-【添加】—-【后置处理器】—-【正则表达式提取器】
image.png
image.png

函数助手

点击中间的函数助手

生成随机数字

image.png

生成现在的时间戳

生成现在时间
image.png
明天此时的时间
image.png

MD5加密

image.png

生成随机的字符串

image.png

断言

json断言

右击【http请求】—-【添加】—-【断言】—-【json断言】

image.png
在【Expected Value】里面写,json路径那个字段的期望值
image.png

响应断言

右击【http请求】—-【添加】—-【断言】—-【响应断言】
image.png

状态码断言

对接口的响应状态码进行断言
image.png
image.png

响应文本断言

对接口返回的数据(json里面的内容)进行断言
当接口返回的结果中包含我的预期值时,断言成功,反之失败。
image.png

断言持续时间

一般一个接口它的加载时间不允许超过500毫秒(0.5秒)
右击【http请求】—-【添加】—-【断言】—-【断言持续时间】
image.png
image.png

接口练习

新峰商城
http://49.233.108.117:28019/swagger-ui.html#/

  1. 完成新峰商城中 用户注册,用户登录,获取用户信息,获取首页数据,商品详情接口,购物车列表接口,添加商品到购物车接口,添加地址接口,我的收获地址列表接口,生成订单接口,订单列表接口,确认收货接口。
  2. 观察接口之间的关系,加密使用函数助手加密,使用json提取器或者正则表达式提取器传参的方式传递参数,给接口都添加一个断言(断言随意,可以是状态码,也可以是某个主要字段,或者某个文本内容)。

1.使用随机生成的手机号注册
2.md5加密使用函数助手的加密公式
3.提取商品首页中的商品id,在下游的接口中进行使用
4.提取购物车id,在下游接口中引用
5.提取收货地址id,在下游接口中引用
6.提取订单编号,在下游接口中引用

csv参数化

新建主题有很多的业务场景,我们可以直接把测试的数据转为csv文件,然后使用csv参数化,批量执行这些测试的数据。(可以减少重复的工作量,节省人力成本)
jmeter  基本使用 - 图37

accesstoken title tab content
bcd83625-0292-41f9-b720-255596c68336 1234567890 ask qwertyuiop
b675e4c6-8dcd-4995-8960-c 1234567890 ask qwertyuiop
1234567890 ask qwertyuiop
b675e4c6-8dcd-4995-8960-c200aa54ffe2 ask qwertyuiop
b675e4c6-8dcd-4995-8960-c200aa54ffe2 123456789 ask qwertyuiop
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 qwertyuiop
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 kas qwertyuiop
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask qwertyuiop

添加csv数据文件设置

右击【线程组】—-【添加】—-【配置元件】—-【CSV Data Set Config】
image.png
变量名称:用记事本打开csv文件,然后把首行变量名复制过来就行
image.png
image.png
循环次数:请求次数根据csv文件中有多少条数据,就循环多少次
image.png
新建 XLS 工作表.csv

练习用户登录接口
jmeter  基本使用 - 图42

jdbc连接数据库

jdbc就相当于是一个插件,他是用来连接数据库的,jmeter安装好这个插件之后,就可以去连接数据库,获取数据库里面的数据

下载jdbc插件

下载的官方地址
https://dev.mysql.com/downloads/connector/j/

image.png
解压压缩包,找到其中的jar包
image.png
把下载的jar包放到lib目录
image.png
然后打开jmeter就可以了

配置jdbc连接

配置jdbc连接元件
选中【线程组】—-【添加】—-【配置元件】—-【JDBC Connection Configuration】
image.png
image.png

  • Database URL: jdbc:mysql://1.116.112.231:3306/fanmao
  • 1.116.112.231 数据库的ip
  • 3306 数据库的端口号
  • fanmao 数据库名
  • JDBC Driver class: com.mysql.jdbc.Driver(连接mysql数据库 下拉选,第一个就是)
  • Username:fanmao 用户名
  • Password:111111 密码

最上面还有一个连接名,连接名随意取,但是在JDBC Request中要使用这个连接名
image.png

添加jdbc请求

右击【线程组】—-【添加】—-【取样器 】—-【JDBC Request】
image.png

image.png
写好sql语句之后
可以添加察看结果树,然后查看sql语句的运行结果
image.png
连接新峰商城的后台数据库
查询一下这张用户表里面的内容,表名是tb_newbee_mall_user
image.png

jdbc上下游传参

image.png
添加一个调试取样器可以查看提取到的值
image.png
当select返回的结果有多条数据时,可以添加对应的下标来提取对应的值;
每个变量后面都有一个后缀
变量名_1 代表第1行的值
变量名_2 代表第2行的值
image.png

jdbc数据库校验

image.png
要注意接口从上往下顺序执行,先进行
用户注册生成用户名,再在下面的
jdbc request接口进行引用用户名
image.png
结果树中jdbc request查询到的数据
image.png

作业

  1. 编辑主题接口,把各种场景的数据,做一下csv参数化
  2. 编辑主题

jmeter  基本使用 - 图59

accesstoken title tab content id
bcd83625-0292-41f9-b720-255596c68336 1234567890 ask qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c 1234567890 ask qwertyuiop 61dbda21d00e6a36f3457fe7
1234567890 ask qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 ask qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 123456789 ask qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 kas qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask qwertyuiop 61dbda21d00e6a36f3457fe7
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask qwertyuiop
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask qwertyuiop 1234567890asdfgh
b675e4c6-8dcd-4995-8960-c200aa54ffe2 1234567890 ask qwertyuiop 61daa081d00e6a36f3457333

企业微信

  • 企业微信会议管理
  • 获取access_token

请求方式:GET(HTTPS
请求URL:https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
注:此处标注大写的单词ID和SECRET,为需要替换的变量,根据实际获取值更新。其它接口也采用相同的标注,不再说明。
若企业安装了第三方应用,该服务商可通过“获取企业access_token”获得此调用凭证。
参数说明:

参数 必须 说明
corpid wwfa4857134c5d5eec
corpsecret mLGKGon5pX0pu4LvEbqxD-qh_AFFlBFNt7CI55cRI_0

完成:添加会议室,查询会议室,编辑会议室,删除会议室。

https://work.weixin.qq.com/api/doc/90000/90135/93619

  • 预定会议室(选做)

https://work.weixin.qq.com/api/doc/90000/90135/93620
要求:使用请求默认值,提取器(json,正则),断言(响应,json),信息头管理器,调试取样器,结果树。

性能测试一下自己搭建的cnode社区
新建主题接口
使用不同的token值来进行创建主题

测试报告

测试场景 线程数 平均响应时间/秒 吞吐量/sec 请求失败率
新建主题接口 50
100
150

导出服务器token值,会导出到/tmp目录下,下载到桌面使用
mongoexport -d node_club_dev -c users -f accessToken —csv -o /tmp/testusers.csv