fbpx

负载测试 AJAX 应用程序

为 AJAX 应用程序创建用户方案以检查用户行为,
识别问题,并验证负载下的性能。

内容概述

 


 

什么是 AJAX?

 

那些不得不处理基于AJAX的应用程序的负载测试的人已经了解到,这通常是一个令人讨厌的开发和自动化挑战。 本页将提供一些 AJAX 背景,然后是利弊和推荐的 AJAX 性能测试方法。

十五年前,网页是无聊,但非常轻量级,易于维护,他们的可测试性是梦幻般的。 用户通常花更多的时间在白屏前等待,而不是与那些早期的 Web 应用程序交互。 由于可用性有限,企业避免花钱使用基于 Web 的新服务。

从 2005 年起,一项名为 AJAX 的新技术使开发人员能够构建现代网站,从而最大限度地减少了用户在空白屏幕前等待页面加载的时间。 AJAX 是异步 JavaScript 和 XML 的缩写,它不仅仅是一种技术,因为它由 HTML、CSS、JavaScript、XMLPRequest 和服务器端脚本语言(如 PHP)组成。

在互联网时代开始,内容丰富和互动网页的受欢迎程度不好,因为没有选择更新网页而不重新加载整个网页。 AJAX 缩小了这一差距,并引入了异步数据加载概念,使最终用户能够在后台加载数据时与页面进行交互。 如今,这个概念被广泛使用,因为它允许实现交互式Web应用程序。

 

典型的 AJAX 请求包括:

  1. 用户点击网页
  2. 此网页的处理程序创建一个 XMLHttpRequest 对象
  3. XMLPRequest 对象从服务器请求文档
  4. 服务器检索适当的数据并将其发送回来
  5. XMLHttpRequest 触发事件以通知数据已到达的网页
  6. 处理程序处理数据并显示数据

 


 

AJAX 应用程序带来了哪些挑战?

 

显然,基于 AJAX 的动态网页中存在一些陷阱,这些陷阱在开发人员社区中已经很出名。 让我们总结一下下面这个 AJAX 区域中的问题点。

首先,AJAX在JavaScript上的理由,如果你在浏览器上禁用Java,它就不会起作用。 几年前,组织出于安全目的锁定浏览器并禁用 JavaScript 是很常见的。 那些日子已经一去不复返了,但记住这一点还是不错的。

其次,动态加载和显示的数据不是页面的一部分。 如果搜索引擎已索引基于 AJAX 的 Web 应用程序,则结果可能不满意,因为这些索引引擎看不到大量内容。

第三,正在进行的动态页面更新可能会以较低的关注范围干扰用户。 这些页面上弹出的动态元素越高,用户被中断且无法在可接受的时间内完成工作的可能性越高。

最后,由于基于回调的客户端-服务器通信延迟比 Web 套接字高几倍。 Web 客户端轮询数据更新,这也是自动测试的一个挑战。

 


 

用户模拟技术

 

负载测试专家负责选择合适的用户模拟方法,这两种方法都适合受测试的应用程序,不会产生太多的工作量。 如果选择了错误的模拟方法,则无法解决应用程序中的性能热点的可能性非常大。

有两种用户模拟方法。

1. 基于协议的请求和答复模拟
大多数开源测试工具以及所有商业负载测试工具都支持此过程。 将客户端-服务器交互记录在测试脚本中,测试工具会捕获所有请求和响应。 对动态数据(如会话 ID 或测试输入数据)进行参数化后,脚本可用于模拟后端系统所需的负载。 请注意,客户端处理或交互不是协议级响应时间测量的一部分。

2. 真实用户交互的基于浏览器的完整模拟
只有负载 测试业务中的杰出参与者 支持这种模拟方法。 原因是系统资源要求更高,可靠的重播很难实现。 当涉及到测试脚本创建时,它类似于基于协议的方法。 测试人员浏览网页,而脚本记录器捕获 Web 浏览器中的所有交互。 在测试执行期间,无头 Web 浏览器执行记录的交互并响应类似于真实用户的服务器回调。 这种类型的用户模拟非常准确,并提供真实的前端性能指标。

 

以前的仿真方法非常适合静态 Web 应用,负载喷射机的仿真开销较低,通常易于实现。 后一种技术提供了准确的端到端响应时间,但在负载测试服务器上的开销要高得多。 那么,您如何为下一个基于 AJAX 的负载测试选择最佳的用户模拟方法呢?

 


 

AJAX 负载测试在运行中

 

最好的 AJAX 负载 测试方法 是什么?如何验证您的决策? 显然,如果您不确定什么方法可以提供准确的结果,那么开始一个小实验是一个好主意。

