当您不知道URL将提前是什么时,您会如何对动态网站进行压力测试?

时间:2010-11-19 03:18:10

标签: jmeter load-testing stress-testing selenium-grid

这不是什么压力测试工具的问题。我担心这比那要难得多。 (至少对我来说)

考虑为论坛或博客提供一个宁静的架构,为每个帖子生成随机ID。

模拟创建这些主题/文章很简单,因为您只需将表单数据发布到端点,例如:/article/topic

但是,您如何对这些文章/主题进行评论?这是不同的,因为评论需要属于文章/主题,这意味着您需要这些项目的ID。但是,如果您只能发布帖子,并且无法提取这些ID,那么您将无法创建它们。

我正在创建一个在这方面类似的网站,我不知道如何压力测试评论的创建。

我有两个想法,但它们都非常糟糕:

  1. 使用某种工厂提前生成一个庞大的系统,然后将其冻结。从那里开始,我认为我必须使用某种浏览器自动化来创建所有这些的“评论”。我认为自动化通过记录代理,就像JMeter提供的那样。然后,为了运行测试,我重新加载数据库,并重放大量日志文件。
  2. 利用浏览器自动化功能,充分利用HTML页面中提供的动态链接。这里唯一的选择是Selenium,实际上,我们正在谈论一个非常昂贵的大型硒网格。可能也很难维护。
  3. 我可以说,选项2是完全不可行的,但选项1听起来很难忍受。我真的希望有人可以提出更聪明的建议。

3 个答案:

答案 0 :(得分:3)

选项1。

我的意思是,除了实施说明之外,你基本上只是要求一个测试环境。所以,答案是制作一个。无论如何:

  • 生成它
  • 制作一次并重新加载
  • 随机化

无论。这是采用的方法。

您的测试如何成为一个侧面问题(单元测试/浏览器/无论如何,由您决定)。

但是你已经达到了需要用真实数据进行测试的程度。所以要实现它。

答案 1 :(得分:3)

这是一个常见问题。我们通过从服务器响应中提取URL的动态部分来处理它。我认为这个系统使用Web浏览器客户端 - 这意味着这些URL正在服务器响应中发送。如果他们在回复中,那么你可以得到它们。但是,既然你说“如果所有你能做的就是发帖,而你无法拉动那些ids”,那么也许情况并非如此?在那种情况下,你能澄清一下吗?

我们最近为我们的客户进行了大量的Drupal系统测试 - 这正是您所描述的问题。我们要么通过在用户浏览他们想要评论的页面时动态地从页面中提取ID来解决它,要么我们使用选项1或两者的组合。请注意,如果您有一个方便的负载测试工具,那么生成内容并不太难 - 使用该工具来执行此操作。即运行“内容生成”负载测试。除了自己产生有用的数据外,还会为您提供一个测试数据库,然后您可以根据需要进行备份/恢复以维护测试基础架构。现在,您可以在更现实的环境中运行测试 - 该环境中已包含大量内容(当然,假设此 符合您的目的)。

如果您有兴趣,我很乐意演示如何使用我们的软件(Web Performance Load Tester)解决问题。

答案 2 :(得分:0)

我使用Visual Studio来解决这类问题。 Visual Studio允许C#编码的Web测试,它可以以编程方式解析返回的html并根据该操作采取操作。

我正在加载测试SharePoint网站,并且需要提前填充所需的信息。我确实创建了一个负载测试,专门用于提前创建“随机”内容页面。我提前填充了一个带有URL的测试工具数据库,允许对已加载的页面进行一些控制。

通过可用的“文章”列表和潜在注释列表,可以编写伪随机数生成器(由于测试工具的异步性质,在存储过程内部)以获得可重复的负载测试。这意味着每次运行负载测试时都会以相同的方式填充站点。

需要花费一些精力来创建一种不错的方式来填充网站,但是负载测试的相关性的回报非常好。