无论您是拥有一个新网站,还是刚刚开发了一些用户所需的功能,您如何确保当大量用户开始与网站交互时,您的网站能有良好的性能?答案是负载测试。负载测试是性能测试中至关重要的一部分,用于确定网站、应用程序或软件在正常和高峰条件下的表现。负载测试提供有用的数据,可以提升您的网站性能并增加对预期负载条件的稳定性。直到最近,基于协议的负载测试仍是测试网站预期负载条件的唯一方法。随着技术和用户体验不断演进,使用真实的Chrome浏览器让测试人员能利用更逼真的环境来模拟真实用户,从而获得更准确的负载测试结果。现代应用高度依赖动态内容和客户端渲染,这使得基于真实浏览器的测试对于准确测量负载下的用户体验至关重要。

本文将讨论以下三种广泛使用的负载测试方法:

  1. 基于浏览器的负载测试(使用普通的Chrome浏览器)
  2. 无头浏览器负载测试
  3. 基于协议的负载测试

 

基于Chrome浏览器的负载测试

基于浏览器的负载测试通过负载生成器创建普通的Chrome浏览器实例来模拟真实用户,并借助简单脚本导航被测试网站。这构建了一个几乎与现实世界真实用户相同的环境。基于浏览器的负载测试中的虚拟用户称为浏览器级用户(BLU)。基于浏览器的负载测试脚本包含与网站实际导航和交互相关的指令。例如,点击哪个按钮,导航到哪里,输入框中填写什么信息,如何以及何时与某个元素交互等等。这允许测试人员模拟与真实世界场景中极其相似的用户行为路径。

 

基于真实浏览器负载测试的优点

 

用户视角

现实中的最终用户使用浏览器(例如真实的Chrome浏览器)与网站交互。基于浏览器的负载测试允许您使用普通的Chrome浏览器对网站进行负载测试,理解真实用户的行为。这种方法捕捉到真实的渲染行为、网络延迟和前端性能,这是基于协议的测试无法测量的。

 

简单脚本

创建基于浏览器负载测试脚本不需要深入了解底层协议。例如,如果您想创建登录操作,只需填写用户名和密码,以及点击哪个按钮完成登录,而不必了解认证协议等技术细节

 

减少测试复杂度

与其他传统负载测试方法需要传递参数和值不同,基于浏览器的负载测试易于创建和启动,脚本结构简洁明了。

 

前端优化

基于浏览器的负载测试让您收集最准确的真实世界数据,比如网络和请求延迟,因为您的用户也是通过普通浏览器与网站交互。这有助于优化您的前端性能。

 

低维护

简单的脚本和较少复杂的测试意味着更易维护,更加灵活的负载测试。例如,在登录示例中,如果更改了认证协议,登录负载测试无需修改,因为它不受影响。

 

基于真实浏览器负载测试的缺点

 

更高的CPU和内存使用

使用普通Chrome浏览器进行基于浏览器的负载测试时,为创建预期负载的实例需要更高的CPU和内存资源。但如果您使用云端负载测试平台,这通常不成问题。

 

运行时间偶尔较长

基于浏览器的负载测试涉及在浏览器实例中完整渲染网站UI,而不仅是简单的API请求响应记录,这可能比其他负载测试方法耗时更长。但是,运行基于浏览器的测试简单易行,且有优质的云端负载测试工具支持,此缺点可被抵消。

 

无头浏览器负载测试

无头浏览器负载测试是在没有创建“头”或图形用户界面(GUI)的浏览器环境中运行负载测试。这意味着负载测试通过创建不可见的浏览器实例运行,不显示任何界面。无头浏览器负载测试跳过了渲染或绘图操作,因为没有人观看模拟的浏览器。与真实浏览器负载测试相比,它允许您以更少的资源快速运行浏览器环境中的负载测试。例如,无头浏览器包括以下几种:

 

无头Chrome

Chrome浏览器从版本59或更高支持无头模式。它轻量、资源消耗低,可用于导航、收集页面信息、生成PDF和截屏等功能。

 

无头Firefox

Firefox从版本56或更高也支持无头浏览器模式。它可用于与诸如Selenium等测试工具配合进行无头测试和自动化的基础测试。

 

