负载测试技术

LoadView 测试平台本机支持以下协议。

选择下面列出的技术之一以了解更多信息。

AJAX 负载测试

20 多年前,在重新加载整个页面时,如果不显示无聊的白屏,则无法更新网页。 值得庆幸的是,AJAX已经缩小了这一差距,并引入了异步数据加载概念,使用户能够在后台加载数据时与页面进行交互。 如今,这个概念是我们内容丰富、交互式的Web应用程序的基础。

AJAX 是异步 JavaScript 和 XML 的缩写,它不仅仅是一种技术,因为它由 HTML、CSS、JavaScript、XMLPRequest 和服务器端脚本语言(如 PHP)组成。 AJAX 请求包含以下 6 个步骤:

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

从性能工程师的角度来看,另一面是,异步通信的自动化是棘手的。 考虑加载测试一个 Web 应用程序,该应用程序必须每小时为 100 个并发用户和 10000 个搜索服务。 您的任务是验证此应用程序的平均响应时间是否在 3 秒的边界内。

基本上,对于负载测试方案,您有以下两个选项:

 

  1. 基于协议的模拟
  2. 基于浏览器的模拟

让我们将协议级别与浏览器级负载模拟进行比较。 下表反映了此实验的结果:

描述

截图

协议级模拟

1 客户端服务器请求

0.52 秒加载时间

AJAX 协议模拟

浏览器级模拟

32 个客户端服务器请求

2.18 秒加载时间

AJAX 浏览器模拟
如果您决定使用基于协议的模拟,您将错过 10000 x 31 = 310,000 个请求,并报告不正确的响应时间,因为客户端丢失了其响应时间的很大一部分。 显然,这将导致完全不准确的负载测试结果。

角JS负载测试

前端开发人员喜欢 AngularJS,因为它有助于简化复杂的代码。 这个简单而强大的框架通过它对 UI 流的描述解决了容易出错的 DOM 操作问题。 AngularJS 是一个开源 JavaScript 框架,可以添加到具有简单脚本标记的页面,例如:

<脚本 src=”https://ajax.googleapis.com/ajax/libs/angularjs/1.6.4/angular.min.js”>
</脚本>

它支持关注点分离,将动态元素带到静态 HTML 中。 与任何其他应用程序一样,基于 AngularJS 的系统也会很快受到性能问题的影响。 以下是您可以采取的一些步骤来加快下一个 NG 负载测试项目的速度:

  • 将 DOM 操作的数量降至最低
  • 减少 DOM 树的总元素
  • 使用 Chrome 探查器检查内存占用量
  • 减少观察者的活动

LoadView 为您提供了准确的 AngularJS 负载测试所需的一切。

下面的示例使用基于 AngularJS 的消息输入。 下面的屏幕截图包含其左侧的源代码和右侧的应用程序。

角JS消息输入

描述

截图

AngularJS 应用程序的记录测试脚本

使用”每步 Web 记录器”录制 AngularJS 脚本

角JS记录测试脚本

AngularJS 应用的设计负载测试

配置测试执行计划

角JS设计负载测试

闪存负载测试

Flash 是一种创作软件,用于创建基于矢量图形的动画。 它是一种独立于平台的技术,在安装闪存播放器的任何计算机上运行。 由于安全考虑,公司经常禁止 Flash 访问其基础设施。 但是,您可以使用 Flash 构建不错的应用程序,因为开销很低。 然而,Flash的一个小缺点是,它不会运行没有一个启用的Flash播放器插件。

LoadView 为您提供了准确的闪存负载测试所需的一切。 我用了一个简单的基于Flash的计算器:https://www.dotcom-tools.com/samples/Calculator.html。 我的负载测试方案执行简单的 1 + 2 + 3 计算。

描述

截图

记录闪存应用程序的测试脚本

使用”每步 Web 记录器”录制脚本

添加验证

运行和上传脚本

闪存记录测试脚本

为闪存应用程序设计负载测试

配置测试执行计划

