JMeter接口测试

在这里插入图片描述

Meter实现Web接口测试,大体可以分为四个步骤

1.添加线程组
测试计划-》Threads(Users)-》线程组
在这里插入图片描述
线程组页面,主要有三个参数需要设置在这里插入图片描述

使用补充:

1.1 当线程组内的HTTP请求是发向同一个服务器时,可以在线程组内添加配置元件-【HTTP请求默认值】,后续就不需要在每个HTTP请求中都维护服务器这一项信息,如:
在这里插入图片描述
1.2 当线程组内HTTP请求存在API有某些访问权限的设置,或是需要保留某些状态,也就是需要让服务器知道每次访问的用户是谁,于是在发送请求的时候需要带上Cookie。我们可以利用JMeter的配置元件-【HTTP Cookie 管理器】,管理Test Plan运行时的所有Cookie。HTTP Cookie Manager可以自动储存服务器发送给客户端的所有Cookie,并在发送请求时附加上合适的Cookie,同时,也可以在HTTP Cookie Manager中手工添加一些Cookie,这些被手工添加的Cookie会在发送请求时被自动附加到请求,所以在线程组内添加一个HTTP Cookie 管理器,后续管许Cookie的问题就可以一劳永逸了,如:在这里插入图片描述
2.添加HTTP请求
线程组-》添加-》Sampler-》HTTP请求在这里插入图片描述
2.1 HTTP请求设置说明:在这里插入图片描述
a.名称/注释,建议维护成一眼就可以看出请求意图的相关信息

b.Web服务器:

协议,向目标服务器发送请求时的协议,http/https,不区分大小写,默认http

服务器名称或IP,服务器名称或IP地址

端口号,目标服务器的端口号,默认80,可不填

c.HTTP请求:

方法,是指这个接口的Request Method,JMeter发送Http请求支持很多方法,如:GET、POST、HEAD、PUT、OPTIONS、TRACE、DELETE等。

路径,URL地址,不包含服务器地址和端口
  Content encoding ,内容的编码方式,默认值为iso8859;注意Content encoding并不能影响返回结果,当出现乱码的情况,一般是Content encoding没有设置,常用UTF-8
  自动重定向, 如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 会自动重定向到新的页面,但是Jmeter是不记录重定向的过程内容。只能用于get和head方法,如果是post或者put请求则取样器不会发送。
  跟随重定向, 默认选中,当响应code是3xx时,自动跳转到目标地址。与自动重定向不同,Jmeter会记录重定向过程中的所有请求响应,在查看结果树时可以看到服务器返回的内容,如有多个跳转则多个请求都会被记录下来,此为默认选项。 自动重定向和跟随重定向的区别只在于是否记录多个跳转的请求上
  Use keep Alive,当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
  Use multipart/from-data for POST,当发送HTTP POST 请求时,使用Use multipart/from-data方法或者application/x-www-form-urlencoded方法发送,默认不选中。 当入参数需要上传文件的时候,需要勾选。
  Browser-compatible headers,当勾选multipart/form-data时,勾选此项会截掉http请求头中的Content-Type和Content-Transfer-Encoding,而只发送Content-Disposition部分。

d.同请求一起发送参数:

同请求一起发送参数,JMeter提供了三种方式,Parameters、Body Data以及Files Upload,具体使用哪一个,主要取决于在HTTP信息头管理器中Content-Type设置的什么类型,详情可以参考另一随笔,https://www.cnblogs.com/justyoutiao/p/11385964.html

##这里强调一下两个问题:

A. 实践过程中遇到的一个问题,依据HTTP信息头管理器中设置的Content-Type类型在表格中传入Parameters格式的参数,返回响应某个Parameter…is not present,实际查看log发现并未传参,仿效postman,将参数添加到路径中,然后发送请求,发现传参成功,正常响应。于是get了一种新的传参格式——将参数添加到请求的路径中(询问开发大佬是因为每个接口实现者方式不同,具体不是特别懂啦~)

