该问题旨在回答“如何测试API”这一一般性问题。这方面的其他问题更具体。对于这个问题,我将按照简短的问题标题进行高级介绍。
#1 楼
API测试清单端点
操作
状态代码
有效载荷数据
性能
安全性
>
具体地
动词/操作/方法
存在哪些文档?
它提供什么功能?
它支持并发吗?
API终结点是什么?
API是内部还是外部的?
哪个终结点是幂等的?
终结点是无状态还是有状态的?
任何工作流1是否随客户端而不同?
有性能要求吗?
API端点是否组成工作流程?
数据需要进行哪些验证?
API背后是什么系统或库?
我们需要模拟吗?相关服务吗?
是否限制了流量,也限制了速率?
API是否仅限于某个国家或地区?
使用了什么版本控制方法(如果有)?
API是否被使用?是否支持多种语言?
如果已经使用SOAPui,则如何集成?
它是否提供客户端存根用特定语言表示吗?
给定端点需要什么状态代码?
API是否使用HATEOS2进行自我文档编制?
可以执行哪种数据验证/测试?
我使用的测试框架支持什么API?
执行什么操作,例如GET,PUT,POST等?
我们需要准备相关的测试数据或服务吗?
将需要哪些非API的方法来验证数据?
需要哪些非API的方法来验证数据?准备数据?
是否存在现有的API定义,例如WADL,WSDL,Thrift?
将使用什么(如果有的话)授权(“什么”)机制?
将使用什么(如果有的话)认证(“谁”)机制?
谁将使用它,是外部程序员还是其他内部模块?
什么格式:SOAP,REST,GraphQL,Thrift,ProtoBuffer和其他?
实际上
这里有一些要检查基于HTTP的API的更具体的事情:
我可以在put调用中更改ID吗?
我可以放置一个ID无效的对象吗?
我可以发布一个具有现有ID的对象吗?
我可以获取一个我无权获取的对象吗?
我可以放置一个对象吗?我无权使用吗?
我可以获取未经身份验证的对象吗?
删除是否需要身份验证/授权?
我可以发布未经身份验证的对象吗?
我可以未经授权访问隐藏信息吗?
攻击者可以通过401 vs 404确定存在哪些资源路由吗?
我可以搜索不允许直接通过路由查看的信息吗?
是否删除父记录或(仅1个)引用记录会按预期方式删除关联记录?
1工作流通常需要多个API调用,并且它们之间可能具有依赖性2 HATEOS-超文本作为应用程序状态的引擎,它允许自我发现API。
也称为Hypermedia。
评论
一个非常有趣的概述,今天是最重要的问题之一。但是您不必明确说明哪些工具可以通过API网关进行测试。让我们以WSO2为例,它已经集成了负载和性能测试,渗透。
–莫农
19年7月18日在12:14
另一点是将SoapUI直接集成到现有环境中。
–莫农
19年7月18日在12:15
Meta:一个人可以回答自己的问题吗?
–JoãoFarias
19年7月18日在13:16
它会限制流量吗?它是否提供特定语言或IDL的客户端存根来生成此类客户端,例如WADL,WSDL,Thrift定义?
– dzieciou
19年7月18日在16:45
@JoãoFarias-一个人可以绝对回答自己的问题。这种问题最常见于这样的规范问题/答案,但也可能在有人遇到问题并随后找到答案并将其发布以供参考时出现(例如此问题:sqa.stackexchange.com/questions/3645/…)
–凯特·保罗(Kate Paulk)
19年7月19日在15:06
评论
您是指远程API吗?还是类,库的API?