将虚拟用户分配到世界各地的负载喷油器上

闪存设计负载测试

运行闪存应用程序的负载测试

观看 LoadView 如何增加负载,并记录在负载测试期间闪存应用程序的响应时间。

闪存运行负载测试

闪存应用的结果分析

测试运行完成后,LoadView 将提供详细的报告、视频和有价值的见解,如瀑布图或视频。

分享开发人员团队,确定热点的根本原因。

闪存结果分析

已知问题

基于闪存的应用程序的脚本仅适用于 Internet 资源管理器。 如果您使用 Chrome 或任何其他浏览器进行录制,您将收到以下错误。

闪存问题

HTML5 负载测试

HTML5 是 HTML 的第五个版本,标准,它仍然是我们 Web 应用程序的支柱。 HTLM5 的成分包括:

  • 提供结构的 HTML
  • 处理演示文稿的 CSS
  • Javascript 使事情发生

HTML5 为您提供了实现在浏览器中运行的漂亮应用程序所需的一切,无需任何插件。 此类应用程序称为基于跨平台的应用程序。 如果您的浏览器支持 HTML5,它们在任何设备上运行。 以下是使用 LoadView 加载测试 HTML5 的示例。

描述

截图

记录 HTML5 应用程序的测试脚本

使用”每步 Web 记录器”录制脚本

添加验证

运行和上传脚本

HTML5 记录测试脚本

为 HTML5 应用程序设计负载测试

配置测试执行计划

将虚拟用户分配到世界各地的负载喷油器上

HTML5 设计负载测试

为 HTML5 应用程序运行负载测试

随着 LoadView 增加负载,在负载测试执行期间查看 HTML5 应用程序的响应时间和行为。

HTML5 运行负载测试

HTML5 应用程序的结果分析

测试运行完成后,LoadView 将提供详细的报告、视频和有价值的见解,如瀑布图或视频。

与开发人员团队共享这些结果,以确定热点的根本原因。

HTML5 结果分析

JavaScript 负载测试

JavaScript 是 Web 的主要编程语言。 它用于将交互式功能引入 Web,并构建许多框架的基础,如 AngularJS 或 AJAX。 黑客最近使用 JavaScript 在受害者计算机上执行关键命令。 您可以在浏览器中禁用 JavaScript 执行,但这将阻止计算机上的许多网站。

在 JavaScript 方面存在一些已知的性能限制。 在下次基于 JavaScript 的负载测试中,调查这些测试是一个好主意。 您可以执行以下操作以使脚本过程更加轻松:

 

  • 减少循环中的活动
    • 不要在循环内进行计算,因为这会执行很多次,并影响响应时间。
  • 减少 DOM 访问
    • DOM 访问速度很慢。 创建局部变量,分配所需的值,并将其用于操作。
  • 减少 DOM 大小
    • 保持 DOM 大小较小将加快页面加载时间,并加快通过 JavaScript 进行 DOM 访问。
  • 延迟 JavaScript 加载
    • 在页面末尾加载脚本,因为它将阻止页面呈现,直到下载完成。 或者,您也可以使用”defer=true”标记在页面呈现后加载脚本。

LoadView 为您提供了准确的 JavaScript 负载测试所需的一切。 下面的示例说明了在 LoadView 中 JavaScript 负载测试实际上有多简单。

描述

截图

记录应用程序的测试脚本

使用”每步 Web 记录器”录制脚本

运行和上传脚本

JavaScript 记录测试脚本

为应用程序设计负载测试

配置测试执行计划

将虚拟用户分配到世界各地的负载喷油器上。

JavaScript 设计负载测试

为应用程序运行负载测试

随着 LoadView 增加负载,查看 JavaScript 应用程序的响应时间和负载测试执行期间的行为。

JavaScript 运行负载测试

应用程序的结果分析

测试运行完成后,LoadView 将提供详细的报告、视频和有价值的见解,如瀑布图或视频

与开发人员团队共享这些结果,以确定热点的根本原因。

