浅谈接口管理与接口自动化测试

一、接口管理存在的痛点及解决方案

(一)存在的痛点

接口管理目前存在的痛点:接口在设计时往往需要编写大量的文档,而且编写完成之后还会经常改动,文档编写维护工作量大。

接口文档编写好后,实际的代码可能会与文档有出入,这个时候文档是不准确的,文档与代码保持修改同步也是一个很大的工作量。随着接口版本的迭代,接口文档需要同步更新。有些时候接口会成为对接双方的开发进度瓶颈,因为接口调用会有依赖,类似app的项目,前端会需要调用后端接口,接口功能不实现会影响前端开发进度。接口开发完以后,做接口测试不方便,特别是接口数量多,参数复杂的情况,测试工作量大。接口在版本迭代后,旧的接口常常需要做回归测试,这个工作量也是非常大的。

(二)解决方案

针对上述问题,目前解决方案:API接口管理系统化或平台化,可以直接在可视化API管理界面上方便的维护接口。而且最好有版本管理和权限管理。可视化维护好的接口可以直接生成对应语言的代码,节省代码开发量。

代码有变更时,最好还可以与界面上的接口进行同步。API界面能够提供模拟接口实现方的调用功能,这样就能解耦接口调用方与服务方的强进度依赖,可以先按API接口的消费方基于接口管理系统或平台模拟调用,待服务方准备好后再真实调用。而且这里的模拟最好能做到自定义规则的模拟返回。接口实际开发完成后,可以根据接口管理系统或平台的可视化测试界面,直接进行接口的实际调用测试。

接口平台能够支持自动化测试,可以自定义测试案例,然后自动化测试并生成可视化报告。这个功能在旧版本接口复测时非常有用。

二、接口测试的必要性和意义

接口测试实施在多系统的平台架构下,有着极为高效的成本收益比(当然,单元测试收益更高,但实施单元测试的成本投入更大,技术要求更高,所以应该选择更适合自身的才是最好的方案)。

接口测试天生为高复杂性的平台带来高效的缺陷检测和质量监督能力,平台复杂,系统越庞大,接口测试的效果越明显。

总的来说,接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益驱动作用下的最佳方案,主要体现在以下三个方面:

1、节省了测试成本

根据数据模型推算,底层的一个程序BUG可能引发上层的8个左右BUG,而且底层的BUG更容易引起全网的死机;接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。

2、接口测试不同于单元测试

接口测试是站在用户的角度对系统接口进行全面高效持续的检测。

3、效益更高

将接口测试实现为自动化和持续集成,当系统复杂度和体积越大,接口测试的成本就越低,相对应的,效益产出就越高。

三、接口自动化的演进历程

接口自动化演进,通常是从手动测试 -> 工具测试 -> 代码测试 -> 平台服务化演进。

手动:从客户端的业务场景测试去覆盖服务层接口,借助Fillder、Charles、FireBug等工具抓包分析。优点:简单,模拟真实业务场景;缺点:接口逻辑覆盖不够,异常和输入校验不足,重复繁琐,回归成本高。

工具:使用PostMan,HttpRequest,Jmeter, SoapUI等工具做接口测试。优点:容易保证接口逻辑覆盖,便于异常和输入校验,提高回归效率;缺点:缺乏自定义灵活性,接口依赖处理繁琐,不便自动化工程化。

代码: 选择如,Java + Httpclient,Python + Requests, PHP + Requests/cURL/HTTPFul,搭建接口自动化框架,开发接口自动化case。优点:灵活性好,扩展性强,逻辑覆盖容易,异常和输入校验充分,回归效率高;缺点:存在一定学习成本,框架及case脚本需持续维护。

平台:通用的接口自动化测试平台,简而言之满足接口自动化测试的Web平台,如:eolinker。优点:通用性强,上手快,一键式,配套服务全等;缺点:业务契合度,灵活性,维护成本,API扩展等。

四、接口自动化测试技能及应用

按照上面的介绍,接口自动化测试的方法工具有很多,这里不再做过多的介绍,但是实现接口自动化测试所要具备的一些技能要了解一下,同时介绍下如何开展接口自动化测试。

(一)必备技能

了解系统及内部各个组件之间的业务逻辑交互;

了解接口的I/O(input/output:输入输出);

了解协议的基本内容,包括:通信原理、三次握手、常用的协议类型、报文构成、数据传输方式、常见的状态码、URL构成等;

常用的接口测试工具,比如:jmeter、loadrunner、postman、soapUI等;

数据库基础操作命令(检查数据入库、提取测试数据等);

常见的字符类型,比如:char、varchar、text、int、float、datatime、string等;

附上新技能的正确学习方式,供大家参考

(二)实际应用

首先,调试单个接口,保证单个接口的正确和通畅(类似于性能测试中的基准测试),确保测试方法的正确性。

其次,明确数据流,业务流。

最后,将N个接口测试脚本串起来,执行即可。

五、结语

综上所述,接口自动化测试最重要的一点,是先从最基础最简单的做起,至于扩展性的第三方接口、https、定时任务、自动出测试报告、自动发邮件等功能,这些都需要在实践中不断累计和优化,只有先行动起来,让接口自动化测试落地,才是首先需要考虑的,这样一来就离目标近了一大步!

作者:焦龙

版权申明:本文为公众号原创,如需转载,请在公众号后台留言。

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20181026A1QDRP00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券