我想知道除了验证状态码(200、400、500)和json以外的其他形式,我们还可以验证什么以确保API正常工作?
PS:我也不太了解模式验证。
如果有人可以通过良好的资源(博客,网站)等帮助我,那就太好了。而且我正在寻找相同的手动和自动化测试。

#1 楼

我真的很喜欢这个问题,这是我考虑过很多的事情。验证响应代码和JSON正文是一个不错的开始,但是就像您说的那样,还有很多事情可以做。

我构建了一个API测试工具Assertible(https://assertible.com) ,并写了一些博客介绍有关测试/验证REST API的不同方法,这些是一些更高价值的方法:




合同测试/架构验证-您简要提到了这一点,但是JSON Schema验证非常重要,因为它为您提供了测试整个嵌套响应主体以确保每个字段正确的方法。

响应时间和性能测试-测试响应times确保API在适当的时间范围内回复请求。我们在Assertible上使用此工具来确保快速加载仪表板和网站页面。这对于POST / PUT / DELETE上的GET请求更为重要。

测试格式错误的请求-实际上,这是一个重要的请求。发送格式错误的请求时,API会如何响应?尝试在某个端点上不应该使用的方法。忽略POST正文中的键,看看会发生什么。您会惊讶地发现有多少API无法验证请求主体。

API安全监视-与上述类似,请尝试通过HTTP测试HTTPS API。是否公开了任何敏感数据?

运行状况检查和性能测试-这是更基本的状态代码验证,但运行频率很高(例如1或5分钟间隔)。您可以选择短暂的中断,以获取有关您甚至从未发生过的事情的信息!

资源

这些方法都来自我在Assertible上撰写的各种博客:


用于减少API测试错误并改善QA自动化的4种技术
测试JSON API的3种简单策略
API监视的新功能?这里有5条提示,可以在用户遇到故障之前检测停机
4种常见API错误以及如何对其进行测试

希望对您有所帮助!

#2 楼

REST API只是系统的API,因此系统响应您的请求的方式通常不仅取决于您的请求,还取决于系统的状态和调用时间。因此,您也应该在测试中控制这些元素。例如,汇款请求是否成功取决于源帐户是否有足够的资金。

REST API的响应并不是您提出请求后唯一发生的事情。系统也有可能需要检查的预期副作用。例如,当您要求汇款时,响应可能是HTTP 200(OK),但其他的副作用是在目标帐户上您应该期望余额增加。

显然,REST还具有其他特定功能和HTTP,例如:


检查缺少某些请求标头(例如Content-Type,Authorization等)时系统的行为。
检查提供查询时会发生什么仅接受主体中形式参数的方法的参数
,当受保护的资源仅应位于HTTPS上时,验证受保护的资源是否无法通过HTTP使用

工具:Web浏览器(用于GET请求) ),卷曲,REST保证,改进,邮递员,SOAP UI。

#3 楼

设计测试用例的最佳参考是API文档,也就是API合同。本文档介绍了以下内容:


如何调用API
对它们的期望

通常,您可以为您提供这些测试级别API(基于合同):


验收测试
合同测试,例如包装(包括您的想法:模式验证)
性能测试


#4 楼

性能测试(或至少进行一些并发测试,以确保如果2个用户恰好同时调用相同的端点,它将仍然按预期运行)。
可以使用的工具:

SoapUI
Apache JMeter


#5 楼

除了上述内容之外,您还可以使用Rest Asured(它是Java库)检查响应时间,验证模式,检查整个响应等。

我建议您检查我的博客:

使用Rest Assured检查响应时间

这是有关测试REST API的分步教程。

评论


您需要在答案中说明您写了链接到的博客,否则您可能会将答案删除为垃圾邮件。

–凯特·保罗(Kate Paulk)
16年11月9日,12:47