摘要: 说起接口性能测试,大家第一个想到的应该就是JMeter这个厉害的工具了吧,但是这个工具是什么呢,包含什么功能呢?
1. 下载JMeter包,然后直接解压值电脑某个地方:
https://jmeter.apache.org/download_jmeter.cgi
现在最新的版本是4.0了,但是我是用3.3版本为例子给大家演示一遍如何创建性能测试Project并添加测试用例的哈。
2. 如何打开JMeter呢?
方式一: 双击Jmeter解压以后bin目录下的ApacheJMeter.jar文件就可以打开了。
方式二:在cmd窗口输入jmeter,然后回车,就会自动打开应用界面:
当然,这种方式可能不太好,因为万一关掉这个cmd窗口了,这个JMeter程序就自动退出了,所以建议第一种。
如果觉得每次都去这个目录下面打开程序不方便,那就右键该jar包->发送至桌面快捷方式,然后每次都双击桌面上的快捷方式就可以了哦。
3. JMeter的工作原理是什么?
TheApache JMeter™application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions.
Apache JMeter may be used to test performance both on static and dynamic resources, Web dynamic applications.
It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types.
JMeter is not a browser, it works at protocol level. As far as web-services and remote services are concerned, JMeter looks like a browser (or rather, multiple browsers); however JMeter does not perform all the actions supported by browsers. In particular, JMeter does not execute the Javascript found in HTML pages. Nor does it render the HTML pages as a browser does (it's possible to view the response as HTML etc., but the timings are not included in any samples, and only one sample in one thread is ever displayed at a time).
就是说Jmeter工作在协议层,能够不启动应用程序,而只是在后台模拟应用程序发送的协议请求给服务器。
Jmeter应用程序本身只是一个进程,它所控制的是很多线程。
具体怎么发送请求就看你对这个API的模拟参数设置了,例如:
情景一:测试某个API在30个(或非常多个)用户同时并发请求时的情景,记录服务器各项性能指标。
情景二:测试某个API在某段时间内持续不间断被多个用户访问时的场景,记录服务器各项性能指标。
4. JMeter包含哪些基本功能块呢?
一:各种元器件:(右键Test Plan->Add,所有的菜单都有子菜单,这些都是元器件)
Thread : 用来定义你是准备用什么测试场景去测一个功能点,性能测试是在功能测试之上的,所以说性能测试的时候,是一定要有功能测试用例的哦,然后你就根据这个用例选定Thread 类型。
Config Element : 是用来给Test Plan或者Test API添加各种类型参数,header,cookie之类的。
Timer : 顾名思义,就是定时器喽。
Pre Processors : 就是在进程启用以前要做的一些预处理操作了。
Post Processors : 就是在进程结束以后要做的一些善后操作了。
Assertions : 就是一个线程的断言,程序并不能自己去判断一个现成怎样才是成功或者失败,所以需要我们去干涉一下。
Listener : 就是对Thread Group的监听。因为一个线程组有很多性能参数,每次都要把数据保存并且进行一些简单的处理,才能转换成我们肉眼可以看懂的table,chart之类的信息。这个获取响应参数并且转换过程就可以认为是Listener要做的事情了。
二: 工具条:
可以让我们快速对项目或者线程组进行一些操作,并且在最右侧的0/170部分是显示 “我们这次一共有多少个线程,现在还剩下多少个没运行“ 。
感叹号那里提示有多少个错误。
时间那一块提示我们花了多长时间来运行选择的Test Plan。
扫把那里就是清除之前的结果记录。
三 : 最上面的菜单我就不多说了,自己点吧。
四 : 工作区:
5. 如何快速创建一个测试用例呢?
1. 邮件测试计划-》添加一个线程组-》修改线程组基本设置或者直接使用默认值:
我这里设置20个用户一起并发,并且一个线程有错误的话也继续执行下一个线程。
2.添加一个HTTP协议的request请求:
然后添加Basic 信息:
上图具体什么意思,我想做过API测试的都知道,所以就不多强调了。
不过一定要注意:
Server Name or IP一定要去掉“http://“这个URL前缀哈。
Path就是去掉protocol, server name之后剩下的URL部分。
Port Number看自己测试的URL是否有来决定是否添加。
Method就是Get , Post之类的了。
具体的URL中的参数可以直接放到Path里,也可以添加到下面的Parameters区域哈。
3. 添加HTTP Request相关的元器件:
比如说Header:
比如说从csv文件中读取参数并且参数化:
比如说添加Response Assertion断言:
4. 若是针对这一个API有多个测试情形,就添加多个Thread Group哦。
JMeter每次只能打开一个Test Plan,
每个Test Plan至针对一个Test API,
一个Test API可以有多个测试情景,
一个测试情景对应一个Thread Group,
一个Thread Group可以看做一个Test Case。
一个Thread Group的测试结果可以用多个结果查看器(Listener)展示。
Listener添加越多,该Test Plan执行起来就耗时越久。
5. 对所有的Thread Group来个统计并展示统计结果:
一. Summary Report : 是最常用最直接的展示组件:
每个Case都会在这里有一行结果。
另外会加上总的Test Plan的执行结果。
我没有执行,所以这里是空的。
二. View Results Tree : 用来查看每个线程请求的具体信息 :
如果执行了,这里的结果就是每个URL测试情况,类似Postman或者在浏览器控制台看到的请求列表。
这个组件在debug的时候很必要,但是调试完了就Disable吧,太费时。。。
我还添加了别的展示组件,这个是JMeter没有的,我下载的其他插件。具体如何操作请看我的另外文章,因为这个内容太多了。
谢谢阅读哦~~