智能应用程序工作负载的部署和测试注意事项

维护正常的应用程序生命周期管理(ALM)流程,以避免生产问题并快速解决任何回归问题。

确定 ALM 策略

通过制定全面的 ALM 策略(包括版本控制、持续集成/持续部署(CI/CD)和自动化测试),确保您的开发过程高效且可扩展。

评估从简单到高级 CI/CD 的选项:

使用解决方案进行环境管理

维护独立的开发、测试和生产环境。 这种做法有助于隔离问题,并确保在到达用户之前对更改进行彻底测试。

使用解决方案在不同环境中移动在 Microsoft Copilot Studio 中创建的插件。

主要建议和注意事项:

  • 在解决方案的环境中工作:确保所有开发工作都在解决方案的框架内进行。
  • 独立部署解决方案:只有在需要独立部署组件时,才创建不同的解决方案。
  • 了解限制:了解自动部署的局限性,评估哪些设置必须在部署后手动设置或更新,例如 Application Insights 集成、部署的渠道和安全设置。
  • 使用自定义发布者和前缀:实施自定义发布者和前缀,以便更好地组织和管理。
  • 使用环境变量:使用环境变量,以获取因环境而异的设置和秘密。
  • 作为托管解决方案导出和部署:以托管方式导出和部署解决方案,设置开发环境时除外。
  • 仅限在开发环境中进行自定义:避免在开发环境之外进行自定义。
  • 自动化 ALM 流程:考虑将 ALM 自动化,以实现源控制和自动部署。

示例

此示例概述了智能应用程序工作负载的部署策略,并描述了与每个环境关联的角色和流程:开发(Dev)、测试(Test)、质量保证(QA)和生产(Prod)。

解决方案配置示例

  1. 开发环境 (Dev)

    • 目的:用于解决方案的初始创建和定制。
    • 活动:开发人员构建和修改应用程序、流程和代理等组件。 所有自定义和配置都在此处执行。
    • 关键实践
      • 对所有组件使用自定义发布者和前缀。
      • 为设置和机密实现环境变量。
      • 确保所有更改都受版本控制并记录在案。
  2. 测试环境(测试)

    • 目的:对开发的解决方案进行初步验证和测试。
    • 活动:解决方案作为托管解决方案从开发环境导出,并导入测试环境。 进行功能和集成测试以及早发现和解决问题。
    • 关键实践
      • 维护单独的测试环境以模拟真实场景。
      • 使用环境变量来管理特定于测试环境的设置和机密。
      • 自动执行部署过程,以确保一致性和可重复性。
  3. 质量保证环境(Q.A. 或 QA)

    • 目的:致力于彻底的质量保证和用户验收测试(UAT)。
    • 活动:将托管解决方案从测试环境导入 QA 环境。 我们进行了广泛的测试,包括性能、安全性和 UAT,以确保解决方案满足所有要求和标准。
    • 关键实践
      • 使用环境变量管理特定于 QA 的设置和机密。
      • 让用户参与 UAT,以收集反馈并确保解决方案满足他们的需求。
      • 在可能的情况下实现测试过程的自动化,以提高效率和准确性。
  4. 生产环境 (Prod)

    • 目的:托管解决方案面向用户的实时版本。
    • 活动:质量保证测试成功后,从质量保证环境导出受管解决方案,并将其导入生产环境。 这种环境受到严格控制,以确保稳定性和可靠性。
    • 关键实践
      • 将解决方案部署为托管解决方案,以防止未经授权的更改。
      • 使用环境变量管理特定于生产的设置和机密。
      • 监视和维护解决方案,以确保最佳性能并及时解决任何问题。

总体策略

  • 关注点分离:每个环境都有不同的目的,确保开发、测试、质量保证和生产活动互不干扰。
  • 自动化:自动化 ALM 流程,包括源代码控制、测试和部署,以提高效率并降低出错风险。
  • 一致性:使用环境变量和自动部署脚本,保持不同环境的一致性。

制定测试策略

确保您有一个明确的计划来验证您的智能应用程序工作负载和集成是否按预期运行。

  • 为智能应用程序工作负载定义测试策略。 使用测试框架批量测试用户发言,并验证是否触发了适当的主题,或在 90% 的情况下第一个“您是意思是”选项是否正确。

  • 将测试集成作为完整的端到端对话测试的一部分,使用 Test Framework 扩展测试功能进行测试。

  • 使用 Power CAT Copilot Studio 工具包 配置代理和测试。 针对 Copilot Studio 应用程序接口(Direct Line)运行单个测试,并根据预期结果评估代理响应。

  • 确保您了解非功能性要求,例如可用性、合规性、数据保留/驻留、性能、隐私、恢复时间、安全性和可伸缩性。 例如,网站上的聊天小组件应在单击后的 5 秒内加载并开始对话。 同样,触发以向用户返回信息的云端流应在 10 秒内提供所需的数据。