RESTFul API 测试全面介绍

什么是 API
API 是应用程序编程接口(Application Programming Interface)的简称。从技术上讲,API 是 应用系统、操做系统、开发库等对一系列过程、函数的封装,开发人员可使用 API 编程对其它的 应用系统、操做系统、开发库提供的功能进行调用。数据库

若是以上对 API 的解释比较难以理解的话,咱们举一个例子说明。假如你到了一个来到一个餐馆,不巧的时服务员这个时候不在。你能够到餐桌上拿到菜单,而后直接像厨师点菜,厨师就会按照你的要求去作。可是有时也会存在你点的菜没有原材料了。你就须要再次拿起菜单,再点一个其它菜。当有不少顾客都同时向厨师直接点菜时,厨师就要分出很大的精力去处理客户的订单,而不能专心作菜了。编程

另外咱们这个世界有几百种语言。若是厨师不能听懂客户的语言该怎么办?这是最好有一个专门能听懂客户点菜的服务员。服务员就是厨师的 API,他(她)接收顾客的请求,而后传递给厨师,最后把顾客点的菜从厨师那里返回给顾客。服务员能够听懂顾客和厨师双方的语言。若是顾客点的菜后厨已经售罄,而后请顾客再选一个其它菜。这样能够节省顾客直接询问厨师的往返时间,顾客的体验也好多了。以上服务员服务顾客的这个过程也就是 API 的做用。安全

 

如上面的图所描述的那样,顾客向服务员提出订单,服务员的做用就时 API ,他(她)接收到订单转发给厨师,厨师这是就是后台的服务程序。服务程序处理完请求后把结果返回给顾客。像上面例子,厨师就是服务器应用,他从服务员(API)那里得到服务请求,处理请求(烹煮食物),而后把处理完成的结果(美味菜肴)返回给 API (服务员)。至于 调用 API 须要传入的不一样参数,能够认为是顾客对菜肴不一样口味的要求,例如多放辣椒、放天然、放咖喱、多加盐等。这些参数可让服务器应用(厨师)采用不一样的处理方式来处理请求。服务器

API (应用程序接口)从客户终端设备中得到请求,而后把请请求发送给远程服务器,服务器处理完成后,API 从服务器得到处理结果,把处理结果再传回给客户终端。在如今的 IT 架构中,API 处处可见,被大量应用。API 根据使用要求,传入不一样的参数后,从服务器端得到相应的处理结果。例如航班查询中,根据对航班的出发港、到达港、起飞时间等要求,能够查询出不一样的航班、不一样的票价等信息。做为客户端开发人员,经过 API 处理复杂且难以处理的请求,变得和容易,只要按照 API 的调用要求,正确的传入请求参数便可。这也是 API 的好处,它让 API 变得很是流行,随处可见。架构

API 测试
咱们上面介绍了 API ,也知道了 API 对当前世界中分布式 IT 服务应用的重要性,所以 API 测试也随之变的重要。框架

API 测试能够提升服务应用的代码质量,提早发现服务应用的问题,并及时修复。相对于传统的 GUI 测试,API 测试能够底层的角度发现 GUI 测试不容易暴露的服务端问题,具备更短的问题反馈时间,更高效的解决问题的方式。分布式

API 测试既可使用手工测试,也可使用自动化测试。在敏捷和 DevOps 更加流行的当下,持续测试已经成了被普遍承认的方法。因为 GUI 的自动化存在很多的缺点,例如测试脚本常常因为 GUI 变更而致使失败、测试执行效率低耗时长、测试人员等待时间长测试时节靠后须要开发提供 GUI 才能测试等。函数

在敏捷时代,测试应该前移,应该尽量早地开始,应该进行更低层级的测试,例如 API 层、单元层。API 测试能够有开发人员执行,能够在 GUI 还没有开发的状况下进行。特别是在基于契约测试的状况下,API 甚至能够在服务端开发没有完成的状况下进行。微服务

 

 

软件应用中的 API 在被正式部署前应该很好的测试,API 测试既是开发人员的工做,也是测试人员的工做。高质量的 API 对于应用程序很重要,它能够消除掉应用服务在被正式部署后可能出现的不少问题。基于此业界范围内也开发出了不少 API 测试工具、框架等。Postman 就是其中比较著名的一个。工具

测试人员在 API 测试中的角色和职责
做为 API 测试人员,应该对 API 有全面的知识体系,例如 Web 服务、REST、SOAP、微服务等。

API 测试须要的技能栈:

可以使用 WEB 调用方法 GET、POST、PUT、DELETE等

可以验证请求响应 (RESPONSE)、错误代码(ERROR CODE)等

JSON 格式、XML 格式的内容

可以使用鉴权方法,例如 OAuth、 OAuth二、BASIC Authorization等

可以作 WEB SERVICE 的性能、安全测试

可以读懂 API 说明文档

可以编写 API 测试案例和场景测试案例

可以编写 SQL 验证与 API 相关的数据库数据

可以熟练掌握 API 测试工具

SOAP UI、Postman、JMeter、RestAssured、Rest Sharp、Node modules等

API 测试与单元测试
不少测试人员把 API 测试和单元测试混在了一块儿,事实上它们是不一样的,负责的范围也不同。单元测试是基于类的测试或根类同一级别组件的测试。单元测试经常由开发人员负责,验证类或模块是否完成了它的设计功能。开发人员自测负责的类,发现缺陷后自行修改,直至达到设计要求。单元测试保证了么一个类或者模块的正确性,它们是软件质量的基石。

 

相对于单元测试白盒测试,API 测试应该算是黑盒测试,测试功能链接服务程序对外提供的接口进行测试,而不会对外暴露内部的实现逻辑。API 测试须要对应的服务运行,经过 API 接口与服务器应用交互。

API 测试主要是测试系统架构中的业务逻辑,由集成测试团队负责。测试人员经过调用指定版本的服务程序提供的接口进行测试。这样单元测试主要由开发人员负责,在负责角色上有所区别。

API 测试也对单元进行测试,与单元测试所不一样的是,单元测试是把被测单元与系统其它部分隔离出来进行测试,API 测试是把被测单元做为系统相系联系的一部分进行测试。API 测试其实也是端到端的测试。当咱们进行 API 测试时,跟 API 相关的模块都会测试到。然而进行单元测试时,仅仅对被测模块或类进行测试,被测试的模块或类是与系统的其余部分隔离开的。

API 测试关注那些点
当咱们用API工具进行测试时,每每会遇到不少报错。这些报错不只有API报错,也有软件应用报错,甚至是服务器错误。这使得软件测试人员关注的范围更广,相关的知识和技能也更重要。软件测试跟软件开发同样遵循必定的顺序和步骤。在软件开发阶段,测试人员能够编写测试案例和测试脚本。开发人员也可使用测试人员编写的脚原本发现处于开发状态的软件应用的问题。在生产阶段,测试人员能够改善和升级测试案例,让测试案例兼容性更好,对软件的测试质量更有帮助。

《Postman API 自动化测试与持续集成全栈攻略》 做者:杜铁绳

吐司QA 测试管理与自动化技术社区

相关文章
相关标签/搜索