Automated tests 如何设计数据驱动的依赖场景测试?

Automated tests 如何设计数据驱动的依赖场景测试?,automated-tests,karate,Automated Tests,Karate,我了解到编写依赖测试场景不是最佳实践。 但是,如果应用程序是高度数据驱动的,并且操作(创建、多个更新流、逻辑删除)数据,该怎么办呢。基本上,我们希望尽量减少: 为每个相关场景创建测试数据(例如,更新需要先创建数据) 重新执行步骤 总体测试套件执行时间 问题:为了控制线程的执行,我可以扩展处理@parallel=false的空手道核心类,并添加考虑“取决于场景”的自定义代码吗?有更好的/替代的设计吗?请建议 例如: 场景1:创建T1、T2[并行] 场景2:创建T3[并行] 场景3:创建R1(T1

我了解到编写依赖测试场景不是最佳实践。 但是,如果应用程序是高度数据驱动的,并且操作(创建、多个更新流、逻辑删除)数据,该怎么办呢。基本上,我们希望尽量减少:

  • 为每个相关场景创建测试数据(例如,更新需要先创建数据)
  • 重新执行步骤
  • 总体测试套件执行时间
  • 问题:为了控制线程的执行,我可以扩展处理@parallel=false的空手道核心类,并添加考虑“取决于场景”的自定义代码吗?有更好的/替代的设计吗?请建议

    例如:

    • 场景1:创建T1、T2[并行]
    • 场景2:创建T3[并行]
    • 场景3:创建R1(T1和T2之间的关系),更新 T1,T2[顺序:等待到1]
    • 场景4:创建R2(T1和T3之间的关系),用于更新 T1,T3[顺序:等待至1,2]
    • 场景5:删除更新T1、T2的R1[顺序:等待,直到 1,3]
    • 场景6:删除T1,删除R1、R2[顺序:等待,直到 1,4,5]
      • 没有“魔法”,你必须:

        a) 编写在开始时设置数据的“流”(这就是
        后台的作用)并测试所有预期条件

        b) 编写“智能”且不受数据库启动状态影响的测试。例如,执行GET,查看已有多少客户,然后计算预期数量。但这可能会受到并行线程的影响,除非每个线程设计用于不同的客户集(按组织划分)

        作为提醒,请阅读以下内容:


        我获得了空手道提供的各种选项,包括背景、呼叫、呼叫,这些选项有助于设置数据。对于上面的b)点,我想要的是在并行运行的同时对场景的执行进行一些“控制”。例如,Scenario3会等待Secnario1完成。我在上面的原始帖子中的示例我知道空手道开箱即用不提供此控件,但我可以扩展空手道核心类(com.intuit.Karate.core.FeatureExecutionUnit.java等)并实现场景之间的控制逻辑?@jyohas假设我的答案是否定的,但这实际上取决于你对java的熟练程度:)还有其他问题吗?我们利用java.util.concurrent.Phaser做了类似的“控制场景执行”,但这是在Cucumber之上实现的。但是现在,我们喜欢(因为它为我们的RESTAPI微服务测试提供了所有现成的好东西)空手道,并且希望继续使用它,只是尝试看看我们是否可以做这个“控制场景执行”并且只在需要时使用它。任何关于如何/哪些类可以扩展/覆盖的见解都会有所帮助。Thanks@jyohas不,我不鼓励这样做,也没有时间给你这些见解。正确的做法是使用空手道,因为它很简单。如果您有不应该冲突的场景,请将它们放在同一功能中,并使用
        @parallel=false
        标记。除此之外,下一个最好的正确做法是改变空手道,使之适合你——但在我看来,你不太可能有其他球队没有的“特殊”情况。为此,您需要理解代码,以便可以尝试。祝你一切顺利