PhantomJS

PhantomJS是一个灵活的无头Webkit,支持许多网络标准。使用JavaScript API编写测试脚本,主要用于导航和断言测试。

 

无头浏览器负载测试的优点

 

资源消耗低

由于浏览器环境中没有渲染GUI,无头浏览器负载测试允许您以更少的资源生成更多负载。

 

浏览器环境下测试更快

采用无头浏览器负载测试,测试执行更快,更能迅速获得结果以尽快修复潜在问题

 

基于浏览器负载测试的缺点

浏览器环境的能力有限

虽然您可以在无头浏览器测试中覆盖很多基于浏览器的场景,但这不足以完整呈现现实使用普通浏览器(如Chrome)的真实用户场景。

 

缺乏浏览器监控

某些测试场景需要观看基于浏览器的测试,比如动画、SPA切换等,以全面分析负载测试。无头浏览器负载测试不具备此功能。

 

基于协议的负载测试

基于协议的负载测试是最传统的负载测试方式,通过在负载服务器上模拟HTTP/S级别的流量。主要用于评估和测试服务器在预期负载下的请求响应交换情况。基于协议的负载测试是一种最基本的负载测试形式,单独使用不适合关注用户体验的复杂 web 应用。

 

基于协议负载测试的优点

资源消耗最低

基于协议的负载测试仅涉及生成HTTP/S请求响应流量,允许使用最少资源产生非常高的负载。

 

执行更快

由于只分析HTTP/S流量以获得协议层级指标,基于协议的负载测试提供更快的测试执行以支持较高的预期负载。

 

基于协议负载测试的缺点

 

测试复杂

基于协议的脚本编写需要深入理解HTTP/S层使用的各种协议,如Oauth登录协议,这使得脚本编写复杂且耗时。

 

环境最不真实

与用户使用像Chrome这样的普通浏览器访问网站的真实世界环境相比,基于协议的负载测试不具备此类能力。对注重用户视角的网站来说,这不是合适的选择

 

不适用于现代网站的能力缺失

现代网站技术栈更复杂,大量使用浏览器端JavaScript和AJAX调用,使得基于协议的负载测试在许多场景下受到限制。

 

LoadView用于基于浏览器的负载测试

基于以上讨论,显然基于浏览器的负载测试是负载测试方法的下一步演进。如今的网站和技术注重丰富的用户体验,强烈依赖浏览器端对内容的解析和渲染,而非服务器端。单页应用(SPAs)广泛使用,采用客户端JavaScript框架和AJAX调用,页面刷新极少或不刷新以更新UI。

LoadView提供基于云端的负载测试,使用真实浏览器如Chrome,为您的负载测试场景创建最真实的环境。通过LoadView,您可以轻松创建脚本以模拟不同用户操作和行为,并几次点击即可运行测试。

 

使用LoadView可以测试的内容

  1. 网站
  2. 单页应用(SPAs)
  3. 第三方服务/API
  4. 媒体丰富的网站,如流媒体服务

 

LoadView用于真实浏览器负载测试的优点和益处

  1. 使用EveryStep Web Recorder轻松创建测试脚本,无需编写一行代码,覆盖所有页面的负载测试。
  2. 支持40多种真实桌面/移动浏览器,使您能在几乎任何设备上测试网页。
  3. 地理分布式负载测试允许您从多个地点测试用户,以获得更贴近实际的测试结果。
  4. LoadView兼容DevOps,提供多条测试曲线,用于测量性能和优化网页应用。

 

总结:基于真实浏览器负载测试的益处

基于浏览器的负载测试对使用现代框架和媒体丰富内容构建的网站是必不可少的。使用拥有超过65%市场份额的真实浏览器如Chrome进行负载测试,可为您提供大量性能数据,助您快速优化网站。然而,负载测试不应只限于Chrome或单一设备。拥有在几乎任何浏览器或设备上从多个地理位置进行测试的能力,将为您提供全面的测试洞察,帮助分析和优化网站以应对预期负载。

立即试用LoadView。 获取免费负载测试,开始您的Chrome浏览器负载测试之旅。