微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

没有强制参数的场景的API测试,响应将是错误代码和消息

如何解决没有强制参数的场景的API测试,响应将是错误代码和消息

鉴于此 API:

{{base_url}}/json/1F/flightavailability/adults=1&departureairport=CRL&departuredate=20190509&destinationairport=CZL

所有参数都是强制性的,除了“adults”。我需要为他们编写一个 BDD 场景和步骤定义来自动化场景:如果缺少这些必需参数中的任何一个,响应应该是“422,未处理”。

解决方法

当我查看 BDD 场景时,我总是喜欢进行对话,即使是针对 API 而不是 UI。我想象对话有点像这样:

Shobha:所以你不需要知道有多少成年人前往 处理这个,但你确实需要出发机场、出发日期和 目的地机场?

企业:没错。如果我们不知道有多少成年人 旅行,我们假设它是 1,我们返回可用的航班, 1张票定价。否则,我们会显示所有可用的航班和 成人旅行人数的价格。

测试员:如果当天没有航班怎么办?

Business:啊,那么应该说没有航班。

测试员:如果有 2 个成年人旅行,但上面只有 1 个座位怎么办? 飞机?

业务:哦,不错的收获 - 好吧,我们也应该将其过滤掉。

Shobha:好的,这是 5 个场景 - 强制数据所在的场景 失踪的,没有航班的, 过滤掉座位太少的航班, 一种是默认1位成人,另一种是2位成人。

(我将测试人员放在那里是因为他们非常擅长发现其他人没有想到的场景。)

因此,在讨论了系统应该做什么之后,我们现在有了一些不同的场景。

场景发生的上下文——事先创建的一切——是“给定的”。发生的动作(提交航班搜索)是“何时”。结果的结果是“然后”。您可以在“给定”中包含 URL 的设置 - 如果可以,请尝试使用业务语言而不是 API 语言来表述。

我也喜欢把事情具体化(提供目的地、出发日期和机场的例子),因为这有助于我们思考其他场景。

所以对于“强制性数据丢失”的情况,我会是这样的:

Given a search for a flight on 17 Sep 2028 from LHR
When the search is submitted
Then the submitter should be told that the request could not be processed
And the text should contain "missing destination airport"

我不会为每个缺失的字段创建端到端的场景;在系统级别有一个就足够了。将其余部分放在单元测试中(参见 Testing Pyramid;避免测试冰淇淋蛋筒)。写完之后,获得反馈,看看你是否理解正确。

您的帖子缺少关于成功提交后会发生什么的信息;我在这里做了很多假设!我可能会将成功的提交与不成功的提交归为一组,除非数量过多且容易混淆,然后将它们分开。

当然,您可能只是在测试验证/反腐败层!但是,如果您要这样做,只需在单元测试中进行 - 您不需要 BDD 工具。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。