JMeter有一个很强大的功能就是能够用来作接口测试。html
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。正则表达式
咱们从接口测试中涉及到的一些基础知识讲起。算法
Java狭义接口与API的区别是什么?编程
首先我想解释一下接口,由于原来这里让我傻傻搞不懂。Java里的Interface是接口,API也是接口,可是在接口测试中咱们测试的是哪种?他们有没有什么区别?其实,他们是有区别的。编程语言
我去找寻了一下我认为写得比较好的标准解释:post
Java接口是狭义的接口,是借由Interface 定义的结构,接口中只对方法作定义,不作实现。具体实现由最终实现接口的类提供。Java 是强类型的语言, interface 做为一种类型,能够用于声明变量,以接口类型声明的变量,咱们只关心它实现了接口声明的方法,并不关心实际上引用的是哪一个类的对象。编码完成以后,经过传入接口的不一样实现类的对象,从而在不改变调用方代码的状况向下改变程序的功能,实现多态。学习
而API(Application Programming Interface,应用程序编程接口):是应用程序和模块之间相互沟通的方式。提供某些功能的应用程序或者模块为了与其它程序相互沟通,对外公开了某些功能的调用方式方法,这一套方式方法就是 API 。测试
通俗的说,就是前者是编程语言中使用的,没有具体实现的抽象的定义,后者实际上是一个已经包含了逻辑的可执行的程序,供外部使用的。编码
而咱们在接口测试中测试的对象就是所谓的API。 url
那什么是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数据包。具体的这里不作讲述,文章末会给一个颇有趣的文章链接。
正是由于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数据的格式我想也没必要多说。大概流程就是这样,有疑问的朋友欢迎留言。