文档介绍:JMeter接口压力测试ApacheJmeter简介Jmeter是Apache组织开发的基于Java的压力测试工具,是一个开源软件,它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能,可以使用它做性能的图形分析或大并发负载测试服务器/脚本/对象。我们为什么使用Jmeter 1、开源免费,基于Java编写,可集成到其他系统、可拓展各个功能插件 2、支持接口测试,压力测试等多种功能,支持录制回放,入门简单 3、相较于其他编写框架等其他开源工具,有较为完善的UI界面,便于接口调试 4、多平台支持,可再Linux,Windows,Mac上运行一、接口测试什么是接口测试接口测试的原理是,通过测试程序或工具,模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理,然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。用jmeter做接口测试过程一般分五个步骤:(1)添加线程组(2)添加http请求(3)在http请求中写入接入url、路径、请求方式和参数(4)添加查看结果树(5)调用接口、查看返回值(1)打开Jmeter安装包,进入\bin中,找到"",点击打开即可。在下图打开的Jmeter页面中,右键“测试计划”->“添加”->“Threads(Users)”->“线程组”,建立线程组。(2)右键“线程组”->“添加”->“Sample”->“HTTP请求”(3)输入“服务器名称或IP”,对应的端口号,选择请求方式,输入对应的路径,添加参数及值。(4)右键“线程组”->“添加”->“监听器”->“察看结果树”,添加“察看结果树”,以察看运行后的结果,如图所示。(5)调用接口、查看返回值 Jmeter之get请求 Jmeter之post请求 Jmeter之断言运行后有响应的数据返回,然后通过添加响应断言来判断我们的运行结果是否正确,在被测接口对应的“HTTP请求”上,添加“响应断言” Jmeter之参数化 1、利用函数助手获取参数值选项->函数助手对话框__CSVRead, ${__CSVRead(,)}第一个参数是文件名(包含路径),第二个参数是文件中的列(列数从0开始); __Random, _Random函数是从某数据段随机读取数据替换参数,当需要添加多条数据记录且某些字段需要唯一性时使用,比如注册接口,用户名唯一 2、利用配置元件(CSVDataSetConfig) 选中线程组,点击右键,添加-配置元件-CSVDataSetConfig FileName:csv文件的名称及路径 FileEncoding:文件编码----默认为空 VaribleNames:定义文本文件中的参数名,定义后可当变量的方式来引用 Delimiter:分隔符---每个参数之间的分隔符号,一般默认使用逗号, AllowQuoateddata:是否允许数据引用数据----默认为False RecycleonEOF:是否循环读取参数文件内容----设置为True后,允许循环取值 StopThreadonEOF:文件结束后是否停止线程------默认为false,如果设置为True则会影响文件结束循环 SharingMode:设置线程是否共享---默认设置为Allthreads 3、用户自定义变量“选择需要添加的脚本”->“右键”->“配置文件”->“用户定义的变量” Jmeter之关联当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理,比如修改用户密码接口,就需要用到登录用户接口的token值,用Jmeter做关联如下: “选择需要添加的脚本”->“右键”->“后置处理器”->“正则表达式提取器”引用名称:变量名称,名称只能是一个,引用方法:${access_token} 正则表达式:数据提取器,一般简单的通用语法就是:左边界(.+?)右边界,左右边界就是为了能准确定位到想匹配的内容,如上面图的“access_token”:“(.+?)”,(.+?)是替换了想要提取的内容模板:对应正则表达式提取器类型,样式为:$n$,若模板为:$1$,则对应正则表达式中的第一个(.+?)所匹配的内容匹配数字:0代表随机取值,1代表所有值缺省值:如果匹配不到字符串,那默认给一个值让它取。正则表达式实例二、压力测试什么是压力测试压力测试是指模拟巨大的工作负荷来测试应用程序在峰值情况下如何执行操作。例如模拟实际软硬件环境,在超出用户常规负荷下,长时间运行测试工具来测试被测系统的可靠性,和测试被测系统的响应时间,目的是在极限负载下识别程序的弱点。压力测试前的准备 1、压力测试分两种场景:一种是单场景,压一个接口的;第二种是混合场景,多个有关联的接口 2、压测时间,一