通过


适用于 JavaScript 应用程序的 Azure 测试指南

作为刚开始使用 Azure 的 JavaScript 开发人员,请使用此 Azure 测试指南来学习 Azure SDK 和其他资源的单元测试、集成测试、CI/CD 测试以及 AI 测试策略,以确保应用程序的质量、性能和可靠性。

Azure 良好架构的框架

Azure Well-Architected 框架为跨五大支柱的云应用程序提供设计框架:

  • 可靠性 – 确保您的应用程序能够在出现故障时具有弹性,并能迅速恢复正常。
  • 安全性 - 保护应用程序和数据免受威胁。
  • 性能效率 - 优化系统如何使用资源来满足要求。
  • 成本优化 - 在交付价值的同时管理成本。
  • 卓越运营 - 改进流程和监视,以有效交付应用程序。

本文中的测试策略主要与 卓越运营 支柱保持一致,该支柱强调运营流程的自动化、验证和持续改进。

JavaScript 中 Azure SDK 的内部和外部测试循环

内部和外部测试循环是软件测试的基础概念,尤其是对于在 Azure 等云平台上部署的应用程序:

  • 内部循环是指开发人员经常在开发阶段运行单元和集成测试的本地环境。 此循环侧重于快速反馈和迭代。

  • 外部循环包含开发人员在持续集成和持续交付(CI/CD)管道、过渡环境和生产环境中运行的测试。 这些测试通常利用 Azure DevOps 或 GitHub Actions。

这些测试包括端到端(E2E)、性能和安全测试。 它们验证应用程序在紧密镜像或与最终生产环境相同的环境中的行为。 高效的测试策略使用这两个循环来帮助确保部署前后的全面覆盖范围和质量保证。

了解详细信息:

使用 Azure SDK 进行本地和基于云的测试

没有 Azure 的本地测试 涉及模拟 Azure 服务。 使用此方法快速测试更改,而不会产生与真实 Azure 服务关联的成本或网络延迟。

另一方面, 使用 Azure 进行基于云的测试 可以利用实际的 Azure 资源来验证应用程序在云环境中的集成、安全性和性能。 此方法对于生产型设置中的最终验证至关重要。 它有助于确保应用程序在实时 Azure 服务中按预期运行。

模拟器和开发容器通过 Azure 服务以不同的方式增强本地开发。 仿真器模拟 Azure 服务,以便在不收取 Azure 费用的情况下进行经济高效的早期测试,但它们可能无法完全复制实时服务功能。 开发容器更紧密地复制生产环境,包括应用程序依赖项和服务,以帮助无缝过渡到生产环境。 开发容器适合复杂的应用程序,但需要比仿真器更多的设置。

模拟器

模拟器包括:

开发容器

开发容器提供了一种强大的替代方法,可用于使用模拟器进行本地开发,尤其是在使用 Azure 服务时。

通过在容器中运行服务,创建一个本地环境,以密切镜像生产环境,以便跨开发、测试和部署阶段提供一致性。 它还通过更准确地模拟实际条件来提高测试的可靠性。

配置容器以复制 Azure 服务的设置和数据。 通过这种方式,容器提供了一个可靠的平台,用于开发和测试应用程序,而无需开销连接到实时 Azure 服务。

开发容器包括 Azure SQL 数据库

了解详细信息:

JavaScript 中的单元测试

使用 JavaScript 中的 Azure SDK 进行单元测试通常使用 JestVitest 等框架来隔离和测试单个组件或函数。

对于原生 Node.js 测试,可以通过重写 SDK 客户端原型的方法或使用简单的模拟函数,手动调用存根 Azure SDK,而无需额外的库。

有关详细信息,请参阅本文后面的 Azure SDK 测试 部分。

JavaScript 中的集成测试

集成测试评估应用程序和 Azure 服务之间的交互,以帮助确保组件按预期协同工作。

在 Azure DevOps 中使用 Azure Pipelines 或 GitHub Actions 中的工作流设置 自动化集成测试 。 此方法可自动部署和测试云环境中的组件。 它有助于识别单元测试期间可能不明显的问题,例如网络延迟或服务配置错误。

模拟 Azure 服务

模拟 Azure 服务是测试与 Azure SDK 集成的 JavaScript 应用程序的常见做法。 通过模拟 Azure 服务响应,将应用程序逻辑与外部依赖项隔离开来,这有助于确保测试快速可靠地运行。

详细了解 如何测试 Azure SDK 集成

持续集成测试

