您当前的位置:首页 > 电脑百科 > 程序开发 > 编程百科

如何进行接口测试?API 测试该了解的技术细节

时间:2019-11-05 14:14:34  来源:  作者:

首先,我们想,什么是 API ?

简单来说,API,是应用程序接口(Application Programming Interface,又称为应用程序编程接口),是软件系统不同组成部分衔接的约定。一个软件系统越庞大,需要用到的接口相对越多,同时接口的复杂度和接口的设计都需更好的设计和提升。

如何进行接口测试?如何做好接口测试?API 测试该了解的技术细节

 

那么,什么是 API 测试?

API 测试其实是一种用程序或工具来发送数据,同时验收系统的返回值的方法。这种测试更偏向于业务实现逻辑。常见的网络协议有 TCP、Http、webservice、socket 等,http?和 webservice 都是基于 TCP/IP 协议的应用层协议,webservice 是基于 http 的 soap 协议传输数据。我们今天主要说最常见的基于 http协议的API 的测试。

一般来说,API 测试是除去单元测试和白盒测试之外最能够从底层发现问题的测试方法。那么,API 测试需要注意哪些技术细节呢?换句话说,怎么做一个好的 API 测试呢?

我们从以下四点说起:

1 、用例设计

如果把 API 看做一个黑盒的话,那么我们首先可以设计基于边界值法、等价类划分法等的黑盒用例,这些设计思想其实占据很大成分。常见的比如参数值的边界,参数缺失/多余,参数空/非空,特殊字符等;对于复杂的参数,比如结构体/数组链表等,可以考虑其最大长度限制/内置特殊字符等。

其次,请求方式/不合法的数据格式/不合法的cookie 也会影响到一个接口的返回值。还有,有些接口涉及到加密解密,需要传一些密钥值,一些非合法秘钥的检验,来观察 API 的响应情况。最后,如果手里有很详细的接口文档,把每个 return code 都覆盖到,很有必要。比如正常是 200 OK,此外还有400(不合法请求),401(未授权),429(太多请求)等,或其它一些自定义的 error code,覆盖的过程,也是把工程代码分支覆盖的过程。

 

2 、请求工具

一般用 Chrome 浏览器的话,postman 的使用频次应该是最多的了。也可以下载postman 等位客户端。之前用 Firefox 浏览器的时候,还用过 HttpRequester。不管用哪种,方法一样。

首先,填写好测试 URL,选择测试方法(GET/POST/PUT/DELETE),设置 Header(常用的有 content-type/Cookie 等),设置 authorization type(Basic Auth等),最后在 body 中填充测试数据。接下来,点击 send 就好啦,这样就发送了一个请求到你的目标 API 了。

这里面比较复杂的可能就是 body 了,常用的格式有 form-data, x-www-form-urlencoded, applictaion/json 等。用哪种格式,正规的接口文档里开发同学就会注明。此外,postman 有一个功能很 nice,就是它可以配置环境变量。把配置信息抽象成类,不同环境对应不同的实例,初始化设定后,在 request 请求中通过实例成员变量来引用不同的值,从而在需要的时候通过切换环境来选择不同的配置信息。比如:我配置了一个env1 环境,并添加了一组 key 和 value,那么当我引用{{}}这个变量时,就会替换成你所配置的。

如何进行接口测试?如何做好接口测试?API 测试该了解的技术细节

 


如何进行接口测试?如何做好接口测试?API 测试该了解的技术细节

 


如何进行接口测试?如何做好接口测试?API 测试该了解的技术细节

 

3 、程序设计

首先是选择用哪种语言和相应的请求包,比如 Python 的话常用的就是 requests 库,而Golang 的话你可以使用 net/http 包或是 gorequest 包。拿 python 来说,短短十来行代码就可以模拟发送一个请求。

如何进行接口测试?如何做好接口测试?API 测试该了解的技术细节

 

但是难点并不于此。

如何组织用例?

一般来说,用例可以分为单个接口用例和场景用例,单个接口很简单,针对一个接口的参数设置边界值,对应校验不同的返回;场景用例涉及到多个接口的调用,用以简单模拟用户行为。

测试数据应该放在哪里?

