使用 JMeter 复制浏览器和用户行为

Replicate browser and user behavior with JMeter

我是 JMeter 的新手,想深入了解如何在 JMeter 中复制浏览器和用户行为。 使用 JMeter 测试 Web 应用程序时的最佳实践是什么(主要针对 httpd、php、angular 等)

即从一些阅读文档中我应该使用计时器来延迟每个采样器以获得更实际的用例

在阅读了 JMeter 文档后,我仍然对以下内容有些困惑:

HTTP请求配置:
- 我们应该使用 Java 而不是 HTTPClient4 吗?
- 我们应该从 HTML 文件中启用嵌入式资源吗?

Cookie 管理器:
- 我们应该在每次迭代时保留还是清除 cookie

缓存管理器:
- 我们应该在每次迭代时清除缓存还是保留它? - 我们应该使用 cache-control header 吗? - 缓存中最大元素数的最佳值是多少?

我应该把缓存管理器、cookies管理器放在哪里?
如果我有超过 1 个线程组,是否在测试计划或线程组下?

如何在 JMeter 采样器或 header 管理器中配置 keepalive?

我的用例是复制 10 个并发唯一用户访问 Web 应用程序

HTTP请求配置:

Cookie 管理器:

  • 我们应该在每次迭代中保留还是清除 cookie 取决于您的情况,例如,如果它从登录开始并以注销结束 - 清除 cookie 以表示 "clean" 是有意义的session

缓存管理器:

  • 我们应该在每次迭代时清除缓存还是保留它? 取决于你的场景,比如 Cookie Manager
  • 我们应该使用 cache-control header 吗? 取决于缓存在被测应用程序中的实现方式
  • 缓存中最大元素数的最佳值是多少? 在您的应用程序中保留所有可缓存的内容需要足够。您可以清除 Chrome 浏览器缓存,手动执行您的测试场景,打开 chrome://net-internals/#httpCache URL 并查看您有多少 Entries。将此设置修改为等于或多一点

我应该把缓存管理器、cookies管理器放在哪里? 如果我有超过 1 个线程组,是否在测试计划或线程组下? 这些 "managers" 服从 JMeter Scoping Rules,如果你把它们放在测试计划下 - 它们将应用于所有线程组,如果您将它们放在线程组下 - 它们将仅应用于当前线程组

如何在 JMeter 采样器或 header 管理器中配置 keepalive? - 如果您在 HTTP 请求采样器下勾选 Use KeepAlive - 它会自动添加 Connection: keep-alive header。如果取消选中它 - JMeter 将发送 Connection: close header。不要使用 HTTP Header Manager 来修改 Connection header value