gpt4 book ai didi

testing - Specflow - "scenarios"之间的状态

转载 作者:行者123 更新时间:2023-11-28 19:57:26 26 4
gpt4 key购买 nike

我正在使用 Specflow 编写一套模拟月薪的场景,验证每个月的计算付款以及最后的年终数据。

每个月的结果都是累加的,所以后面的每一个场景都依赖于上个月的加减。支付计算通过第三方工具写入数据库,因此在场景之间创建和销毁测试数据的成本很高。

根据我的测试经验,我知道并不总是能够确保测试的执行顺序。我可以使用一些场景命名约定来控制执行顺序,但不能保证远程测试运行器将按字母顺序运行测试。

我考虑过的选项:

  • 通过一个场景运行一整年,包括大量给定、时间和当时的断言。这会产生一个难以阅读的庞大场景。
  • 为每个场景创建一个串联“Given”。 “给定:X 月的所有付款都已支付”。这会产生大量数据库流量,因为每个场景都需要创建和销毁测试数据。

是否有更好的方法来存储场景之间的状态并确保场景按所需顺序执行?

最佳答案

依赖场景的执行顺序是一种反模式,应该避免。出于同样的原因,测试运行器通常不提供任何机制来控制执行顺序。这也违反了可执行规范的概念:场景本身应该是可以理解的(并且是可执行的)。

在您的情况下,Given 部分应该为相关计算准备数据,When 应该计算,Then 应该检查单个计算的结果。

为了减少执行时间,也许您可​​以尝试以测试不同方面的方式选择“重要”场景。可能没有必要每个月 1-11 测试。您可以对第一个月度工资单进行一次测试,对第二个月进行一次测试,对结束一整年进行一次测试,对开始新的一年进行一次测试,等等。

这也是一种常见的技术,即 Given 不必以与“真实应用程序”相同的方式(从头开始)完成。有时你可以在测试中做一些捷径,以更快更容易地确保先决条件。例如。如果您的方案需要计算下个月的所有内容,您可以指定上个月的总和(而不是让应用程序从头开始计算所有内容)。当然,您必须知道自己在做什么,并且必须考虑伪造应用程序的某些方面所涉及的风险。

关于testing - Specflow - "scenarios"之间的状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7158810/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com