测试数据可以放在用例里,也可以放在 json/yaml 等配置文件中。如果涉及到图片/视频等比较大的测试文件,最好不要存在本地,可以在测试服务器搭建一个简单server,比如使用 ngnix,接下来只需要访问这些测试文件的链接就好了。

使用哪种风格的测试框架

现在基本有 BDD 和 TDD 两种框架之分,我更倾向于使用 BDD,也就是"行为驱动测试"。这个风格有两个优点:

1.场景分级,易读清晰,方便定位失败的用例

2.新手好上手,BDD 的过程就是写 case 的过程。下面是它的一个流程图。

如何进行接口测试?如何做好接口测试?API 测试该了解的技术细节

 

4 、接口分析

如果你的团队里面,能够维护一份完整细致的接口文档,当然是最好的。如果没有的话,那么,优先去推动开发生成一份合适的 API 说明文档吧。如果达不到这个阶段,但是也要做自动化,那么你就要掌握基本的抓包分析工具,能够自己去抓包分析形成API 文档。

所以接口分析是很必要的,也属于接口测试的高阶提升。比如接口定义是否冗余,接口的请求字段是否冗余,接口调用是否得到了所有期望的信息,接口调用是否合理方便,接口是否做到最数据库进行了正确的变更,接口的平均响应速度是否在可接受范围等。这些指标的分析,有时候可以反馈给开发同学,对优化整体性能也是有益处的。同时,这些分析可以帮助你更好理解这个过程的来龙去脉,理解这些 API 做了什么,又产生了什么影响。

总之,API 测试上手很简单,但做得好,做成工程化还真需要费一点力气,一些技术细节的把控和提升,会无形中提升整体的测试水准;而如何让 API 测试真正在我们的日常工作中发挥出最大作用,也需慢慢研究和调整的。