现在,我将为您提供 AJAX 示例应用程序的两个示例负载测试https://ajaxsearchpro.com。 这个演示应用程序是一个简单的搜索引擎。 在用户类型期间,将显示与内容匹配的搜索词。 触发输入键或单击搜索按钮后,将执行最终搜索,并逐步在屏幕上显示相应的搜索结果。

这是用我的 Chrome 浏览器捕获的瀑布图。 我的”汽车”搜索请求的响应时间为 2.2 秒。

 

waterfall chart chrome browser

 

我使用浏览器的开发人员工具,这有助于我确定它在执行搜索操作时执行此 请求:https://ajaxsearchpro.com/?s=car

 

我创建了一个基于协议和基于浏览器的负载测试脚本,同时执行了这两个脚本并比较了结果的性能指标。 你觉得怎么样? 对于基于 AJAX 的应用程序,哪个用户模拟最适用?

 

基于协议的 AJAX 负载测试脚本

 

脚本步骤: https://ajaxsearchpro.com/?s=car 响应时间: 594 女士
仿真方法: 协议级别,铬 请求数: 1

 

Waterfall Chart
protocol based ajax waterfall chart

 

此基于协议的脚本执行摘要
protocol based ajax script execution

 

基于浏览器的 AJAX 负载测试脚本

 

脚本步骤: https://ajaxsearchpro.com/?s=car 响应时间: 2.18 秒
仿真方法: 协议级别,铬 请求数: 32

 

Waterfall Chart
browser based ajax waterfall chart

 

此基于协议的脚本执行摘要
browser based ajax script execution

 

两种仿真方法的比较

 

由于其异步通信模式,基于 AJAX 的应用程序无法在协议级别上实现自动化。 只有基于浏览器的实时模拟才能提供准确的结果,并在后端系统上生成真实负载。

考虑使用我们的 AjaxSearchPro 演示应用程序的负载测试,该应用程序每小时有 100 个并发用户和 10000 次搜索。 如果您决定使用基于协议的模拟,您将错过 10000 x 31 = 310,000 个请求。 显然,这将导致完全不准确的负载测试结果。

 


 

Dotcom 监视器的 LoadView 解决方案如何使用 AJAX 解决负载测试

 

我们的基于云的负载测试平台 LoadView 专为测试 所有现代 Web 2.0 应用程序而设计,如 AJAX、闪存、HTML5 或 jQuery。 其易用性非常出色。 您可以录制完整的基于浏览器的场景,并模拟 40 多个移动或基于浏览器的设备,如互联网浏览器、Chrome、iPhone、三星、黑莓等。

许多负载测试解决方案只提供基于协议的用户模拟方法,这是不够的。 您可以通过协议级测试来强调后端,但客户端-服务器请求和客户端处理的很大一部分被抛在一边。 我们的 LoadView 平台为您提供了准确的用户模拟所需的一切。

 

使用 LoadView 运行基于 AJAX 的负载测试的 5 个步骤

 

1. 记录您的 AJAX 应用程序
您可以使用我们的 EveryStep Web 记录器手动浏览基于 AJAX 的应用程序。 每个步骤将记录所有操作,并允许您添加计时器或验证步骤。 单击受测试的系统后,您可以执行单个用户试运行或将录制的操作上传到我们的平台并创建负载测试设备。

2. 校准
负载喷射机的分配通常是猜测。 不正常的负载生成计算机将伪造测试结果。 LoadView 执行设备的单个用户测试运行,并计算每个负载注入机的最大用户数。 此步骤可避免过载计算机对应用程序的响应时间产生负面影响。

3. 执行计划
用户数量通常随典型工作日而变化。 我们通过执行计划功能解决了这一需求。 它为您提供了对实际负载测试方案建模的充分灵活性。

4. 虚拟用户分发
LoadView 允许您在世界各地选择各种负载喷射机。 选择那些代表客户通常位置的。

5. 运行测试并获取结果
在这最后一步中,您可以启动负载测试执行。 在线视图将为您提供有关 AJAX 应用程序在负载下如何表现的实时见解。 测试执行完成后,您将收到一份包含最重要的关键性能指标的详细报告。

 

从所有考虑到的方面,LoadView 可满足现代负载测试平台的所有要求,简化测试自动化挑战,并帮助您模拟复杂业务应用程序上的实际生产场景。

 


 

使用的工具

 

LoadView: 来自 Dotcom 监视器的基于云的负载测试平台

每步网络记录器 : 脚本工具从Dotcom监视器

Chrome 开发人员工具:通信模式分析

要了解有关 Dotcom 监视器平台的更多信息, 请访问www.dotcom-monitor.com