我有一个具有登录/密码授权的Web界面系统。我需要提出一个自动化测试,包括同时运行100个测试。每个测试都将使用不同的用户名/用户密码对。例如,user1 / PaSsWord1,user2 / PaSsWord2,...,user100 / PaSsWord100。登录后,用户应该执行相同的操作。
由于某些原因,我不能在这里使用系统API和单元测试。我真的需要提出基于UI的测试。浏览器的类型(FF,IE,Chrome)无关紧要。
所以我想使用WebDriver。用Groovy说。我没有自动登录和执行操作的问题。我可以轻松地将它们参数化以使用不同的用户/密码。但我想知道如何在同一台机器上同时组织运行100个测试?。它可行吗?是否有策略/方法来做这种被证明是成功的事情?有什么想法吗?
谢谢, 浣熊
答案 0 :(得分:3)
我不会在这里提供任何答案,而是让你思考可以做些什么的想法。
首先,您将无法在本地运行此测试。想想如果你在Chrome中打开100个标签会发生什么。你的系统会崩溃。设置一个Selenium hub & Node system(称为网格),可以支持100个RemoteWebDriver实例。基本上,网格是您的控制器,它提供它所知道的节点所拥有的可用驱动程序。 Sauce labs是这样做的一种方式。
现在困难的部分是创建将产生许多线程的测试。这里有一些伪代码来展示简单的方法。我不确定线程有什么样的限制。即使你说你想要那么多,它实际上可能实际上一次只创建10个左右的线程,所以这可能不会起作用。
public void Test()
{
threads (100) execute
{
try
{
spawn new remote web driver instance
run test
}
finally
{
quit driver instance
//in finally block since you want the driver to always close
//even on assert fails or exceptions
}
}
}
如果你的盒子可以处理它,这里是executing 100 or so scripts at the same time的linux / cygwin方式。您可以将测试编写为只有一个测试,然后并行执行100次。