使用 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请求配置:
- 我们应该使用 Java 而不是 HTTPClient4 吗? - 推荐的实现是 HTTPClient4,这样你就可以使用 DNS Cache Manager, HTTP Authorization Manager Kerberos 等
- 我们应该从 HTML 文件中启用嵌入式资源吗? - 当然,但请务必排除 "external" 与您的应用程序无关的内容,即驻留在其他域中的字体或脚本。有关详细信息,请参阅 Web Testing with JMeter: How To Properly Handle Embedded Resources in HTML Responses。
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
我是 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请求配置:
- 我们应该使用 Java 而不是 HTTPClient4 吗? - 推荐的实现是 HTTPClient4,这样你就可以使用 DNS Cache Manager, HTTP Authorization Manager Kerberos 等
- 我们应该从 HTML 文件中启用嵌入式资源吗? - 当然,但请务必排除 "external" 与您的应用程序无关的内容,即驻留在其他域中的字体或脚本。有关详细信息,请参阅 Web Testing with JMeter: How To Properly Handle Embedded Resources in HTML Responses。
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