14

我正在开发一个网站(基本上是一个面向公众的网站)。如何模拟多个用户正在浏览我的网站并进行各种活动,以便我可以了解我的网站在实时环境中的行为方式?

我正在使用 Apache 服务器和 PHP。

4

8 回答 8

9

如前文所述,您将需要一个负载测试工具。好消息是这个领域有很多工具和服务:开源的负载测试,如 JMeter 和 Gatling,商业的如 Loadrunner 和 Neoload,坏消息是你必须回答一些问题并做出一些决定。

您需要做出的一项关键决定是在实验室还是在云中测试您的应用程序。

  • 基于云的测试:Blazemeter、soasta、neustar ...
  • 实验室测试:JMeter、Gatling、Neoload、loadrunner、webperformer ....

此外,您需要回答以下问题:

  • 你想模拟多少虚拟客户端来给服务器施加压力

  • 你有多少预算

  • Web 应用程序有多复杂

  • 测试人员有多少技能。

如果您有高预算、复杂的 Web 应用程序和具有良好技能的测试人员(如开发人员),您可以考虑 Loadrunner、NeoLoad。

如果您的预算较低,但您的测试人员有很好的技能,您可以考虑 Jmeter 和 Gating。

如果您需要模拟大量虚拟客户端(例如 10000 个)来强调您的复杂网站,并且您的测试人员没有开发人员/程序员的技能,您可能需要考虑NetGend。有一个博客站点,您可以在其中了解性能测试的复杂程度(例如填写 HTML 表单、从 JSON 消息中提取值等)以及在 NetGend 平台上测试的简单程度。顺便说一句,您不需要为 NetGend 提供高预算。

在您的负载/性能测试中祝您好运!

于 2014-01-12T23:56:36.833 回答
2

由于这是您第一次参与这项任务,因此建议您找一个曾经去过那里、做过并在这项活动中留下战斗伤痕的人。对软件进行性能测试并非易事。如果您听听传统软件供应商的意见,他们会告诉您“任何业务分析师都可以使用此工具并有效”,就好像该工具是您成功测试应用程序性能所需技能的 85-95% 或网站。这是营销 foo 以消除销售障碍。

实际上,您选择的工具占您成功所需的全部技能的 5-15%。此外,如果失败的财务风险高到足以保证进行性能测试,那么您选择哪种工具几乎无关紧要,因为工具的成本和专业知识将与您无法扩展的财务风险相形见绌。

如果您没有时间开发技能或没有足够的准备时间来获得可靠的性能测试员,那么您可能需要考虑市场上的一些托管服务产品,例如 SOASTA,它可以提供专业知识和捆绑的工具交易内。以下是您在任何测试之前需要查看的一些事项(常见问题)

  • 负载均衡器配置错误导致一个节点的负载失真
  • 未适当管理静态资源(.jpg、.css、...)的缓存期限,导致负载高于预期
  • 您对数据库的所有查找查询都应该进行索引优化。使用数据库探查器检查这一点
  • 持有资源的时间过长。如果您的第 95 个百分位页面到页面请求延迟为 5 分钟,则不要将 HTTP 会话的超时设置为 30 分钟或 90 分钟。对于死会话,这将占用太长时间的资源。我使用 95% 值乘以 1.5 的经验法则。
  • 如果这是一个购物网站,那么不要将默认购物车分发给出现的每个人。在您将购物车交给他们之前,请确保他们处于收入路径上,例如查看购物车或在购物车中放置一些东西。否则,您刚刚与每个客户以及从 Web 服务器到应用程序服务器再到创建和管理购物车的数据库服务器的每一部分架构都建立了 1:1 的关系
  • 同样在购物车前面,实施 100x100 规则。如果有人在购物车中有 100 件商品,请拿起电话并打电话给他们进行个性化销售。如果您有永不过期的持久购物车,请考虑实施 100 天规则,以从该年龄的购物车物品中撤出或完全杀死该期间未触及的购物车。这些人显然不在收入之路上。
  • 考虑您的电子商务设计。添加到购物车和结帐之间的每一步都是放弃销售的机会。步骤越少,转化率就越高:这就是亚马逊一键结账背后的天才。最大限度地减少您的步骤数量,您将看到更高的收入流。