JavaScript 结果
JavaScript 结果分析

JSON 负载测试

JSON 是 JavaScript 对象 表示法的缩写 ,与 XML 非常相似。 它是一种非常常见的数据格式,用于各种浏览器-服务器通信。 简单、广泛的编程语言支持和低开销是它受欢迎的原因。

某些 JSON 特定性能热点包括:

  • 下载大型文件时间过长
  • 内存利用率太高

与 SOAP XML 相比,JSON 的占用空间更小,更易于阅读。 下面的示例演示了使用 LoadView 进行 JSON 负载测试。

我们在网站上的搜索功能中使用 JSON。 这是相应的 JSON 源代码:

JSON 源代码

这是我们将在 JSON 负载测试演示中使用的搜索功能:

JSON 功能

我们使用 Chrome 开发人员工具来标识此搜索表单中使用的请求 URL。

JSON 铬开发工具
您可以轻松地设置一个基于 HTTP 的任务,该任务使用 URL https://www.dotcom-monitor.com/?s=load+test执行 搜索请求,但这不会强调 JSON 搜索提示功能。 因此,我决定使用我们的 EveryStep Web 记录器设置一个真正的基于浏览器的测试来记录搜索,并在负载测试中使用它。

描述

截图

记录 JSON 应用程序的测试脚本

负载测试从使用 EveryStep Web 刻录机录制脚本开始。

JSON 记录测试脚本

JSON 应用的设计负载测试

在此步骤中,您可以配置测试计划和位置。

JSON 设计负载测试

运行 JSON 应用程序的负载测试

随着 LoadView 增加负载,查看 JSON 应用程序的响应时间和负载测试执行期间的行为。

JSON 运行负载测试

JSON 应用的结果分析

LoadView 会生成瀑布图和报表,可与开发人员共享,以识别问题并实施更改。

JSON 结果分析

单页应用程序负载测试

单页应用程序 (SCA) 的行为更像桌面应用程序,因为它们动态重写当前页面,而不是从服务器加载整个新页面。 此类 SCA 的用户体验通常更好,因为中断较少。 SCA 的初始加载时间通常更长,因为必须下载框架。 SOAP、JSON 或 AJAX 通常用于 SPA 客户端和服务器之间的通信。

SCA 的一些最刻录的性能问题包括:

  • 初始页面加载时间长
    • 缩小框架的大小
  • 内存泄漏
    • 定期查看 SPA 的内存占用量
  • 数据呈现
    • 延迟对象或数据的加载(延迟数据加载)

LoadView 为您提供了准确的 SPA 负载测试所需的一切。 我们为此负载测试演示使用了以下应用程序 :https://www.welcometofillory.com/map

描述

截图

单页应用程序的记录测试脚本
SPA 记录测试脚本

单页应用的设计负载测试

SPA 设计负载测试
运行单页应用程序的负载测试

当 LoadView 增加负载时,查看应用程序响应时间和负载测试执行期间的行为。

SPA 运行负载测试

单页应用程序的结果分析

SPA 结果分析

如前所述,SCA 的初始页面加载时间通常相当长。 在我们的展示中,下载此初始页面的时间超过 35 秒,页面大小超过 95 MB。 显然,此应用程序需要一些调整。

肥皂负载测试

简单对象访问协议 (SOAP) 不仅仅是一种编程语言。 与开发语言 JavaScript 相反,SOAP 支持跨任何设备和操作系统进行通信。 SOAP 的基本构建基块是 XML。 SOAP 引入了一种用于发送和接收消息的格式。

与SOAP相关的一些最流行的性能热点如下:

  • 聊天应用程序
  • 错误或没有缓存策略
  • 序列化导致高开销
  • 在消费者端或低效的 Web 方法处理上没有输入验证

基于 SOAP 的 Web 服务在 WSDL 中提供了其服务的描述。 此 Web 服务描述语言可用于手动我们的自动测试。 在下面的演示中,我将演示如何设置基于 SOAP 的应用程序的负载测试。

