单页应用程序(SPA) 是一个完全在 Web 浏览器中运行的单个 URL Web 应用程序。 在选择适合 SPA 负载测试的应用程序之前,应考虑以下几项事项。

首先要考虑的项目之一是SPA逻辑严重依赖JavaScript技术。 每次用户单击按钮或在网页上执行任何其他操作(在选项卡之间导航、填写 Web 表单等)时,浏览器都会执行 JavaScript 并呈现网页。

其次,SPA 中的身份验证涉及携带访问凭据(例如 JSON Web 令牌)的 HTTP 标头。 访问令牌由 SPA 服务器为每个会话提供。 当浏览器执行 HTTP 调用时,它会从 SPA 服务器响应中提取令牌,并将其与每个 HTTP 请求一起传递。

这些 SPA 逻辑特征限制了使用 JMeter 等应用程序的 SPA 测试。 JMeter 不是浏览器,在协议级别工作。 JMeter 允许对服务器模拟 SPA Web 请求,而无需测试应用程序本身。 但是,创建任何使用页面上的用户数据的请求都需要在 Web 开发方面获得相应的知识。 例如,要登录到 SPA,您需要在每个会话中验证客户端的调用。 否则,无法准确测试页面性能。

另一方面,LoadView的工作方式类似于真正的浏览器,并且支持浏览器级别的 JavaScript 执行和身份验证逻辑。 您只需使用内置记录器在 SPA 页面上编写用户操作脚本并设置加载模式。 就这么简单!

测试将在真实的浏览器中执行(ChromeInternet Explorer 选项可用),以模拟真实的用户体验并提供逼真的测试结果。

 

有关 Web 应用程序负载测试的详细信息,请参阅开始使用负载测试设置配置 Web 应用程序任务

常见用例

为了显示 SPA 测试的性质,我们考虑一个测试方案,重复在 Dotcom-Monitor 帐户设置菜单的用户页面上更改用户数据的过程。 该页面是 SPA 的典型示例。

由于“用户”页已过身份验证,因此在测试该页面之前,我们需要登录到应用程序。 由于之前描述的 SPA 身份验证特性,如果没有浏览器,登录测试可能比较棘手。

根据身份验证结果,将加载页面内容。 通常,所有数据(包括 UI)都在后端处理,并在 HTML 中传递。 因此,要接收数据,应将 GET 请求发送到页面 URL。 但是,当涉及到 SpA 时,除了 JavaScript 脚本之外,服务器响应中没有数据。 在下图中查找页面源。

与服务器响应相比,让我们看一下浏览器呈现的页面元素。 浏览器动态呈现页面内容,包括用户数据、标题、菜单面板和用户列表网格。 由于 UI 元素不包括在 HTML 中,并且仅由浏览器呈现,因此如果没有 JavaScript 执行,就无法测试它们。

例如,编辑用户对话框处理程序已包含在初始服务器响应中,并且不会额外执行任何调用。 检查弹出对话框是否正确呈现需要相关的脚本执行,并且无法由 HTTP 请求完成。

查找在编辑用户数据时发送到服务器的请求的示例。

总之,如果要测试 SPA 性能,则基于浏览器的实际负载测试解决方案(如LoadView)可以为您提供全面的负载测试结果。