下载
jemter
https://jmeter.apache.org/download_jmeter.cgi
java (jmeter运行的时候需要先安装一下java这个软件)
https://www.oracle.com/java/technologies/downloads/#jdk17-windows
基本配置
在jemter.properties文件里面添加这两行代码,意思是语言选择中文,返回的结果编码格式支持中文
sampleresult.default.encoding=UTF-8
language=zh_CN
基本使用
添加线程组
点击【测试计划】右击【添加】———-【线程(用户)】————【线程组】
所有的http请求都是在线程组下面
添加http请求
右击【线程组】—-【添加】—-【取样器】—-【HTTP请求】
http请求里面的内容
内容编码那里写上 utf-8 可以解决中文乱码的问题
添加察看结果树
右击【线程组】—-【添加】—-【监听器】—-【察看结果树】
运行http请求之前,要先保存,并且添加一个 察看结果树,可以在里面查看到请求运行的情况
#第一次运行的时候需要先保存一下测试计划
添加信息头管理器
右击【线程组】—-【配置元件】—-【HTTP信息头管理器】
这个信息头并不是一定要添加,当api文档有要求请求头(header)里面要传递参数的时候再添加
添加请求默认值
右击【线程组】—-【添加】—-【配置元件】—-【http请求默认值】
用户定义变量
在测试计划里面可以定义变量,定义好变量之后,应用的方式为 ${变量名}
定义好之后引用变量
添加调试取样器
右击【线程组】—-【添加】—-【取样器】—-【Debug Sampler】(调试取样器)
用来查看提取到的变量的值
#调试取样器必须放在最下面,不然获取不到变量,可以通过查看结果树——-reponse(响应)——response body(响应体)里面查看到设置的变量
变量提取
json提取器
#获取返回的json串
在postman中用 var jsondata=pm.response.json(); 来进行表示
在jmeter中用 $ 来表示
右击【http请求】—-【添加】—-【后置处理器】—-【json提取器】
一个json提取器只能提取一个变量,并且要在某个请求下面
1代表第一个
可以在查看结果树中使用【json path tester】,来看一下json路径是否能提取到变量值
正则表达式提取器
(.+?)来提取中间的内容
正则表达式网站
https://www.runoob.com/regexp/regexp-flags.html
前置条件 (.+?) 后置条件
例子:
文本:1234567890-1234567890
正则表达式:67(.+?)12
匹配到内容:890-
前置条件(890-)后置条件
右击【http请求】—-【添加】—-【后置处理器】—-【正则表达式提取器】
函数助手
生成随机数字
生成现在的时间戳
MD5加密
生成随机的字符串
断言
json断言
右击【http请求】—-【添加】—-【断言】—-【json断言】
在【Expected Value】里面写,json路径那个字段的期望值
响应断言
右击【http请求】—-【添加】—-【断言】—-【响应断言】
状态码断言
响应文本断言
对接口返回的数据(json里面的内容)进行断言
当接口返回的结果中包含我的预期值时,断言成功,反之失败。
断言持续时间
一般一个接口它的加载时间不允许超过500毫秒(0.5秒)
右击【http请求】—-【添加】—-【断言】—-【断言持续时间】
接口练习
新峰商城
http://49.233.108.117:28019/swagger-ui.html#/
- 完成新峰商城中 用户注册,用户登录,获取用户信息,获取首页数据,商品详情接口,购物车列表接口,添加商品到购物车接口,添加地址接口,我的收获地址列表接口,生成订单接口,订单列表接口,确认收货接口。
- 观察接口之间的关系,加密使用函数助手加密,使用json提取器或者正则表达式提取器传参的方式传递参数,给接口都添加一个断言(断言随意,可以是状态码,也可以是某个主要字段,或者某个文本内容)。
1.使用随机生成的手机号注册
2.md5加密使用函数助手的加密公式
3.提取商品首页中的商品id,在下游的接口中进行使用
4.提取购物车id,在下游接口中引用
5.提取收货地址id,在下游接口中引用
6.提取订单编号,在下游接口中引用
csv参数化
新建主题有很多的业务场景,我们可以直接把测试的数据转为csv文件,然后使用csv参数化,批量执行这些测试的数据。(可以减少重复的工作量,节省人力成本)
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】
变量名称:用记事本打开csv文件,然后把首行变量名复制过来就行
循环次数:请求次数根据csv文件中有多少条数据,就循环多少次
新建 XLS 工作表.csv
练习用户登录接口
jdbc连接数据库
jdbc就相当于是一个插件,他是用来连接数据库的,jmeter安装好这个插件之后,就可以去连接数据库,获取数据库里面的数据
下载jdbc插件
下载的官方地址
https://dev.mysql.com/downloads/connector/j/
解压压缩包,找到其中的jar包
把下载的jar包放到lib目录
然后打开jmeter就可以了
配置jdbc连接
配置jdbc连接元件
选中【线程组】—-【添加】—-【配置元件】—-【JDBC Connection Configuration】
- 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中要使用这个连接名
添加jdbc请求
右击【线程组】—-【添加】—-【取样器 】—-【JDBC Request】
写好sql语句之后
可以添加察看结果树,然后查看sql语句的运行结果
连接新峰商城的后台数据库
查询一下这张用户表里面的内容,表名是tb_newbee_mall_user
jdbc上下游传参
添加一个调试取样器可以查看提取到的值
当select返回的结果有多条数据时,可以添加对应的下标来提取对应的值;
每个变量后面都有一个后缀
变量名_1 代表第1行的值
变量名_2 代表第2行的值
jdbc数据库校验
要注意接口从上往下顺序执行,先进行
用户注册生成用户名,再在下面的
jdbc request接口进行引用用户名
结果树中jdbc request查询到的数据
作业
- 编辑主题接口,把各种场景的数据,做一下csv参数化
- 编辑主题
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