项目背景:我们的项目近期增加了一个对app进行登录和浏览统计的需求,来记录客户的设备情况和浏览情况来调整业务结果,会存在比较大的多并发情况,需要用到压力测试,在这里记录一下Jmeter进行压力测试的相关步骤和遇到的问题。
准备工作
下载安装Jmeter
直接到官网: http://jmeter.apache.org/download_jmeter.cgi 进行下载安装,第一次我安装了 Source版本
在我解压之后进入到Jmeter目录的bin文件夹,可以看到jmeter文件,执行 sh jmeter 命令,发现报错了:
我发现在我的bin目录下确实没有ApacheJMeter.jar
于是我去下载了Binaries版本的,这次发现bin目录下有ApacheJMeter.jar文件
之后再次打开jmeter文件
发现已经可以成功打开了
测试用例
接下来可以找个接口试一试
已经打开了Jmeter了,接下来我们创建一个http请求来给接口发点东西,我用我们项目测试环境的登录为例子:
好,接下来到jmeter里面去弄一弄
首先,添加线程组
在http请求下加一个监听器,上面可以看到:查看结果树,用来查看结果
好了,来模拟一下接口请求,看下上面的页面里的请求,把参数和请求地址核对输入
然后看一下结果
报错了,415错误,不知道是什么错,我们来看下请求内容
发现这个地方,Content-Type在我们之前的请求中是 application/json ,但是这里显示的是 application/x-www-form-urlencoded,这肯定不行,先把这里修改一下再试试。
这里的Content-Type是在我们请求头里的内容,发现在Jmeter里面有一个HTTP信息头管理器
在信息头管理器里面修改一下链接方式
然后再运行一下
请求是成功了,但是返回报了400错误,参数的问题,我们回头把参数的形式改变一下,写成json解析的数据,回到http请求的位置,编辑Body Data
再跑一遍试试
ok,成功啦,接下来我们做一下多并发
多并发
对一个或多个接口并发请求
1.为我们的线程组设置结果树,图形结果或者聚合报告
2.线程数:这里的线程数可以设置一共有多少个线程,也可以看成多少个用户或接口访问者
3.间隔时间:我们设置为0的时候,可以看做同时访问,也就是并发请求
接下来我们修改一下线程数,可以分量级分别设置为10、100、1000、10000来模拟不同量级的请求情况
在左边我设置两个接口请求,线程数设置为10,间隔时间为0,在聚合报告里面可以看到对于每个请求:①它统计响应信息并提供请求数 ②中位数 ③平均值 ④最大 ⑤最小值 ⑥错误率 ⑦大约吞吐量(以请求数/秒为单位)和以kb/秒为单位的吞吐量等.
注意的点:因为吞吐量是会把历史记录的数据也计算在内,两个仅名称不同的取样器,其吞吐量为该两个取样器吞吐量总和的一半。所以对于不同取样器应该取不同的名字
翻看了一下Jmeter的各种功能,确实很强大也集成得比较好,可以通过设置断言来验证结果,做回归测试也很方便。学习成本不高,简单实用,是个不错的选择。