jmeter接口测试
一、JMeter简介
JMeter是Apache组织开发的基于Java的压力测试工具。具有开源免费、框架灵活、多平台支持等优势。
除了压力测试外,JMeter在接口测试方面也有广泛的应用。
Jmeter是一个非常优秀的开源性能测试工具。从功能来来讲,Jmeter不输给任何一款商业性能测试工具,
但由于Jmeter具有典型的开源工具的特点(界面不美观),因此在国内的软件测试行业中,Jmeter未被广
泛使用。另一方面,Jmeter本身没有完善的中文文档,这也在一定程度上阻碍来jmeter成为广大中国软件
测试工程师的助手。
Jmeter的优点
- (1)
Jmeter
工具的拓展性非常好。用户可以把自己的客户端用于与服务端通信的相关部分提取处理,包装为Jmeter
的Sampler
。Jmeter
用于向服务器发送请求的单元),然后使用自己的Sampler向服务器产生压力。 - (2)
Jmeter
工具是开源的。开源不仅仅意味着免费,更重要的是意味着用户可以通过开放的源代码,充分了解工具的一切行为。 - (3)与商业性能测试工具相比,
Jmeter
工具就像是一把瑞士军刀,虽然没有像商业工具那样提供庞大的“套件”,却凭借着自己的灵活性几乎无所不能二、jmeter基础概念
- Test Plan 测试计划
- Thread group 线程组
- Sampler
- Logic Controller 逻辑控制器
- Listener 监听器
二、jmeter
基础概念
- Test Plan 测试计划
用来描述一个测试,包含与本次测试相关的所有内容。
- Thread group 线程组
是在一个Test Plan
中需要使用到的线程组。通俗地说,一个Thread Group
可以看做是一个虚拟用户组,Thread Group中的每个线程都可以理解为一个虚拟用户。Thread Group中包含的线程数量在测试执行过程中是不会发生改变的。
- Sampler
是测试中向服务器发送请求、记录响应信息、记录响应时间的最小单元,Jmeter原生支持多个不同的Sampler,如Http Request Sampler、FTP Request Sampler、TCP Rwquest Sampler等,每一种不同类型的Sampler可以根据设置的参数向服务器发出不同类型的请求。
- Logic Controller 逻辑控制器
包括两类元件,一类是用于控制Test Plan
中Sampler
节点发送请求的逻辑顺序的控制器,常用的有if Controller、Switch Controller等。另一类是用来组织和控制Sampler节点的,如Transaction Controller、Throughput Controller.
- Listener 监听器
用来对测试结果数据进行处理和可视化展示的一系列元件。Summary Report、View Results in Table和View Results Tree是常用的一些Listener。
JMeter安装
- 访问JMeter官网:
https://jmeter.apache.org/download_jmeter.cgi,点击下载后解压缩,依次打开\apache-jmeter-4.0\JMeter\bin,运行jmeter.bat或者jmeterw.cmd即可。(建议在桌面创建jmeterw.cmd的快捷方式,方便快速打开)
- 苹果电脑启动方式:
打开终端,进入\apache-jmeter-4.0\JMeter\bin,执行sh jmeter即可
三、建立第一个简单的Jmeter Test Plan
测试需求如下
- (1)测试的目标网站是www.google.cn
- (2)测试仅需要访问网站首页
1、启动Jmeter
后,jmeter
会自动生成一个空的TestPlan
2、为TestPlan增加Thread Group
Thread Group是用于执行具体操作的线程组,一个Test Plan必须有一个线程组。向Test Plan添加Thread Group的方式很简单,在Test Plan上单击鼠标右键,选择Add->Thread Group
Thread Group
的主要参数包括Number of Threads
(线程数量)、Ramp-UpPeriod
(准备时长)和Loop Count
(循环次数)
演示循环次数
3.增加Http Request Sampler
Sampler
是与服务器交互的单元。一个Sampler
通常进行3部分工作:向服务器发送请求,记录服务器的响应数据和记录响应时间信息。Add->Sampler->HTTP Request
- (1)Name:名称。用于标识一个
Sampler
,建议使用一个有意义的名称。 - (2)Comments:注释。
- (3)Server Name or IP:HTTP请求发送的目标服务器名称或IP地址。
- (4)Port Number:目标服务器端口号,默认80
- (5)Protocol:向目标服务器发送
HTTP
请求时的协议,可以时http
或者https
,默认是http
- (6)Method:发送
HTTP
请求的方法,可用方法包括GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE - (7)Content encoding:内容的编码方式
- (8)Path:目标URL路径(不包括服务端地址和端口)
- (9)Use KeepAlive:当该选项被选中时,
jmeter
和目标服务器之间使用KEEP-Alive
方式进行http
通信,默认选中 - (10)Send Parameters With the Request:在请求中发送URL参数,对于带参数的URL,
Jmeter
提供了一个简单的对参数进行参数化的方式,用户可以将URL中的所有参数设置在本表中,变种的每一行是一个参数值对
4.调试Test Plan
向Test Plan
添加了Thread Group和Sampler
之后,可以通过某些手段来验证是否能够按照预期的方式执行。Jmeter
提供来多种不同的Listenser
(Listener
的作用是将Sampler
收集的信息,包括服务器的响应数据和响应时间等以汇总或可视化的方式输出),其中View Results in Table和View Results Tree是两个简单且易使用的调试装置。
View Results Tree:该Listener
以树状图的方式显示Thread Group
中的每一个线程发出的每一个请求,显示结果包含该请求本身的详细信息以及响应的详细信息
四、添加断言
在每一个http
请求下,都应该增加一层判断机制(response
的关键字),即添加结果断言。
在http请求
打开鼠标右键–>添加–>Assertions–>response Assertion
五、正则表达式
所谓正则表达式,即一个用来描述或者匹配一系列符合某个句法规则的字符串的单个字符串。
在http请求
打开鼠标右键–>添加–>post processions–>Regular Expression Extractor
Name of created variable:正则表达式名称,我们使用${名称}来进行引用;
Regular Expression:设置提取规则
. 匹配任何字符
- 重复0次或更多次
? 停止在第一个匹配成功时
Templates:表示用哪个正则表达式模板获取的值 ,默认使用$1$
,如果有多个正则表达式,则可以使用$2$
,$3$
等,表示解析到的第几个值给test
。
Match No.:-1表示全部,0随机,1第一个,2第二个
Default value:如果没有取到值,则默认使用该值,可以为空
Jmeter
中配置元件之HTTP Header Manager(Http
头文件管理器)
使用HTTP
信息头管理,可以帮助测试人员设定JMeter
发送的HTTP
请求头所包含的信息。HTTP
信息头中包含有User-Agent
、Pragma
、Referer
等属性。尽可能放在线程组一级。除非因为某些原因,测试人员希望不同的HTTP
请求使用不同的HTTP
信息头。