我想测量一个Web应用程序的页面加载时间,最多有10个并发虚拟用户在不同的网站页面上执行操作。我担心Web应用程序页面的渲染时间将远远超过JMeter中测量的时间。
我正在考虑使用JMeter脚本:
- HTTP请求默认值,带有“检索所有嵌入式资源”复选框以及并行下载复选框-用于获取嵌入式资源,如脚本,样式等。从书页上
- HTTP Cookie管理器-用于表示浏览器Cookie,启用基于Cookie的身份验证和维护会话。
- HTTP缓存管理器-用于模拟同一个登录虚拟用户的后续请求从浏览器缓存返回的资源
- HTTP头管理器-表示浏览器头,如User-Agent,Content-Type,encoding等。
但是,我认为这是我可以使用纯JMeter通过在Transaction Controllers下对请求进行分组来确定页面加载时间而获得的最接近真实的页面加载时间的结果。
根据我对问题的理解,仅使用JMeter,页面加载量将是以下各项的总和:
- 请求处理时间+延迟(传输数据时网络花费的时间)
但是,通过模拟浏览器,页面加载将是以下各项的总和:
- 处理时间+延迟+渲染时间
渲染时间包括以下内容:
- 客户端Javascript执行- AJAX 、JS模板等
- CSS变换- 3D矩阵变换、动画等。
- 第三方插件- Facebook喜欢双击广告等。
为了了解这个渲染时间,我想知道是否有更多经验的人认为这是一个很好的做法,只配置9个并发用户进行不同的脚本导航和与网站的交互,然后让另一个线程组中的另一个虚拟用户进行脚本导航,但使用JMeter的Selenium Webdriver插件。
或者,因为它是一个小数字,我应该配置所有用户通过Selenium Webdriver插件运行,并在同一个负载生成器上生成10个浏览器?(使用这种方法,我更关心UI测试的不稳定性和负载生成器机器上的负载)
你觉得呢?任何意见都非常赞赏。
1条答案
按热度按时间67up9zun1#
有两个单独的操作:
1.后端性能测试。假设你有properly configure JMeter to behave like a real browser,你可以模拟它的网络占用空间,并进行实际的负载模式。除了已经应用的配置之外,您可能还希望使用Parallel Controller模拟AJAX请求
1.前端性能测试。渲染只发生在客户端,因此你不需要有一个以上的线程运行真实的的浏览器。此外,负载测试可以完全单独执行,因为它们没有连接。当然,首先你需要在渲染页面之前从服务器获得响应,但是渲染时间,脚本执行时间,web vitals等等只发生在客户端。因此,您可能需要考虑使用Lighthouse或profiler tools which are shipped with your browser developer tools这样的工具来识别和修复客户端瓶颈,然后使用WebDriver Sampler进行回归测试。