如何利用JMeter测试带有Token参数的POST接口

JMeter有一个很强大的功能就是可以用来做接口测试。

        接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。

      我们从接口测试中涉及到的一些基础知识讲起。

Java狭义接口与API的区别是什么?

        首先我想解释一下接口,因为原来这里让我傻傻搞不懂。Java里的Interface是接口,API也是接口,但是在接口测试中我们测试的是哪一种?他们有没有什么区别?其实,他们是有区别的。

我去找寻了一下我认为写得比较好的标准解释:

Java接口是狭义的接口,是借由Interface 定义的结构,接口中只对方法做定义,不做实现。具体实现由最终实现接口的类提供。Java 是强类型的语言, interface 作为一种类型,可以用于声明变量,以接口类型声明的变量,我们只关心它实现了接口声明的方法,并不关心实际上引用的是哪个类的对象。编码完成之后,通过传入接口的不同实现类的对象,从而在不改变调用方代码的情况向下改变程序的功能,实现多态。

而API(Application Programming Interfac编程接口):是应用程序和模块之间相互沟通的方式。提供某些功能的应用程序或者模块为了与其它程序相互沟通,对外公开了某些功能的调用方式方法,这一套方式方法就是 API 。

通俗的说,就是前者是编程语言中使用的,没有具体实现的抽象的定义,后者其实是一个已经包含了逻辑的可执行的程序,供外部使用的。

        而我们在接口测试中测试的对象就是所谓的API。 

那什么是Token呢?

在我看来,Token就是类似暗号,令牌的一个东西,它是一个很长的一段无序的用来验证身份的字符串。在测试接口的时候,接口文档中首先会给出一个获取Token的地址,这往往是一个get请求,需要获取相应的密钥传入get请求的url中,这个get请求的响应数据中就包含Token,并且每次获取到的token是不相同的,让我们看看他到底是什么东西。

整个Token包括tokenType和value。tokenType是一个固定为bearer的数据,value是一个无序字符串。

注意:tokenType固定是‘bearer’,但是并不代表世界上每一个Token的tokenType都是这个值。这是因为每个人采取的Token生成算法不同,其实有其他的Token生成算法,本章末尾给出Token其他算法的连接。

GET/POST请求的区别深度分析,区别真的那么简单吗?

GET/POST的请求的差别我想每个学计算机的同学都知道,但是大家一般都只知道GET请求把参数包含在URL中,POST通过Request body传递参数。但是我们这里是深度分析,怎么能说这种答案呢?

GET/POST请求有一个重大区别:GET产生一个TCP数据包,POST产生两个TCP数据包。具体的这里不做讲述,文章末会给一个很有趣的文章连接。

那么怎么利用JMeter去测试请求参数中有带有token的post请求呢?

正是因为value在每次获取的时候都是一个无序的字符串,而Token这个是一个随时变化的变量,并且这个变量即将做为将要测试的接口的请求参数,怎么办呢?

因此,我们需要实时记录token的值,将其设置为变量给Token取变量名(比如A,B等等,方便调用),实时的传入POST接口的参数中。

怎么实时获取变量参数呢?

我们需要用到正则表达式提取器或者josn提取器(因为返回的josn数据),也许还有其它方法。我这里用的是Josn Extractor,类似这样。

正则表达式与josn数据的提取规则这里不做讲述,可以百度学习一下。

但是,Token的值写在POST请求的什么位置呢?Request body中吗?不,Token属于POST请求的头信息,是需要在HTTP请求下添加头信息管理器的,类似这样。

而Debug Sampler 可以配合察看结果树这个监听器,可以很直观的判断Token的提取成功与否。(也可以没有)

至于POST请求的请求参数则写在Body Data里面(是Josn数据),类似这样。

Josn数据的格式我想也不必多说。大概流程就是这样,有疑问的朋友欢迎留言。

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

 

JMeter是一种功能强大的性能测试工具,能够用于模拟并测试各种网络协议的性能。当我们需要对带有token验证的接口进行测试时,可以采取以下步骤: 1. 创建测试计划:在JMeter中创建一个新的测试计划,并添一个线程组。 2. 添HTTP请求:在线程组下添一个HTTP请求,设置请求的URL、请求方式等信息。同时,我们需要在请求的Header中添一个字段用来存放token信息。 3. 添HTTP Header管理器:在HTTP请求下添一个HTTP Header管理器,用于设置token字段的值。在管理器中,我们可以添Header名称和值,将token值设置为请求所需的验证信息。 4. 添监听器:为了实时监控测试结果,我们可以在测试计划中添一个合适的监听器,例如聚合报告、查看结果树等。监听器可以帮助我们分析接口请求的结果和性能指标。 5. 设置线程数和循环次数:根据需求设置线程数和循环次数,模拟多个用户同时访问接口,并重复执行指定次数。 6. 运行测试计划:保存并运行测试计划,JMeter将自动发送HTTP请求,并记录返回结果。 7. 分析测试结果:在监听器中查看测试结果,分析接口请求的响应时间、错误率等性能指标,以便进行优化。 需要注意的是,token的获取通常是通过登录接口获取,在执行接口测试之前,我们需要先通过登录接口获取到token,并存储在一个变量中,然后在其他接口的请求中使用该变量的值作为token。 通过以上步骤,我们可以使用JMeter带有token验证的接口进行测试,以保证接口的性能和稳定性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值