什么是接口
接口主要指外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
接口一般来讲分为两种:
- 程序内部的接口:方法与方法、模块与模块之间的交互,程序内部抛出的接口,如登录发帖,发帖就必须要登录,如果不登录不能发帖,发帖和登录这两个模块之间就要有交互,就会抛出一个接口,进行内部系统调用。
- 系统对外的接口:从别人的网站或服务器上获取资源或信息,对方不会提供数据库共享,只能提供一个写好的方法来获取数据,如购物网站和第三方支付之间,购物网站支付时可选择第三方支付方法,但第三方不会提供自己的数据库给购物网站,只会提供一个接口,供购物网站进行调用
接口主要分类:
- HTTP接口:基于超文本传输协议(HyperText Transfer Protocol HTTP)开发的接口,是应用最广泛的网络协议之一。基于浏览器/服务器(B/S)的软件系统大多数为HTTP接口。
- Web Service接口:系统对外的接口,根据提供的方法引用提供的接口,从而获取数据。
- RESTful接口:简称REST,描述了一个架构式的网络系统。
- Dubbo接口:Dubbo是一个分布式、高性能、透明化的RPC服务架构。是阿里巴巴公司开源的一个高性能优秀的服务治理方案。可以理解HTTP是基于客户端-服务端传输,而Dubbo是后端服务与服务之间方法的调用,传输信息。
什么是接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
接口测试类型又主要分为功能测试,性能测试,稳定性测试,安全性测试等。
为什么要做接口测试
接口测试实施在多系统的平台架构下,有着极为高效的成本收益比(当然,单元测试收益更高,但实施单元测试的成本投入更大,技术要求更高)。
接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力,平台复杂,系统越庞大,接口测试的效果越明显。
接口测试优势主要体现在如下三个方面:
1、节省了测试成本
根据数据模型推算,底层的一个程序BUG可能引发UI层的8个左右BUG,而且底层的BUG更容易引起全网的死机;接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。
2、接口测试门槛相对较低
接口测试不同于单元测试,接口测试是站在用户的角度对系统接口进行全面高效持续的检测。
3、效益更高
将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效益产出就越高。
接口测测试点是什么
目的:测试系统间接口的功能正确性、稳定性以及安全性等;
原理:按照指定的协议向需要测试的接口发送请求,被测接口接收请求后对相应请求数据做处理并返回对应的结果的过程;
重点:检查数据的交换,传递和控制管理过程,还包括处理的次数;
核心:自动化持续集成是接口测试的核心;
功能用例设计重点:通常情况下主要测试最外层的两类接口:数据进入系统接口(调用外部系统的参数为本系统使用)和数据流出系统接口(验证系统处理后的数据是否正常);
怎么做接口测试
基本的接口测试和功能测试类似,只是需要借助一些接口测试工具来完成,大致接口测试流程如下:
接口需求分析 -> 接口用例设计 -> 测试脚本开发 -> 测试执行 -> 结果或报告分析
- 接口需求分析:需求分析是参考需求文档、设计文档、接口文档等,在了解需求和接口功能的基础上还需清楚接口内部的实现逻辑,并且可以在这一阶段提出需求、设计存在的不合理或遗漏之处。
- 接口用例设计:在理解需求和接口功能的基础上,设计接口测试用例,主要内容包括参数校验,功能校验、业务场景校验、安全性及性能校验等,常用的用例设计方法有等价类划分法,边界值分析法,场景分析法,因果图,正交表等。
- 测试脚本开发:使用自己熟悉的语言或者工具,根据接口测试用例,编写接口测试脚本
- 测试执行:手工执行或者自动化持续集成运行接口测试脚本,对接口进行测试
- 结果或报告分析:根据接口的返回数据或者测试报告来分析接口测试结果。
http的接口测试可以用如下工具或者语言进行测试:postman,jmeter,python+requests+unittest,java+httpclient+testng