现代客户端 JavaScript 框架,如角度、余烬、Ext JS、挖空、响应和 Vue 都支持单页应用程序 (SPA) 基础和规则。 SPA 为用户提供了更无缝的用户体验,就像使用 Web 应用一样,但是,SPA 负载测试可能会在 JMeter 等开源工具中遇到麻烦。 本文旨在解释开源负载测试解决方案(如 JMeter)如何处理测试 SPA 以及负载视图的不同性,并克服了 JMeter 的局限性。
什么是单页应用程序?
单页应用程序(SPA)是一个完全在 Web 浏览器中运行的单个 URL Web 应用程序或网站。 当用户访问 SPA 应用程序或网站时,将下载所有元素,如 JavaScript、HTML、CSS 等。 由于此功能,SPA 不需要浏览器每次用户导航到新页面时重新加载或刷新页面,就像当今多页应用程序 (MPA) 中的传统做法一样。 如果需要新数据,页面将动态更新来自 Web 服务器的新数据,而用户并不知道其中的区别。
加载测试单页应用程序时的考虑因素
SPA 非常适合创建响应迅速的应用程序和站点,但在进行性能测试时,在选择用于加载测试您的 SPA 的正确工具或解决方案之前,您需要考虑一些事情。
首先要考虑的项目之一是 SPA 逻辑严重依赖 JavaScript 技术。 每次用户单击按钮或在网页上执行任何其他操作(在选项卡之间导航、填写 Web 表单等)时,浏览器都会执行 JavaScript 并呈现网页。
此外,SPA 中的认证涉及带有访问凭据(例如 JSON 网络代币)的 HTTP 标题。 访问令牌由 SPA 服务器为每个会话提供。 当浏览器执行 HTTP 调用时,它会从 SPA 服务器响应中提取令牌,并将其与每个 HTTP 请求一起传递。
什么是J米?
JMeter 是阿帕奇软件基金会开发的开源性能测试工具。 JMeter 的主要目标是进行性能测试,但是,它也可以用于功能测试,如单位测试。 它于1998年首次推出,并配备了企业级负载测试功能。 由于基于插件的架构,JMeter 功能可以轻松扩展。
它是用于分析您的网站或应用程序在重负荷下的性能的更流行的开源工具之一。 它经常被积极维护和更新,以支持新技术,但是,JMeter有一个有点复杂的用户界面,因为它提供的功能数量之多。 这种复杂性使得它不像市场上的其他工具那样用户友好,因为它需要一点学习曲线才能熟练掌握和体验软件。
J 仪表限制
这些 SPA 逻辑特征限制了使用 JMeter 等框架构建的应用程序的 SPA 负载测试。 JMeter 不是浏览器,在协议级别工作。 这使得尝试从用户的角度运行性能测试变得困难。 例如,JMeter 不支持 JavaScript,因此无法支持 AJAX 请求,因此在这种情况下,JMeter 只能模拟 HTTP 流量。
JMeter 允许在不测试应用程序本身的情况下向服务器模拟 SPA Web 请求。 但是,创建任何使用页面上的用户数据的请求都需要在 Web 开发方面获得相应的知识。 例如,要登录 SPA 应用程序,您需要验证客户对每个会话的呼叫。 否则,页面性能无法准确测试(有关 JMeter 的更多信息,请查看我们的 JMeter 负载测试终极指南。
为什么要使用开源加载测试工具?
当 SPA负载测试的时间成熟时 , 进入你脑海的第一个问题是使用什么工具进行负载测试。 这是您需要做出的最重要的决定之一,因为选择正确的工具是成功负载测试和网站的关键 或 应用性能优化。 每个工具,无论是开源工具还是商业工具,都有其优点和缺点,但在选择工具之前,您始终应考虑所有因素,如准确性、易用性、脚本易用性、可靠性、可扩展性、报告、监控和成本等。 例如,JMeter 没有任何内置报告功能,因此 JMeter 用户必须通过了解负载测试的输出手动创建报告。
开源负载测试工具通常由一些伟大的开发人员维护,并可根据需要随之使用其源代码进行自定义。 您可以使用开源工具并扩展其功能以供内部使用。 除了JMeter之外,其他一些流行的开源工具是加特林、磨床、蝗虫、宗和 网络负载. 下面列出了使用开源工具的一些优点和缺点,在选择任何工具之前,您应该仔细研究这些工具。
使用开源负载测试工具的优点
- 无需初始投资,因为它可以自由使用。
- 源代码可用于根据内部使用案例扩展功能。
- 由顶级开发人员和开源社区管理。
使用开源负载测试工具的缺点
- 您需要投资硬件才能在服务器上运行开源工具。
- 建设和维护负载测试基础设施将需要额外的劳动力和 IT 成本。
- 虚拟用户(负载)产生于您的内部服务器上,这会导致非现实条件和误导性结果,因为最终用户将来自不同的设备和地理位置。
- 许多开源负载测试工具仅支持基于协议的负载测试,不支持基于浏览器的负载测试,这并不理想,因为现代网站/应用程序严重依赖基于浏览器的 JavaScript 执行。
- 开源负载测试工具的支持有限,这意味着如果您在实施或维护方面面临任何挑战,您几乎只能靠自己了。
- 安全性是开源负载测试工具的一个重要问题。
- 启动和运行开源负载测试基础设施需要时间。
- 由于需要挑战和管理,开源负载测试工具可能会影响您的项目时间表。
- 运行大型负载测试时,可能会出现 CPU 和内存问题。
- 随着您的应用程序和用户的增长,缩放是很困难的。
负载视图:JMeter 和开源工具的最佳负载测试替代方案
负载测试是分析网站、应用程序和 ABI 的速度、稳定性和可扩展性的必经之地。 市场上提供免费和商用负载测试工具,您可以根据您的需求进行选择。 虽然开源负载测试工具不需要初始投资,但它们的成本是构建和管理自己的功能有限的基础设施。 像 LoadView 这样的商用负载测试工具提供丰富的功能和功能,可获得准确的结果和易用性。
LoadView 是一种基于云的负载测试工具,它消除了 JMeter 和其他开源负载测试解决方案的局限性。 让我们看看 LoadView 是如何做到的,以及其他哪些功能使其从其他负载测试工具中脱颖而出。
- 用户界面。 LoadView 具有简单、直观且基于实用程序的用户界面,无需学习曲线。 您可以在几分钟内快速开始负载测试。
- 无需编程。 LoadView 附带一个名为”每步 Web 记录器”的点对点功能,您可以用它来捕获复杂的用户操作,如鼠标单击、按键、菜单导航等,并生成测试脚本。
- 无前期投资。 与 JMeter 和其他开源工具不同,LoadView 是一种基于云且完全管理的负载测试工具,您可以根据测试要求付费。
- 真正的浏览器和设备。 LoadView 支持 40 多个浏览器/设备,用于模拟真实世界的用户以进行准确的负载测试。
- 地理位置。 使用 LoadView,您可以从 20 多个地理位置生成负载,以创建最逼真的测试场景,因为您的用户将来自不同的位置并体验不同的性能。
- 报告。 LoadView 生成具有有用见解的详细性能测试报告,以便您可以立即开始优化您的网站/应用程序以解决性能问题。
LoadView 非常适合 SPA 负载测试网站和应用程序,以及测试 ABI、流媒体服务等。 平台可以根据您的测试要求生成负载,而不会有任何限制或以前的编程技能或经验。
加载测试单页应用程序与负载视图
另一方面,LoadView的工作方式类似于真正的浏览器,并且支持浏览器级别的 JavaScript 执行和身份验证逻辑。 所有你需要做的是脚本用户行动在SPA页面上使用内置的每个步骤网络记录器脚本工具,并设置,配置和运行您的负载测试。 有关如何使用 LoadView 设置和配置负载测试的完整运行,请访问我们的 测试基础 部分,了解有关从 LoadView 开始的更多文章。
测试将在真正的浏览器(Chrome 或 Edge 选项可用)中执行,以模拟与其他负载测试工具相比提供更逼真的测试结果的实际用户操作和行为。
有关 Web 应用程序和 SPA 负载测试的更多信息,请阅读 “从负载测试设置开始 “或 “配置 Web 应用任务 知识库”文章。
单页应用负载测试的常用案例
为了显示 SPA 测试的性质,我们考虑一个测试方案,重复在 Dotcom-Monitor 帐户设置菜单的用户页面上更改用户数据的过程。 该页面是 SPA 的典型示例。
由于“用户”页已过身份验证,因此在测试该页面之前,我们需要登录到应用程序。 由于之前描述的 SPA 身份验证特性,如果没有浏览器,登录测试可能比较棘手。
根据身份验证结果,将加载页面内容。 一般来说,所有数据(包括 UI)都在后端进行处理,并在 HTML 中交付。 因此,要接收数据,应将 GET 请求发送到页面 URL。 但是,当涉及到 SpA 时,除了 JavaScript 脚本之外,服务器响应中没有数据。 在下图中查找页面源。
与服务器响应相比,让我们看一下浏览器呈现的页面元素。 浏览器动态呈现页面内容,包括用户数据、标题、菜单面板和用户列表网格。 由于 UI 元素不包括在 HTML 中,并且仅由浏览器呈现,因此如果没有 JavaScript 执行,就无法测试它们。
例如,编辑用户对话框处理程序已包含在初始服务器响应中,并且不会额外执行任何调用。 检查弹出式对话是否正确呈现需要执行相关脚本,并且无法通过 HTTP 请求完成。
查找在编辑用户数据时发送到服务器的请求的示例。
结论:负载测试 SPA 时的 Jmeter 限制
总之,如果你想测试SPA性能,一个真正的基于浏览器的负载测试解决方案,如 负载视图,可以为您提供现实,全面的负载测试结果。 LoadView 是一种基于云的负载测试工具,可以让您快速开始加载测试您的网站或应用程序。 它使用真正的浏览器和设备从多个地理位置生成用户负载,为您提供最现实的结果准确性条件。 其中包括”每个步骤”网络记录器,它允许您创建具有点对点功能的测试脚本。
即使您没有任何编程经验,LoadView 也非常易于使用。 LoadView 还允许您实时调整负载,以进行容量规划和可扩展性标识的探索性测试。 LoadView 生成高级报告,以排序的方式包含对性能的深刻见解,以便您可以轻松理解和识别瓶颈,从而快速消除瓶颈。
另一方面,JMeter 缺乏报告能力,这对于识别性能瓶颈并优化这些瓶颈至关重要。 如果没有内置报告,您将浪费大量时间进行报告和找出问题,而不是解决绩效问题。 JMeter用户界面也不是很好,很难使用。
已经有JMeter测试,但要将它们集成到加载视图平台中? 只需几个简单的步骤,阅读如何 将 Web 应用程序测试从 JMeter 转换为加载视图 。
加载视图的新问题? 今天尝试免费试用 ,并获得$20负载测试学分!