REST API 的验收测试 - 我应该处理所有情况吗?

Posted

技术标签:

【中文标题】REST API 的验收测试 - 我应该处理所有情况吗?【英文标题】:Acceptance tests for REST API - Shoud I deal with all cases? 【发布时间】:2019-02-13 12:15:14 【问题描述】:

我们的团队正在为我们的项目进行 ATDD(验收测试驱动开发)。

我有一个问题。

我编写如下 API 测试。

1) 创建固定装置

2) 将标头、查询、路径、正文发送到端点。

3) 断言状态码、正文等的响应

问题来了!

我应该在验收测试中为异常情况(如无效的正文字段和值组合)编写所有测试用例吗?

例如,POST /users 接收像 name: "steve", age: 27, account: "test", password: "test1234" 这样的正文

您是否为所有身体输入组合编写测试用例? (如果name为空,返回400 /如果name太短,返回400 /如果age不是数字,返回400 /如果密码不包含数字,返回400等等)

案例太多了:(

如果你不这样做,你能和我分享一下你是如何处理这个问题的吗?

【问题讨论】:

【参考方案1】:

您确实需要涵盖这些情况,但您不想在高层次上涵盖所有情况。为了编写快速且可维护的测试,您需要遵循 test pyramid 编写大量低级(单元)测试和少量高级(系统)测试。

因此,您要做的是检查单元测试中的所有验证规则(针对每个字段),然后为每个端点仅创建 1 个高级否定测试以检查验证是否被调用,并且错误格式正确。

【讨论】:

以上是关于REST API 的验收测试 - 我应该处理所有情况吗?的主要内容,如果未能解决你的问题,请参考以下文章

在我使用完服务后,我应该处理服务(层)类吗?

我应该处理 X509Certificate2 吗?

我应该处理超过 MAX_PATH 的文件吗?

第二次创建peerconeection WebRTC时出现问题(轨道已经存在一个发件人。),我应该处理任何想法

Rails Rest API 外部测试

我应该选择哪一方来测试 REST API?