Jmeter接口测试实例(及简单压测等jmeter相关内容)
此文章作为工作中用到的jmeter接口测试相关内容简述,方便日后查阅参考,如有理解描述有误之处,欢迎指出。
首先Jmeter环境准备网上有很多教程,在此不多做赘述;
1.接口简述
接口可理解为从客户端到服务器的通道,客户端发送请求到服务器是通过接口实现的;
2.抓包
在无接口文档或文档描述清晰度不够,验证请求入参及相应信息时,web端可直接在浏览器使用F12查看network信息;需勾选Presever log选项;抓取页面所有的HTTP、HTTPS的请求;pc客户端或app可借助Charles、fiddle等相关抓包工具获取相应信息;
3.接口测试实例
以登录为例,输入用户名、密码,完成登录,跳转首页
测试过程中有些数据经常发生变化,如登录后需要验证状态sessionID或token,测试时就需通过关联(第二个请求需要的参数需要从第一个请求返回数据中获取)继续后续测试,不同用户或不同时间相应值也不同,也涉及
1⃣️jmeter测试计划中(以汉化版讲解)创建线程组 PS:线程组中可以创建多个请求
2⃣️线程组右键->添加->Sampler->HTTP请求(登录页) 。配置相应登录页面信息,域名或IP、端口号、协议(HTTP、HTTPS)、方法(get、post等)、路径,添加参数名及相应值(账号、密码)
PS:配置密码参数时,需按照实际项目需要,数值配置明文或秘文 如MD5加密或加盐形式,咨询相应研发人员即可
3⃣️线程组右键->添加->监听器->查看结果树(常用)
4⃣️再从线程组右键->添加->Sampler->HTTP请求(首页)。配置相应页面信息。添加参数名及相应值(sessionID或token)
此时jmeter运行就可正常验证相应接口情况
sessionID或token发生变化,或参数化执行接口自动化时,使用关联方法
5⃣️正则表达式:登录(http请求)右键->添加->后置处理器->正则表达式提取器 PS:引用名称填写SID或简明可理解的(自定义),正则表达式方式:sid=(.+?);path,模版:$1$,$2$(根据实际情况取几个),匹配数字一般填写1 PS:“要检查的相应字段”默认为主题,需改选信息头
6⃣️首页引用正则表达式:参数值 ${sid}
7⃣️添加断言,验证是否正确跳转首页。首页右键->添加->断言响应断言 可直接验证相应字符信息,如跳转页面相应的汉字“我的”等
测试多条数据登录请求或并发压测时,用参数化
8⃣️再从线程组右键->添加->配置元件->CSV Data(常用) PS:从文件自动提取登录信息,电脑创建TXT或CSV格式文件,导入或编写相应测试信息
Filename:本地文件路径
File encoding(编码):UTF-8
Variable(变量):变量名 如name,pwd
9⃣️登录(http请求)参数值引用变量${name,pwd}
不出意外的话,就可正常进行接口测试了…
复习补充:摘自网络
接口测试
一般分五个步骤:(1)添加线程组 (2)添加http请求 (3)在http请求中写入接入url、路径、请求方式和参数 (4)添加查看结果树 (5)调用接口、查看返回值
注:要查看自己的接口是什么类型的请求,上述为get请求
添加聚合报告就可以查看测试的信息
post请求
注:post请求要加上参数值
jmeter 操作数据库
操作数据库基本有四个步骤:(1)导入mysql的jdbc的jar包 (2)创建数据库的连接配置,线程组里添加配置元件-JDBC Connection Configuration (3)线程组里添加jdbc request,写sql语句 (4)添加察看结果树,点击启动按钮,就能看到执行的SQL。具体的实例如下截图所示:
简单压测:摘自网络,复习留存~
什么是压力测试
顾名思义:压力测试,就是 被测试的系统,在一定的访问压力下,看程序运行是否稳定/服务器运行是否稳定(资源占用情况)
比如: 2000个用户同时到一个购物网站购物,这些用户打开页面的速度是否会变慢,或者网站是否会奔溃
做压力测试的常用工具
做压力测试,一般要使用工具, 人工是没办法做的。 最常用的工具是LoadRunner, 但是LoadRunner毕竟是收费软件,而且使用上也比较复杂。 现在越来越多的人开始使用Jmeter来做压力测试。 免费, 而且使用上非常简单。
做压力测试的步骤如下:
1. 写脚本 或者录制脚本
2. 使用用户自定义参数
3. 场景设计
4. 使用控制器,来控制 模拟多少用户。
5. 使用监听器, 查看测试结果
本文做压力测试的例子
本文举的实例是: 在一台电脑用Jmeter模拟200个用户,同时去使用bing搜索不同的关键字, 查看页面返回的时间是否在正常范围内。
第一步: 使用CSV Data Set Config 来参数化
首先我们把测试需要用到的2个参数放在txt文件中,
新建一个data.txt文件,输入些数据, 一行有两个数据,用逗号分隔。
启动Jmeter, 先添加一个Thread Group, 然后添加一个CSV Data Set Config (Add -> Config Element -> CSV Data Set Config)
第二步:添加HTTP Request.
我们添加http 请求,发送get 到 http://cn.bing.com/search?q=博客园+小坦克
选择Thread Group 右键 (Add ->Sampler -> HTTP Request), 需要填的数据如下:
第三步: 使用Thread Group, 控制模拟多少用户
选中Thread Group
Number of Threads(users): 一个用户占一个线程, 200个线程就是模拟200个用户
Ramp-Up Period(in seconds): 设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。
Loop Count: 每个线程发送请求的次数。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。
第四步: 添加Summary Report 用来查看测试结果
选中Thread Group 右键(Add -> Listener -> Summary Report)
第五步: 运行一下
到目前为止, 脚本就全写好了, 我们来运行下, 如何看下测试的结果
使用jmeter测试高并发(与上方存在部分重复):
1、创建线程组
2、设置线程参数
3、网路请求也可添加cookie管理器 网站有登录限制的需要用到记录用户信息(非必须)
4、添加HTTP请求,为录制http连接使用
5、可以添加添加HTTP代理服务器 (添加代理需要在浏览器中设置代理)
6、选择需要得到测试的报告样式
7、开始执行查看样式
8、停止查看返回的数据和请求是否正常
用表格样式查看
9、执行错误