这个简单的货币转换器将用于我们的示例负载测试设置:

https://www.webservicex.net/CurrencyConvertor.asmx?WSDL

肥皂货币转换器

以下步骤概述了如何使用 LoadView 执行 SOAP 负载测试。

描述

截图

为应用程序创建测试脚本

创建 HTTP 任务并添加 POST 请求详细信息。

SOAP 创建脚本
SOAP 测试脚本

为应用程序设计负载测试

SOAP 设计负载测试

为应用程序运行负载测试

随着 LoadView 增加负载,查看 SOAP 应用程序的响应时间和负载测试执行期间的行为。

肥皂运行负载测试

应用程序的结果分析

肥皂结果
SOAP 结果分析

Web API REST 负载测试

REST 是一种广泛使用的通信标准,代表表示状态传输。 它以机器可读格式结构数据,并使用XML或JSON。 与高度功能驱动的SOAP相反,REST 非常数据驱动。 RESTful API 和 RESTful 服务是本学科中经常使用的两个术语,但它们只意味着 REST 服务。

REST 服务的性能测试就是将数据发送到服务或验证来自服务的响应。 一些最常见的 REST 性能热点包括:

  • 聊天服务
  • 传输的数据太多或不需要数据
  • 不重复使用 TCP 连接

开发人员社区并不经常同意是否在 SOAP 或 REST 中实施 Web 服务。 从性能角度来看,基于 REST 的服务专为速度而设计。 他们的协议开销较低,不需要 XML 解析。 下面的案例研究说明了如何使用 LoadView 进行 Web API REST 测试。

描述

截图

为宁静服务创建测试脚本

创建 HTTP 任务

添加 GET 请求详细信息

添加关键字验证

REST 创建测试脚本

为应用程序设计负载测试

设置测试和执行计划。

REST 设计负载测试

为应用程序运行负载测试

在测试启动时监视负载曲线。

休息运行负载测试

应用程序的结果分析

分析结果并与开发人员团队共享。

REST 结果分析

Web 袜子加载测试

WebSockets 旨在实现客户端和服务器之间的双向通信,这意味着双方同时通信和交换数据。 真正的并发性和性能优化是 WebSockets 的两个关键点。

使用 WebSockets 的优点包括:

  • 双向
    • 没有预定义的消息模式,客户端或服务器可以向另一方发送消息
  • 全双工
    • 客户端和服务器之间的独立通信
  • 单个 TCP 连接
    • 升级 HTTP 连接,客户端和服务器通过同一 TCP 连接进行通信

如果我们将 WebSockets 与 REST 或基于 SOAP 的通信模式进行比较,则前者的响应时间要好得多,因为 WebSockets 支持重用相同的 TCP 连接。 研究表明,基于 WebSocket 的服务速度高达 10 倍。

对于此测试,我们将使用聊天机器人,它回答了一些基本问题。

描述

截图

记录基于 Web 袜子的应用程序的测试脚本

Web 袜子记录测试脚本

为基于 WebSocket 的应用程序设计负载测试

创建测试计划,并将负载分配到不同的测试位置。

Web 袜子设计负载测试

运行基于 WebSocket 的应用程序的负载测试

Web 袜子运行负载测试

基于 WebSocket 的应用程序的结果分析

网络袜子结果分析

使用 Jenkins 的 LoadView 插件进行负载测试

Jenkins 的 LoadView 插件允许性能测试团队轻松地将基于浏览器的实际负载测试整合到其 Jenkins 测试版本中。 这可确保应用程序在较长时间段内不断进行测试和评估,使团队在将代码和应用程序推送到生产环境之前能够识别并解决错误和瓶颈。

通过将 LoadView 性能测试集成到 CI 开发过程中,更早发现性能问题,并将更可靠的应用程序发布到生产中。 生成全面的测试报告并深入了解代码性能。

詹金斯负载测试
将负载测试进行到
下一级

体验无与伦比的功能,具有无限的可扩展性。 没有信用卡,没有合同。