我有一个使用selenium和testng的项目。我尝试了selenium grid并设法并行运行测试。
然而,并行运行2个以上的测试效率不高,实际上在同一台机器上并行运行3个测试用例的速度较慢,原因是网络速度较慢,cpu最大。 (在谷歌虚拟机上试过)。
任何一个设法有效地运行+3测试用例,如果有的话,任何提示。由于成本问题,我不想在当前点使用多个虚拟机。
答案 0 :(得分:0)
您面临的问题不是Selenium,而是您正在运行测试的系统性能有限。
Selenium有一个很好的方法来优雅地处理这个问题。您可以在远程计算机上运行脚本。是的,机器是复数,它全部由硒本身处理。确切地说,它由Selenium Grid处理。要开始使用selenium网格,您可以点击上面提供的链接,这应该对您有所帮助。
作为额外奖励,请尝试阅读BrowserStack。它具有可根据您的需求轻松扩展的优势,并且能够在几乎任何可用的设备和浏览器上运行测试,并具有版本控制功能。不,我不为他们工作。
答案 1 :(得分:0)
不幸的是,
我能看到的唯一方法是让测试更小,并使测试的数量更小并且在更大的时间范围内扩散。
我建议可能使用一个额外的VM,它会产生的影响是有益的。
如上所述,Selenium Grid非常出色,所以我会给你另一个解决方案。
您可以使用也可以使用的Jenkins。
在我的环境中,我有4个工作岗位。
其中3个作业指向TestNG XML文件,以运行文件中指定的任何测试。
然后我又做了另一份工作,称为Build Flow工作。此作业指向其他3个作业并执行它们,但是并行执行它们。
与Selenium Grid相比,我发现它更容易实现。它还为您提供了更多控制(我相信),因为您可以对测试的每个阶段进行概述和控制。变化也很容易。
如果您想了解更多详细信息,请告诉我,我可以编辑此答案,使其更像是“操作方法”而不是提供信息的答案。
同样使用Jenkins,您可以使用主/从方法,这也可以让您在VM之间分配工作负载,如果您可以在资源允许的情况下使用其他VM,这将非常有用。
目前我认为解决问题的唯一方法是分配更多内存/另一个VM,或者只是为了减少并行运行的测试数量,并将它们分散到多个批次/运行中但是如果你试图匹配某个时间窗口(这是我必须做的事情)它可能不合适。