AJAX 应用负载测试
为您的 AJAX 应用创建用户场景脚本,以检查用户在负载下的行为,识别问题并验证性能。
内容概览
那些参与过 AJAX(异步 JavaScript 和 XML)网页应用负载测试的人员都知道,这通常是一个具有挑战性的开发和自动化任务。本文将提供有关 AJAX 开发技术的背景知识,AJAX 的优缺点,以及推荐的 AJAX 性能测试方法。
几十年前,网页和应用程序虽然非常简单,但极其轻量,易于维护,与现今使用的网页应用框架相比,测试性也非常好。用户常常在空白屏幕前等待的时间远多于与这些早期网页应用的互动时间。由于可用性有限,企业往往避免在新的基于网页的服务上投入资金。
从2005年起,一项名为 AJAX 的新技术使开发人员能够构建现代网站,大幅减少用户等待页面加载时的空白屏幕时间。AJAX 是一个缩写,代表其不仅仅是一种技术,它包含了 HTML、CSS、JavaScript、XMLHttpRequest 和服务器端脚本语言(如 PHP)。
在互联网时代初期,内容丰富和交互式网页非常不流行,因为没有办法局部更新网页,必须重新加载整个页面。随着新技术和技术的不断发展,AJAX 填补了这一空白,引入了异步数据加载的概念,使最终用户可以在后台加载数据时与页面进行交互。如今,这一概念得到了广泛应用,因为它允许实现互动和动态的网页应用,从而增强整体用户体验。
一个典型的 AJAX 请求包含以下流程:
- 用户点击网页或网页应用。
- 该网页的处理程序创建一个 XMLHttpRequest 对象。
- XMLHttpRequest 对象从服务器请求文档。
- 服务器检索相应数据并返回。
- XMLHttpRequest 触发事件通知网页或应用数据已到达。
- 处理程序处理并显示数据。
2026 更新:AJAX 风格的异步行为仍被现代网络应用广泛使用,特别是在 API 和动态前端框架中。负载测试应模拟真实浏览器交互,以准确捕捉后台请求和用户操作在负载下的行为。
使用 AJAX 应用程序面临哪些挑战?
动态 AJAX 基础网页应用存在一些常见的陷阱,这些问题在开发者群体中已广为人知。我们将在下文介绍一些较为棘手的 AJAX 问题。
首先,如上所述,AJAX 的组成部分之一是 JavaScript。如果你在浏览器中禁用 JavaScript,你的应用程序或网站将无法使用。几年前,企业常为安全考虑禁用员工浏览器中的 JavaScript,这种做法虽已过时,但仍需注意,这类更改可能会产生意想不到的后果。
其次,动态加载并显示的数据并非页面内容的一部分,尤其是对于单页面应用(SPA)创建的页面而言。若搜索引擎索引了你的基于 AJAX 的网页,结果从 SEO 角度来看可能令人不满意,因为大量内容对索引引擎不可见。
第三,持续的动态页面更新可能会打扰注意力不集中的用户。页面上的动态元素越多,用户被打断的概率越高,导致无法在合理时间内完成任务。
最后,由于基于回调的客户端-服务器通信,延迟可能比其他技术(如 WebSockets)高出数倍。客户端不断拉取数据更新,这对自动化测试也是一个挑战。
AJAX 负载测试:用户模拟技术
负载测试专家和性能工程师负责选择合适的用户模拟方法,既要适合被测应用,也要避免产生过高的工作量。选错模拟方法,很可能无法识别应用中的性能瓶颈。
下面我们将讨论两种用户模拟方法。
基于协议的请求与响应模拟
大多数开源及商用负载测试工具支持该方法。通过记录客户端和服务器的交互,测试工具将所有请求和响应捕获成测试脚本。对动态数据,如会话 ID 或测试输入数据参数化后,脚本即可用于模拟对后端系统的负载。需要注意的是,客户端处理或交互不包含在协议级的响应时间测量中。
基于浏览器的真实用户交互完全模拟
市场上仅有部分更为全面的负载测试解决方案支持基于浏览器的完整负载测试模拟。这是因为系统资源需求较高,且实现可靠回放存在一定难度。创建用于基于浏览器用户模拟的测试脚本与基于协议的方法类似,但需要录制并保存所有客户端交互。
测试人员或工程师在浏览网页或应用时,脚本录制器捕获浏览器中的所有交互。测试执行时,使用无头浏览器执行录制的交互,并像真实用户一样响应服务器回调。这种用户模拟非常准确,能提供真实的前端性能指标。
第一种模拟方法适用于静态网页,负载注入端机器的资源开销低且易于实施。第二种方法能提供准确的端到端响应时间,但对负载测试服务器的资源需求更高。那么,如何选择最适合用来测试 AJAX 应用或页面的用户模拟方法呢?
AJAX 负载测试实践
什么是最好的AJAX 负载测试方法?如何验证你的选择?如果不确定哪种方法准确,进行小型实验是个好办法。
本示例选用 ajaxsearchpro.com 的 AJAX 示例应用,展示两种负载测试实现。该演示应用是一个简单的搜索引擎。假设用户在搜索框输入关键词,匹配内容即时显示。按回车或点击搜索按钮后,将执行最终搜索并显示相应搜索结果。下图用 Chrome 浏览器开发者工具捕获的瀑布图显示,“car”搜索请求的响应时间为 2.2 秒。

