为了更好地解释,如果测试 B 依赖于测试 A,那么
- 如果测试 A 失败,则测试 B 不应运行并隐式失败
- 如果测试 A 产生一些输出,那么它应该可用于测试 B
我明白为什么这对应该单独运行的单元测试不利,但我在考虑系统测试,这些是常见的不可避免的场景,它可能是需要许多步骤的长测试的更好替代方案。我正在考虑像构建文件或 Ant(目标扮演测试角色)这样的东西。
这是一个可怕的想法吗?如果是,是否有支持这种测试风格的测试框架?如果没有,我忽略了哪些问题?
为了更好地解释,如果测试 B 依赖于测试 A,那么
我明白为什么这对应该单独运行的单元测试不利,但我在考虑系统测试,这些是常见的不可避免的场景,它可能是需要许多步骤的长测试的更好替代方案。我正在考虑像构建文件或 Ant(目标扮演测试角色)这样的东西。
这是一个可怕的想法吗?如果是,是否有支持这种测试风格的测试框架?如果没有,我忽略了哪些问题?
有支持这一点的工具。SmartBear 的 TestComplete 可以 - 您可以配置为在失败后继续或在失败后停止 - 您将在下面找到一些关于我以前雇主的团队如何使用 TestComplete 处理依赖测试的详细信息。
我不认为这是一个糟糕的主意——我主要使用大型、复杂的应用程序,在这些应用程序中让每个测试独立是不可行的。
以下是您希望使用一系列相关测试的一些原因:
我已经对这些点中的每一点都正确的应用程序做了很多工作——毫不奇怪,我们使用了很多依赖测试。在我们的案例中,每周运行一次 3 小时的配置脚本来设置所有内容(因为这比每天运行多达 90 分钟配置的 30 多个测试套件中的每一个更有效,并且重点我们的自动化是事务处理而不是配置),然后是每个测试套件的通用启动例程,该例程将从已知位置复制数据库和文件备份,恢复数据库备份,解压缩文件备份,安装目标构建正在测试的应用程序,设置所需的专门权限,然后运行应用程序。这通常需要大约 40 分钟。
即使有大量虚拟机和物理机,并且回归脚本尽可能高效,也无法在每台机器上运行一个套件,因此团队依赖相关测试并定义哪些类型的故障是致命的——对于致命的失败,我们将脚本配置为停止,执行拆卸,并在完全关闭之前发送电子邮件。
微软的 CodedUI 框架根本不支持这种风格。我对任何其他框架都不太了解,无法发表意见。
我不认为这是一个糟糕的主意,@Kate Paulk 已经提供了足够的理由说明为什么不是这样。
至于支持这种测试风格的工具。我不认为对此类功能的内置支持应该是选择测试框架\工具的主要标准,因为您始终可以自己实现这一点。例如: