在验收测试中检查数据库的状态是一个好习惯吗?

时间:2015-08-11 12:53:31

标签: testing language-agnostic acceptance-testing

考虑一个人应该为电子商务系统编写自动验收测试。例如,您要检查当客户完成结账操作时,他在系统中注册了与其帐户关联的新订单。当然,有一件事情,你可以检查的是,有一些UI信息显示为'订单已成功完成'。但是,这并不能保证订单实际上在db中保留。我的问题是,是否可以通过查询DB来确认订单确实已保存。或者我应该在其他验收测试中明确地验证,例如通过检查订单清单(在完成结账操作后不应该为空)预先执行结账操作?

1 个答案:

答案 0 :(得分:1)

  

您可以检查是否显示了一些UI消息,例如“订单已成功完成”。但是,这并不能保证订单实际上在db中保留。

实际上取决于。如果我们正在谈论Selenium - 他们确实建议进行这样的数据库验证:

  

另一种常见的测试类型是将UI中的数据与实际存储在AUT数据库中的数据进行比较。由于您也可以使用编程语言进行数据库查询,假设您具有数据库支持功能,您可以使用它们来检索数据,然后使用这些数据来验证AUT显示的内容是否正确。

然而,只有在足够清楚之后才能测试验收标准。如果没有这样的特定端到端要求 - 您不应该在这些测试中包含此DB检查。您可以将它们放在功能和集成级别中,SUT架构允许这样的black-box方法。如果我们对典型的N-tier(UI-Backend-DB)进行校正,则您的黑盒子将是中间件 - 从UI输入,[跳过所有],输出在DB中。

N-tier

这当然会引入更多复杂性,并且您的测试将变得脆弱(对于UI尤其如此)。您还应该考虑昂贵的对象并正确地保存/处理它们(例如,每个套件运行的DB连接)。

恕我直言,您应该在自动测试中涵盖所有这些:

  

可以通过查询DB确认订单确实已保存来进一步验证。或者我应该在其他验收测试中明确地验证,例如通过检查订单清单(在完成结账操作后不应该为空)预先执行结账操作

唯一的问题是放置它们的地方在哪里。

enter image description here