考虑一个人应该为电子商务系统编写自动验收测试。例如,您要检查当客户完成结账操作时,他在系统中注册了与其帐户关联的新订单。当然,有一件事情,你可以检查的是,有一些UI信息显示为'订单已成功完成'。但是,这并不能保证订单实际上在db中保留。我的问题是,是否可以通过查询DB来确认订单确实已保存。或者我应该在其他验收测试中明确地验证,例如通过检查订单清单(在完成结账操作后不应该为空)预先执行结账操作?
答案 0 :(得分:1)
您可以检查是否显示了一些UI消息,例如“订单已成功完成”。但是,这并不能保证订单实际上在db中保留。
实际上取决于。如果我们正在谈论Selenium - 他们确实建议进行这样的数据库验证:
另一种常见的测试类型是将UI中的数据与实际存储在AUT数据库中的数据进行比较。由于您也可以使用编程语言进行数据库查询,假设您具有数据库支持功能,您可以使用它们来检索数据,然后使用这些数据来验证AUT显示的内容是否正确。
然而,只有在足够清楚之后才能测试验收标准。如果没有这样的特定端到端要求 - 您不应该在这些测试中包含此DB检查。您可以将它们放在功能和集成级别中,SUT架构允许这样的black-box方法。如果我们对典型的N-tier(UI-Backend-DB)进行校正,则您的黑盒子将是中间件 - 从UI输入,[跳过所有],输出在DB中。
这当然会引入更多复杂性,并且您的测试将变得脆弱(对于UI尤其如此)。您还应该考虑昂贵的对象并正确地保存/处理它们(例如,每个套件运行的DB连接)。
恕我直言,您应该在自动测试中涵盖所有这些:
可以通过查询DB确认订单确实已保存来进一步验证。或者我应该在其他验收测试中明确地验证,例如通过检查订单清单(在完成结账操作后不应该为空)预先执行结账操作
唯一的问题是放置它们的地方在哪里。