什么是接口?
官方的定义:实体把自己提供给外界的一种抽象化物(可以理解为另外一个实体),用以由内部操作分离出外部沟通方法,使其能够被内部修改而不影响外界,与其他实体实现交互。接口对内没什么影响,对外提供的。
生活中:usb接口
电脑、u盘 通过usb接口进行交互,对接,目的:为了共享数据,交互数据
接口设计两个方面:
接口的提供者 例如:电脑
接口的使用者 例如:U盘
软件中的接口
人和程序直接的接口:即 GUI接口 界面
提供者:软件
使用者:人
怎么测试?
就是做系统测试:来测试整个软件的使用
依据:需求文档,开发文档,设计文档等等,方法可以是黑盒,白盒,灰盒,可以手工可以自动化,都可以。
模块和模块之间的接口:即一般都是“函数接口”
提供者:定义函数模块 –》函数名
使用者:调用函数:函数名(传入参数)
怎么测试?
就是做集成测试:测试接口,一般都是单接口测试
具体实现:模拟函数调用,通过不同方式调用这个函数,测试是否正常
例如:提供了一个函数:求和的函数,2个数求和的函数,测试这个函数是否正常?
正常用:传入2个数(整数,小数)
非法用:传入非数字;提示不对
软件和软件直接的接口(重点):一般是要遵循“协议接口”
提供者:百度地图(定位函数)
接口使用者:微信、物流系统、滴滴等
怎么测试?
借助于接口测试用具进行测试,即跑场景接口测试。
常见的接口测试工具:postman,jmeter,soapui等等…
例如:模拟使用物流查询接口:正常查询、不存在的情况等等
工作中常见的接口
工作常见的接口测试基本上都是”web 接口”,也叫“webservice”,是走协议http 传输,请求报文和返回的报文都是xml格式的。
Http : 超文本传输协议(post、get)
https: 并非是应用层的新协议,只是HTTP通信接口部分使用SSL 和 TLS协议代替而已,相较于http 更安全一些。
接口测试的流程
- 获取接口说明文档(接口需求):测试依据
没有接口文档或者,文档不完整,怎么办?借助于工具来完善文档
- 测试负责人来制定接口测试计划,设计测试方案,选定测试工具
- 每个测试人员针对自己的接口,来设计接口测试用例
- 进入执行阶段,跟踪问题,回归测试
- 编写接口测试报告
接口测试文档
又叫接口规范文档,作用:项目前后端有同一开发的标准,设计标准。接口文档中一般包含接口的:方法,URL,请求的参数,返回参数,接口文档是由前后端工程师共同定义接口,编写,维护的。
API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 [1] 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,简单的说就是函数的调用。
单接口测试:
获取接口信息:通过接口文档
如果没有接口文档,借助于抓包工具,完善整理接口文档
多接口测试:跑场景测试
例如:中国天气网测试实例
接口测试测什么?
- 针对输入参数来测试
当成表单来设计测试用例
采用的设计方法:等价类、边界值、输入域等方法
即:参数值:考虑输入合法的数据,非法的数据;考虑边界值、考虑特殊值、考虑极限值等等。
- 补充测试:
- 测试接口的地址
测试接口地址不正确的情况下发送请求
B. 测试接口的请求方式
测试不支持的请求方式
- 要不要做接口的性能测试?
如果有500个地方都会用接口,则需要测试接口的性能
采用jmeter 来测试
- 针对输入参数的补充
测试输入参数的个数不对,参数个数多了,少了,输入名称不正确或者是参数重复上传等等。
Json提取器
查看结果树中,调整查看结果方式为JSON模式,可较清晰看到响应结果中的id、token信息
JSON path表达式怎么写?例如我要获取id,可写$.data.id,$表示根元素,然后一级级属性往下去找,先找到data,再往下子节点找到id;也可写$..id,直接从根元素去递归查找到id;获取token同理。
如果使用JSON 提取器提取想要的信息?
右键登录请求-->后置处理器-->添加“JSON提取器”。
JSON提取器说明:
Apply to:应用范围
Names of created variables :接收值的变量名,自定义,多个变量用分号分隔
JSON Path expression: json path表达式,也是用分号分隔
Match No.(0 for Random):0表示随机;n取第几个匹配值;-1匹配所有。若只要获取到匹配的第一个值,则填写1
Compute concatenation var(suffix_ALL):如果找到许多结果,则插件将使用' , '分隔符将它们连接起来,并将其存储在名为<variable name> _ALL的var中
Default Values: 缺省值,匹配不到值的时候取该值,可写error。
为了检查通过json提取器是否正常获取到值,可添加Debug PostProcessor来检查,注意正常跑用例时删除或禁用它。
对比登录返回的结果,能看到已经正常获取到id,token。
json提取器设置1个变量获取多个数据
1、例如“获取用户列表”,先来看下“获取用户列表”的响应结果。
如果想要获取到这里所有的用户id,json路径表达式怎么写呢?$..id或者$.data[*].id
添加JSON提取器,获取所有用户id信息。
添加Debug PostProcessor来调试用,正常跑用例删除或禁用它。可查看到获取到了所有用户id值。通过id_1,....id_22可得到每一个id