每次更改代码库时,CI 测试都会自动运行测试。 Azure DevOps 等 CI 工具提供集成环境,用于自动执行生成、测试和部署。 配置管道以包含自动测试有助于确保验证每个更改,从而减少 bug 和回归的可能性。

正确的 管道配置 对于高效的 CI 进程至关重要。 它包括为自动测试执行设置触发器,并为各种测试阶段配置环境。

了解详细信息:

Azure Test Plans

Azure 测试计划 提供了一套全面的套件,用于在 Azure DevOps 中进行手动和探索性测试。

此服务在需要人工判断或难以自动执行的情况下提供帮助,方法是提供手动测试的结构化方法。 团队可以使用它来计划、执行和跟踪测试活动,包括捕获丰富的数据(如屏幕截图和视频),以帮助进行 bug 报告。 将 Azure 测试计划集成到 CI/CD 过程可提供涵盖自动化和手动测试用例的整体测试策略。

端到端测试

端到端测试在模拟真实用户场景的环境中验证应用程序的完整操作。 通过使用 Playwright 等框架,可以像用户一样自动执行基于浏览器的测试以与应用程序交互。

基于方案的测试 涉及为完整的用户流(例如注册、执行任务和注销)创建测试用例。使用此测试验证 Azure 上的应用程序功能和用户体验。

了解详细信息:

性能测试

性能测试对于部署在 Azure 上的应用程序至关重要,可帮助确保它们能够处理预期的负载,并在压力下运行良好。

基准测试 涉及根据定义的指标或标准测量应用程序的性能。 使用 Azure 负载测试服务模拟高流量并分析应用程序的可伸缩性和复原能力。

CLI 示例:

az load test create --resource-group MyResourceGroup --name MyLoadTest --file loadTestConfig.json

了解详细信息:

安全测试

Azure 上的安全测试涉及识别应用程序中的潜在漏洞,以防止未经授权的访问或数据泄露。

漏洞扫描 工具对于自动检测代码或配置中的安全漏洞至关重要。 通过将 GitHub 高级安全功能 与传统的静态应用程序安全测试(SAST)工具集成,可以改善 Azure 上部署的应用程序的安全态势。 主要功能包括:

  • 代码扫描:在部署之前标识代码库中的漏洞。
  • 机密扫描:有助于防止泄露敏感数据。
  • 供应链监视:有助于防范潜在泄露的依赖项。

这些集成的安全措施有助于尽早识别漏洞,防止数据泄露,并确保应用程序供应链的完整性。

渗透测试 模拟针对应用程序的网络攻击,以评估其安全状况。 Azure 提供用于执行这些测试的指南和工具,以帮助确保部署在平台上的应用程序能够防范威胁。

建议将 CodeQL 集成到 CI 管道,以便尽早捕获漏洞。

了解详细信息:

合规性和治理测试

确保应用程序符合法律、法规和策略要求至关重要,尤其是在云环境中。 法规符合性 测试验证应用程序是否符合 GDPR、HIPAA 或 SOC 2 等标准。

Azure 提供策略和符合性工具(例如 Azure Policy 和 Azure 蓝图),以帮助跨 Azure 资源自动执行并强制实施合规性。 这些工具简化了在应用程序部署中维护治理和合规性标准的过程。

了解详细信息:

辅助功能测试

辅助功能测试对于使软件具有包容性且符合法律标准至关重要。 辅助功能见解等工具有助于识别和修复 Web 和移动应用中的辅助功能问题。 将 Accessibility Insights 集成到开发工作流中,通过提供基于 Web 内容辅助功能指南(WCAG)标准的指南和报告,促进自动化和手动检查。

A/B 测试

A/B 测试或拆分测试是比较两个版本的网页或应用的方法,以确定哪个版本性能更好。 Azure 提供支持 A/B 测试的以下服务:

  • Azure 应用服务:提供部署槽位,用于过渡环境,可在其中测试应用版本,而不会影响实时应用。

  • Azure 容器应用:提供一个灵活的环境,用于运行基于微服务的应用程序。 可以在此环境中实现 A/B 测试来测试应用版本。

使用这些服务部署应用程序的变体,然后评估用户响应和有效性。

Azure SDK 测试

对于使用 Azure 服务的开发人员,获得 Azure SDK 的熟练程度对于创建可靠且可缩放的应用程序至关重要。 以下 Azure SDK 测试(托管在适用于 JavaScript SDK 的 GitHub 上)是宝贵的资源:

通过探索这些测试,可以深入了解无缝 Azure 服务集成、展示 Azure 资源交互的最佳做法,并有助于确保高效且安全的实现。 探索更广泛的 SDK 示例,以便全面了解。

其他资源