gpt4 book ai didi

testing - 从串行运行 Selenium 测试到并行运行时处理测试数据

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

我想开始并行运行我现有的 Selenium 测试,但由于我当前测试的编写方式,我无法决定最佳方法。

我的大多数测试的第一步是让数据库进入干净状态,然后用其余测试所需的数据填充它。虽然这非常适合将测试彼此隔离,但如果我开始在同一个 SUT 上并行运行这些相同的 Selenium 测试,它们最终将删除其他测试的数据。

经过大量挖掘,我无法找到任何关于如何处理这种情况的指导或最佳实践。我想到了一些想法,但没有一个让我觉得特别棒:

  1. 重写测试以不覆盖其他测试的数据,即只添加测试数据,从不删除——我认为这可能会导致意外故障,因为在运行每个测试时数据库的可变性。从不同的测试顺序到位置不当的故障,任何事情都可能会影响其他测试。这只是感觉不对。

  2. 不要预先填充数据库——而是通过 Selenium 本身创建所有需要的数据。这将最能复制真实世界的使用情况,但也会比将数据直接加载到数据库中花费更长的时间。这可能会抵消并行化带来的任何好处,具体取决于每个测试用例需要多少测试数据。

  3. 让每个 Selenium 节点测试 SUT 的不同副本 -- 这样,每个测试都可以随意对数据库进行操作,因为我们假设没有其他测试同时接触它时间。缺点是我需要设置多个数据库,并且在每个测试用例开始时,弄清楚如何协调要初始化的数据库以及如何向节点和 SUT 发出信号表明该特定测试用例应该使用它特定的数据库。不是很糟糕,但如果有更好的方法的话,这不是我愿意做的事情。

  4. 让每个 Selenium 节点测试 SUT 的不同副本,但在运行时之前将测试分成不同的套件,每个节点一个套件——这也是可行的,但随着时间的推移,您会变得不那么灵活d 想尽可能地往回走,甚至每个套房的长度。

总而言之,这些似乎都不是明显的赢家。选项 3 似乎是最合理的,但我也怀疑这是否是一种可行的方法。经过一番研究后,看起来我需要编写一个自定义测试运行器来促进并行运行测试,但是关于初始测试数据的部分仍然让我寻找更好的方法。

在并行运行 Selenium 测试时,有人有更好的方法来处理数据库初始化吗?

FWIW,应用程序和测试套件在 PHP/PHPUnit 中。

更新

因为听起来我正在寻找的答案非常依赖于项目,所以我至少会尝试提出我自己的解决方案并报告我的发现。

最佳答案

没有简单的答案,看起来您已经想出了大部分答案。同样值得考虑的是重写测试以使用单独分区的数据——这可能会或可能不会工作,具体取决于您的域(例如,如果它是银行应用程序,则每个节点一个单独的银行帐户)。您对数据库的预填充可能仅限于静态引用数据,或者您可以为每个单独的“帐户”预填充数据。同样,这取决于对您的数据执行此操作的难易程度。

不过,我倾向于投 3 票,因为如今编写数据库设置脚本相对容易,而且对于小型测试数据套件而言,硬件要求可能不会太高。

关于testing - 从串行运行 Selenium 测试到并行运行时处理测试数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9905002/

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