B. 上传文件传参,实现模式往往是异步的,一个线程下来可能实际结果还没有出来~。当发现实际响应码正确,但是实际结果与预期不符合的时候,可以在发送对应请求前,sleep一段时间。实现方式就是在该请求下,添加一个固定定时器,这样JMeter在发送该请求前,会先等待定时器设置的时间。

Advanced(加强版设置)略过不说

2.2 参数化传参

一般来说,我们测试过程中不一定能保证数据的稳定或需要构造多个不同的参数进行处理 ,很多时候需要考虑做参数化的处理,一定程度上实现动态构造。简单说一下JMeter支持的四种参数化传参方式:

a.函数助手

调用形式:${__function() },如:

打开函数助手对话框,选择函数__Random(这个函数是随机函数,生成指定范围的随机数),用这个函数随机生成电话号码来举例在这里插入图片描述
HTTP请求中,将函数助手中生成的函数字符串,当作参数的value输入表单在这里插入图片描述
查看请求,验证函数传参成功在这里插入图片描述
b.用户定义的变量

用户定义的变量,可以很好的参数化请求中重复出现且相同的变量,如服务器IP地址

线程组-》添加-》配置元件-》用户定义的变量在这里插入图片描述
后续在HTTP请求表单中,用${URL}当作参数的value输入就可以实现该变量的参数化了

c.读取本地化文件进行参数化

线程组-》添加-〉配置元件-》CSV Data Set Config在这里插入图片描述
在这里插入图片描述
在请求中,直接使用${key}代替对应的参数,即可实现参数化传参

d.提取响应中序列化的json信息

JMeter支持 正则表达式提取/json提取器提取 response返回的JSON格式数据

3.添加响应断言
HTTP请求-〉添加-》断言-〉响应断言
  断言很好的解决了人眼对比对接口返回的数据问题。在这里插入图片描述
Jmeter提供了丰富的断言功能,可以用于检查响应数据与预期是否一致,可以用作接口自动化测试的结果校验。对于一次请求,如果通过的话,断言结果中只会打印一行请求的名称;如果失败,则除了请求的名称外,还会有一行失败的原因(不同类型的断言,结果不同),也可以帮助我们定位返回值错误的内容。此外,一个Sampler可以添加多个断言,根据你的检查需求来添加相应的断言,当Sampler下所有的断言都通过了,那么才算request成功。
  常用的断言方式有:
a.响应断言-响应文本,检查校验响应中的文本(关键词)

b.不仅仅用响应断言来匹配预期结果 。 其实用另外接口的响应 也可以判断上一个接口的逻辑是否正确
c. 使用JDBC Request进行数据库操作,校验SQL执行结果跟响应返回数据是否一致,判断结果是否正确(后续补充详细内容)

3.1 实践使用记录:
  a. 响应断言-响应文本,当模式匹配规则选择的是-包括&响应文本包含中文时,响应文本就必须是纯文本,不可以有其他的东西在这里插入图片描述
4.添加监听器
线程组-》添加-〉监听器-》察看结果树
在这里插入图片描述
启动测试,就可以在结果树中,看见本线程all请求的结果了。

感受体会
  
1.接口测试本质上还是数据的表演【数据】
2.JMeter接口测试过程大致划分为:线程组-》HTTP请求-》断言-》结果分析,难点应该在http请求参数的添加,还有断言的选择,即如何传入参数,以及如何根据响应来判断结果的正确性,即实际结果与预期结果的比对

最后我也整理了一些软件测试学习资料,对于自学软件测试的小伙伴来说应该会很有帮助,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这份资料也已经帮助了很多的软件测试的学习者,希望也能帮助到你。需要公众号:软件测试小dao 自取。软件测试,与你同行!陪你成为优秀的测试工程师!

既然都看到这里啦,请你帮个忙:

1、点赞,让更多小伙伴看到;

2、关注我,持续更新测试干货。

干货分享

自动化测试6年后,终于有了属于我自己的团队···

如果你35岁恐慌了,那你真的该反思自己了···

活久见!40W年薪低?35岁测试工程师惨遭女孩嫌弃!估计是被鸡汤洗脑了!

迷茫了3年:做完这个测试项目,我终于决定辞职···
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值