我们使用 Chrome 浏览器的开发者工具,发现搜索动作触发以下请求:ajaxsearchpro.com/?s=car
我们创建了基于协议和基于浏览器的负载测试脚本,执行并对比两个测试结果。你认为哪种用户模拟更适合 AJAX 应用?
基于协议的 AJAX 负载测试脚本
| 脚本步骤: | https://ajaxsearchpro.com/?s=car | 响应时间: | 594 毫秒 |
| 模拟方法: | 协议层面,Chrome | 请求数: | 1 |
瀑布图
基于浏览器的 AJAX 负载测试脚本
| 脚本步骤: | https://ajaxsearchpro.com/?s=car | 响应时间: | 2.18 秒 |
| 模拟方法: | 协议层面,Chrome | 请求数: | 32 |
瀑布图
两种模拟方法的比较
由于其异步通信模式,基于 AJAX的应用不能仅在协议层自动化。只有基于真实浏览器的模拟才能提供准确结果,并对你的后端系统施加真实的负载。
考虑对我们ajaxsearchpro.com演示应用进行负载测试,设置为100位并发用户、每小时10,000次搜索。如果采用基于协议的模拟,则会遗漏10000 x 31 = 310,000个请求,显然这会导致负载测试结果完全不准确。
LoadView 方案如何应对 AJAX 负载测试
LoadView 是我们的云端负载测试平台,专为测试所有现代 Web 2.0 应用设计,如 AJAX、Flash、Angular、Knockout、HTML5、jQuery 等。它使用简便,支持录制基于浏览器的全流程场景,并能模拟 40 多种移动或浏览器设备,如 Internet Explorer、Chrome、iPhone、Samsung、Blackberry 等。
如前所述,许多负载测试解决方案仅提供协议层用户模拟,这远远不够。你可以通过协议级测试施加后端压力,但大量客户端-服务器请求和客户端处理被忽略。LoadView 平台为你提供准确用户模拟所需的一切。
使用 LoadView 运行基于 AJAX 负载测试的五个步骤
1. 录制你的 AJAX 应用
你可以使用 EveryStep Web Recorder 手动浏览你的 AJAX 应用。EveryStep 会记录所有操作,并允许你添加计时或验证步骤。录制并生成脚本后,你可以执行单用户试运行或上传录制到平台以创建负载测试设备。
2. 校准
负载注入机器的分配通常靠猜测。异常的负载生成机器会扭曲测试结果。LoadView 会执行设备的单用户测试,计算每台负载注入机最大用户数,此步骤避免过载机器影响应用响应时间。
3. 执行计划
用户量通常随业务日变化。执行计划功能满足此需求,赋予你建模现实负载测试场景的全部灵活性。
4. 虚拟用户分布
LoadView 允许你选择遍布全球的负载注入机器,选取代表用户常用地区的机器。
5. 运行测试并查看结果
最后一步启动负载测试执行。在线视图可实时了解 AJAX 应用负载下的性能表现。测试完成后,会收到包含重要关键性能指标的详细报告。
总的来说,LoadView 满足现代负载测试平台的所有需求,简化测试自动化挑战,助你模拟复杂业务应用的真实生产环境负载。欲了解更多 LoadView 信息,请访问 LoadView 官网。有关更深入技术信息和视频,请访问我们的 知识库。
想体验实时演示?预约演示,由我们的性能工程师为你全程讲解 LoadView,从脚本编写、配置负载测试,到执行和后期分析。解决你所有负载测试疑问!
使用的工具
LoadView:Dotcom-Monitor 提供的云端负载测试平台
EveryStep Web Recorder:基于网页的点击式脚本录制工具
Chrome Developer Tools:内置于 Chrome 浏览器的开发者工具
欲了解更多关于 Dotcom-Monitor 平台及监控解决方案信息,请访问 www.dotcom-monitor.com

