1

我可以使用LiveServerTestCase在 Django 1.4 上为一个用户/按顺序运行我的 Selenium 测试,但我想模拟并行多用户测试。我认为我不需要真正的负载测试,因为我的应用程序大多是中等/低流量的网站和内部网络应用程序,所以我宁愿避免使用 JMeter 等额外的工具。

我已经开始设置Selenium Grid,但不知道如何让我的测试保持独立并仍然与多个用户一起运行多个测试。我假设测试用例应该同时在同一个数据库上为不同的用户运行——但是每个测试都会删除并创建一个新的数据库,所以我不明白这是怎么可能的。

而且我不想注册像BrowserMob这样的服务。

4

2 回答 2

0

出于几个不同的原因,我建议使用 JMeter 之类的工具:

  1. 如果您想在多个用户同时访问服务时测试没有错误,则不能保证会同时运行两个或多个自动化 selenium 测试,因为这可能需要相当长的时间在请求实际发送到服务器之前执行任何操作。当使用像 jmeter 这样可以同时发送多个请求而请求之间几乎没有延迟的工具时,您更有可能遇到这类错误。您还可以轻松地同时执行比 Selenium 更多的 jmeter 线程。
  2. 如果你真的想测试你的网站的性能,或者你的网站在超过正常负载下的行为,你可以使用 jmeter 等工具更容易地做到这一点。

话虽如此,如果您真的想为此使用 Selenium,我知道 Selenium2/Webdriver 相当简单,但是我对 Selenium Grid 不够熟悉,无法提供有关那里需要什么的指导。

于 2012-04-24T20:32:58.763 回答
0

我想我明白了这一点,但欢迎更多(可能更优雅)的解决方案。

我正在运行“干净”和“脏”测试。“干净”测试只是普通的 Selenium 测试,每次测试后都会设置和拆除数据库。“脏”测试是通过将选项传递给我的子类 DjangoTestSuiteRunner 来运行的,该选项告诉它是否设置或拆除数据库,并传入用户 ID,如下所示:

python manage.py test myapp --testrunner=testrunner.MySeleniumTestRunner \ 
    --no_setup_db --no_teardown_db --user=1234 --liveserver=localhost:8081

然后,我在一个 shell 脚本中将大约 10 个这些命令串在一起并记录输出。

唯一棘手的部分是以同时考虑这两种测试的方式编写测试。因此,例如,如果我只是在干净测试中将产品添加到购物车并检查购物车中的商品以表明成功,那么我还需要添加一个条件来检查产品可用性等内容。因此,当我运行我的脏测试时,如果只有四个产品可用,那么前四个用户是成功的,因为该产品可用并且我验证该产品已添加到他们的购物车 - 但第五个用户通过了测试,因为当产品不可用我检查是否有正确的错误处理等。

我知道这不是很像单元测试,甚至可能是功能测试的非标准测试,但我认为它很好地模拟了并行多用户测试,而不会影响测试独立性。

于 2012-04-28T00:44:16.480 回答