于 2014-01-03T15:49:34.700 回答
2

你想要的是一个负载测试工具,有几个但 id check out Neoload。您还可以使用Selenium和各种自动运行 selenium 测试的方法

于 2013-10-10T08:00:19.987 回答
1

为测试工具评估设置一些维度以模拟用户流量很重要:

  • SLA 详细信息(性能目标,例如每秒页面数 (PPS)、每秒 http 请求数 (HPS)、吞吐量、CPU 使用率等)
  • 要模拟的虚拟用户大小(您将需要此信息来确定从 PC/VM 的数量,换句话说,这称为负载生成器,根据虚拟用户数量范围)
  • 脚本变更的维护成本
  • 努力开发和执行测试脚本
  • 测试场景数量
  • 调度需求(您可能需要定期调度工具或按需执行测试)
  • 测试工具许可证和 ROI(投资回报)​​计算的预算(价格、工具专业知识成本、测试工具在其他 Web 应用程序上的利用率等)
  • 测试工具提供的指标
  • 监控网络、服务器和客户端的需求
  • 与当前测试基础架构集成(如果存在 HP ALM,您可能对 Loadrunner 感兴趣)

如果您赶时间并且没有时间评估选择哪个工具,您可以从 JMeter 开始。

Selenium 可用于回归测试的测试自动化,我想强调它的 API 对性能测试无效。Sahi 是测试自动化的另一种选择。

于 2014-01-03T14:49:07.543 回答
1

简单的。

  1. 设置服务器/应用程序监控- New Relic 是最简单和最强大的。14天免费。
  2. 记录典型用户的活动- 使用 JMeter 在您的笔记本电脑上设置代理并通过它路由 Web 请求、移动应用程序使用等。听起来很难,但实际上很容易。JMeter 可以充当中间人并捕获浏览器/应用程序向服务器发送的所有请求。
  3. 现在,您可以根据需要/可以多次“克隆”上述用户并炸毁服务器。最初,您将从您的开发机器运行负载测试。在 cpu/ram 用完之前,我的最多可以占用 80 个并发用户。超越这个级别探索 BlazeMeter(免费 50 个并发用户)、jmeter-ec2 脚本(免费)、flood.io 等。上传您的脚本并在您的服务器上爆炸。理想情况下,您应该在服务器上运行增量压力测试。10 个用户、50 个用户、100 个用户、200 个用户等
  4. 分析、解决问题并增加压力- 在每次压力爆炸之间,检查你的新遗物。应用程序和服务器性能如何?什么失败了?警报是如何工作的?
于 2015-04-12T14:31:49.413 回答
1

我认为您肯定在寻找像 Blazemeter 这样的负载测试工具。我最近发现了这个网络研讨会,它向您展示了如何使用 PaaS 提供程序作为开发和运行时环境对您的应用程序进行负载测试,您可以在其中部署您的应用程序以运行负载测试。他们将 Blazemeter 与监控工具(在本例中为 New Relic)相结合,以查看您检测新用户在您的网站上冲浪的方式。这真的很酷也很有趣,因为您可以知道使用特定基础架构的应用程序的性能如何。

于 2014-01-09T07:55:20.660 回答
1

我建议使用 gatling 进行负载测试。它基于 Scala,但提供了一个记录器来生成工作负载测试用例。

=> http://gatling-tool.org/

于 2013-10-10T18:51:09.577 回答
0

如果你也在搜索 UI-Testing,你应该查看 Sahi Pro 6 自动化测试工具,它也可以与 Jenkins 集成。

==> http://sahipro.com/

在任何浏览器上记录用户操作并播放记录的脚本非常容易。您可以在多个浏览器上同时运行脚本,从而模拟多个用户浏览您的页面:

https://sahipro.com/docs/using-sahi/playback-desktop.html#Distributed%20Runs%20-%20More%20Information

于 2015-11-21T04:42:01.490 回答