Tags:接口测试   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除,谢谢。
▌相关推荐
先来个小故事:一天,你的领导丢给你几十个接口,然后希望你输出报告。你:"exm?",改改改。于是你引入了unittest单元测试框架、HTMLTestRunner等等。正打算将各个测试用例分类重新规...【详细内容】
2020-11-04  Tags: 接口测试  点击:(58)  评论:(0)  加入收藏
对于自动化测试,原来谈这方面的内容比较少,但是现在我们做DevOps支撑平台的时候,在整个持续集成和交付的过程中,有一个重要的内容就是自动化测试。自动化测试的覆盖面相当大,其...【详细内容】
2020-10-30  Tags: 接口测试  点击:(43)  评论:(0)  加入收藏
什么是 API 测试?API 测试其实是一种用程序或工具来发送数据,同时验收系统的返回值的方法。这种测试更偏向于业务实现逻辑。常见的网络协议有 TCP、Http、webservice、socket...【详细内容】
2020-10-19  Tags: 接口测试  点击:(60)  评论:(0)  加入收藏
应用场景:在API的测试中,测试某些具体数据值,比如返回的结果是否是需求的类型,文件是否是符合且具备完整的数据结构。这些都是必须且很细致的测试工作。另外,组织、运行测试场景,...【详细内容】
2020-10-19  Tags: 接口测试  点击:(138)  评论:(0)  加入收藏
JMeter是Apache组织的开放源代码项目,能做接口测试、功能测试和性能测试。它能够对HTTP和FTP服务器进行压力和性能测试,也可以对数据库进行同样的测试(通过JDBC),还能以多种形式...【详细内容】
2020-09-09  Tags: 接口测试  点击:(37)  评论:(0)  加入收藏
一、登录态是什么?在接口测试领域,登录态就是指登录状态。1 登录态的作用作用:用来维持接口的登录状态在浏览器中,我们登录后,浏览器会自动把登录状态保存下来,所以不需要我们管...【详细内容】
2020-07-19  Tags: 接口测试  点击:(34)  评论:(0)  加入收藏
jmeter是apache公司基于java开发的一款开源压力测试工具,体积小,功能全,使用方便,是一个比较轻量级的测试工具,使用起来非常简单。因为jmeter是java开发的,所以运行的时候必须先要...【详细内容】
2020-06-18  Tags: 接口测试  点击:(23)  评论:(0)  加入收藏
接口测试中的接口到底是什么?先看一道题,请找出以下可以被成为接口的选项:◆ USB◆ 水龙头◆ 用户界面UI◆ 函数◆ https://www.baidu.com◆ https://api.github.com接口的英文...【详细内容】
2020-05-03  Tags: 接口测试  点击:(32)  评论:(0)  加入收藏
首先,我们想,什么是 API ?简单来说,API,是应用程序接口(Application Programming Interface,又称为应用程序编程接口),是软件系统不同组成部分衔接的约定。一个软件系统越庞大,需要用...【详细内容】
2019-11-05  Tags: 接口测试  点击:(56)  评论:(0)  加入收藏
什么是接口 应用程序编程接口,也成为API。简单的讲,就是某 一个功能的实现或展示基于对于另一个功能的调用,那么调用与被调用之间的连接点就是接口。常见接口大致可以分为如下...【详细内容】
2019-08-03  Tags: 接口测试  点击:(161)  评论:(0)  加入收藏
▌简易百科推荐
一、Aliyun Java Initializr阿里中间件发布的定制版Spring Initializr。是集文档、erminal、编辑器三个窗口为一体的。 二、Cloud Toolkit简单来说就是可以快速部署远程服务...【详细内容】
2021-07-15  传智教育官方账号    Tags:在线工具   点击:(4)  评论:(0)  加入收藏
本文介绍PacketQueue,相对于FrameQueue来说比较简单,可以类比Android中的MessageQueue。PacketQueue总体介绍 单向链表结构。first_pkt、last_pkt,是链表的起点和终点结点;recyc...【详细内容】
2021-07-13  程序员老z    Tags:源码   点击:(3)  评论:(0)  加入收藏
TCP客户端:1.建立连接套接字,设置Ip和端口监听,socket()2.建立连接 connect3.write() 获取网络流量对象 发送数据4.read()获取网络流量对象 接收数据5.关闭套接字 TCP服务器端1...【详细内容】
2021-07-08  树朦胧    Tags:socket编程   点击:(8)  评论:(0)  加入收藏
Rust的异步功能很强大,但也以晦涩难懂著称。在本文中,我将总结之前提过的一些想法,并给出一些新的点子,看看这些想法放在一起能产生什么效果。...【详细内容】
2021-07-07  弯月  CSDN  Tags:Rust   点击:(6)  评论:(0)  加入收藏
1.进程 2.线程 3.主线程主线程就是java 中main方法 如果是单线程的话,有p1,p2两个对象,他们中间有一条语句。若是单线程,若这条语句出错,则p2不执行了。若是多线程则p2还可以执...【详细内容】
2021-07-04  程序猿凯撒    Tags:线程   点击:(14)  评论:(0)  加入收藏
作者 | edmz译者 | 王强策划 | 万佳多年来,我已经为很多 API 实现了客户端。为此,我整理了一份清单,列出了一些可以改善开发体验的小技巧。这些想法大都与 API 设计或架构无关...【详细内容】
2021-06-29  技术联盟总坛    Tags:API   点击:(16)  评论:(0)  加入收藏
本系列会讲述微信机器人技术的实现,第一讲主要了解微信网页版给我们提供的http接口,这一步是做一个基于微信网页版机器人的基础和难点。本讲将微信网页版的主要接口罗列出,并给...【详细内容】
2021-06-29  闪客sun  博客园  Tags:微信   点击:(12)  评论:(0)  加入收藏
我们看到很多关于在浏览器里使用js-ipfs的问题。这篇文章展示了用js-ipfs搭建最小化的聊天应用的例子,这个应用可以在浏览器中运行。它使用WebRTC去实现浏览器对浏览器的连...【详细内容】
2021-06-25  IPFSFilecoinFIL    Tags:IPFS连接   点击:(14)  评论:(0)  加入收藏
先举例子来理解这2个概念的区别。老师让两个同学去办公室谈话。如果这两同学(进程)是并列跨过办公室门(CPU)的,那么就是并行。如果同学A先进同学B后进入(或者先B后A),或者两人...【详细内容】
2021-06-24  linux技术栈    Tags:并发   点击:(18)  评论:(0)  加入收藏
这些年前端发生了天翻地覆的变化,几乎每隔几个月就有新的框架和技术诞生,有些技术可能你还没来得及学习,它就已经成为过去时了。2021年前端会有哪些变化,哪些技术会脱颖而出呢?Ja...【详细内容】
2021-06-23  梦回故里归来  今日头条  Tags:前端编程   点击:(18)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条