使用 GitHub Copilot 进行 AI 辅助测试创作(已弃用)

备注

测试引擎已弃用 ,将在将来的版本中删除。 使用 Power Platform Playwright 示例在 Power Platform 和 Dynamics 365 服务中测试自动化功能。

为 Power Platform 应用程序创建全面的测试计划可能非常耗时,尤其是对于复杂场景。 AI 辅助的创作工具(如GitHub Copilot)可以通过生成测试模板、建议测试用例和自动化样板代码创建来显著加速此过程。

本指南介绍如何将GitHub Copilot与 Power Platform 源代码管理解决方案配合使用,以高效创建测试引擎测试计划。

必备条件

开始之前,请确保您有:

设置测试创作环境

为了最大限度地提高 AI 辅助测试创作的有效性,将这些工具组合到结构化工作流中:

  1. 获取源文件
  2. 初始化 git 存储库以进行版本控制(如果还未完成此任务)
  3. 在解决方案存储库中创建专用测试文件夹
  4. 在 Visual Studio Code 中打开解决方案文件夹

使用GitHub Copilot创建测试

GitHub Copilot可以帮助你根据源代码控制的解决方案生成各种测试组件。 以下是如何有效使用其功能:

使用示例文档作为上下文

测试引擎示例目录提供了丰富的GitHub Copilot参考资料来源。 可以通过以下方法帮助Copilot生成更高质量的测试:

  • 在工作区中包含 samples.md 文件
  • 在提示中引用特定示例
  • 提供指向示例GitHub存储库的链接

例如,您可以:

  • 在 VS Code 中打开应用程序代码和 samples.md 文件
  • 让 Copilot 创建测试,“类似于 ButtonClicker 示例”或“使用 Dataverse 示例中的模式”
  • 从符合您测试需求的示例中引用特定功能

此方法有助于Copilot了解 Power Platform 测试引擎模式并生成更准确的测试。

在代理模式下使用GitHub Copilot

Visual Studio Code 的 GitHub Copilot 对话助手 提供了一个 Agent Mode,可以帮助基于项目文件生成测试。 此模式允许Copilot更深入地访问和理解项目上下文。

要使用智能体模式生成测试:

  1. 在 VS Code 中,打开 GitHub Copilot 对话助手(Ctrl+Shift+I)
  2. 从Copilot模式选择器中选择Agent
  3. 制作有关您要创建的测试的详细提示

生成测试的示例提示

尝试使用类似以下的提示生成测试:

目标:
使用 Power Apps 测试引擎为画布应用生成一个全面的测试套件,该测试套件是根据 ButtonClicker 示例建模的。

提示:
使用 at https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker 示例作为参考,为 ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml 生成测试。 创建预期案例、边缘案例和例外案例。 测试应根据示例创建测试 YAML 文件和 Power Fx 测试步骤、config.json 和 RunTest.ps1,以便我能够运行测试。

目标:
为模型驱动应用制定详细的测试计划,以确保核心功能和业务逻辑按预期工作。

提示:
为位于 ./SolutionPackage/src/Other/Solution.xml 的模型驱动应用创建全面的测试计划。 测试应验证窗体加载、记录创建和业务规则执行。 生成测试 YAML、Power Fx 步骤和 PowerShell 脚本以运行测试。

目标:
为 Dataverse 实体构建测试计划,来通过 Power Fx 操作验证 CRUD 操作。

提示:
为我的 Dataverse 实体创建全面的测试计划。 测试应执行创建、更新、删除 Power Fx 操作。 生成测试 YAML、Power Fx 步骤和 PowerShell 脚本以运行测试。

了解生成的测试组件

GitHub Copilot生成测试时,通常会创建以下组件:

  • YAML 测试计划:定义测试结构、应用 URL 和测试步骤
  • Power Fx 测试步骤:包含使用 Power Fx 表达式的测试逻辑
  • config.json:测试执行参数的配置
  • RunTest.ps1:用于执行测试的 PowerShell 脚本

示例:生成的测试结构

MyAppTests/
├── MyAppTest.fx.yaml     # Power Fx test steps
├── MyAppTest.yml         # Test plan definition
├── config.json           # Test configuration
└── RunTest.ps1           # Test execution script

AI 辅助测试创作的最佳做法

要充分利用GitHub Copilot进行测试引擎的测试创建,请考虑以下部分。

在提示中提供清晰的上下文

具体说明要测试的内容,并包含对以下内容的引用:

  • 要测试的确切文件
  • 用作模板的示例测试
  • 要覆盖的特定测试场景
  • 任何身份验证或环境要求

使用 Test Engine 上下文示例

samples.md 文档编录了测试引擎存储库中所有可用示例,在创建提示GitHub Copilot时,该示例可能是一个很好的参考。 例如,在测试带有按钮的画布应用时,可以参考按钮点击器示例

提示:
使用 https://github.com/microsoft/PowerApps-TestEngine/tree/main/samples/buttonclicker 中的 ButtonClicker 示例,在 ./SolutionPackage/src/CanvasApps/src/MyApp/Src/App.fx.yaml 为我的画布应用生成测试。 测试应该:
1. 验证我的计数器按钮是否在屏幕上递增值
2. 测试边界条件(例如,最大值)
3. 包括 OnTestCaseStart 和 OnTestCaseComplete 生命周期挂钩
4. 使用适当的环境变量生成 config.json

此方法有助于Copilot了解测试结构,并根据经过验证的示例生成更准确的上下文相关测试。

使用源代码管理解决方案作为上下文

当Copilot能够分析您的解决方案结构时,其性能最佳。 为 Power Platform 解决方案使用源代码管理,以提供此上下文。 此上下文允许Copilot:

  • 了解应用的结构
  • 识别控件名称和属性
  • 生成更准确的测试步骤
  • 引用正确的文件路径

查看和优化生成的测试

虽然 AI 生成的测试提供了一个很好的起点,但始终:

  • 验证控件引用是否与应用程序匹配
  • 为关键业务功能添加断言
  • 确保正确处理边缘案例
  • 验证身份验证配置

与手动专长相结合

对于复杂的测试方案,请使用GitHub Copilot执行以下操作:

  • 生成测试框架和结构
  • 创建标准验证模式
  • 建议要考虑的边缘案例

然后,利用您的领域专长进行以下方面的增强:

  • 特定于业务的验证规则
  • 环境注意事项
  • 专门的测试数据

常见的测试生成模式

本节包含一些常见的测试生成模式:

测试画布应用

对于画布应用,使用引用您的源代码管理解决方案中的 App.fx.yaml 文件的提示:

提示:
在 ./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml 为我的画布应用生成测试,来验证支出提交过程。 测试应填充支出字段,提交窗体,并验证是否显示确认消息。

测试模型驱动应用

对于模型驱动应用,重点关注实体导航、窗体交互和业务规则:

提示:
为我的模型驱动应用创建一个测试,来测试客户实体窗体。 测试应创建新的客户记录,验证必填字段,并验证额度限制计算的业务规则是否正常工作。

测试 Dataverse 扩展

对于 Dataverse 测试,强调数据操作和业务逻辑验证:

提示:
生成一个 Dataverse 测试来验证我的解决方案中的自定义插件。 测试应创建测试记录,触发插件执行,并验证是否发生了预期的数据转换。

特定于示例的测试提示

要获得最准确的测试生成,请参考符合您的测试需求的 Test Engine 示例目录中的特定示例。 以下是针对常见测试场景的定制提示:

ButtonClicker 示例提示

ButtonClicker 示例演示了基本的计数器功能测试。 使用这些提示:

提示:
为我的计数器应用生成一个测试,其结构与 ButtonClicker 示例类似。 我的应用具有名为“IncrementBtn”和“ResetBtn”的按钮,其中包含显示当前计数的“CounterLabel”。 创建一个测试,以验证两个按钮是否正常工作,并且最大计数是否为 10。

提示:
使用 ButtonClicker 示例作为参考,为我的按钮交互应用创建测试。 我的应用有一个“SubmitButton”,只有在完成“NameInput”和“EmailInput”字段时才应启用该按钮。 生成一个测试计划,其中包含验证此行为的 Power Fx 步骤。

BasicGalleryNestedGallery 示例演示如何测试库交互:

提示:
为我的库应用生成一个测试,其中我有一个“产品”库,其中包括包含“TitleLabel”、“PriceLabel”和“SelectButton”控件的产品项。 使用 BasicGallery 示例结构来验证我是否可以选择项,以及正确的详细信息是否显示在“DetailPanel”中。

数据操作提示

Dataverse 示例演示数据操作测试:

提示:
使用 Dataverse 示例模式为我的 CRM 应用创建测试。 测试我是否可以创建新的联系人记录,对其进行更新,然后验证更改是否是持续的。 包括 UI 测试和直接 Dataverse 操作。

AI 测试提示

要测试 AI 支持的功能,请参考 AI 提示示例

提示:
根据 AI 提示示例为我的情绪分析应用生成测试。 我的应用有一个“FeedbackInput”文本框,并使用AI Builder将其分类为正、负或中性。 创建一个测试,来验证不同的输入能否在可接受的阈值内产生预期输出。

高级技巧

本节提供高级提示功能的示例。

创建多环境测试套件

可以提示Copilot生成跨多个环境运行的测试:

提示:
为我的应用生成一个测试套件,该套件可以在开发、测试和生产环境中运行,并为每个环境提供适当的配置变量。

生成数据模拟场景

对于使用连接器模拟的独立测试:

提示:
为使用 Office 365 Outlook 连接器的应用创建带有模拟连接器响应的测试。 测试应模拟接收电子邮件并验证应用的处理逻辑。

测试 AI 功能并处理非确定性结果

当您使用 AI 驱动的应用程序时,测试会带来独殊挑战,因为即使输入相同,AI 输出在运行时也可能略有不同。 这种非确定性行为需要特殊的测试方法。

了解非确定性测试

非确定性测试涉及验证可能在测试运行中合法变化的输出:

  • AI 模型输出:来自 AI 模型(如 GPT 或自定义AI Builder组件)的响应
  • 置信度分数:可能在可接受范围内波动的数值评估
  • 生成的内容:AI 系统生成的文本或建议

使用 Preview.AIExecutePrompt 对 AI 功能进行确定性测试

Test Engine 提供 Preview.AIExecutePrompt,支持对 AI 响应进行确定性验证。 此方法让您可以:

  • 在测试场景中执行 AI 提示
  • 分析和验证结构化响应
  • 验证存在潜在变化的情况下关键输出是否符合预期

示例:使用AI Builder分级评估

以下示例演示了如何使用 Preview.AIExecutePrompt 函数测试 AI 驱动的评级系统:

EvaluateTestQuestionPrompt(Prompt: TestQuestion): TestResult =
  With({
    Response: ParseJSON(
      Preview.AIExecutePrompt("PromptEvaluator",
      {
        Context: "You are a helpful agent asking about external customer service questions.",
        Question: Prompt.Question
      }).Text)
  },If(
    IsError(AssertNotError(Prompt.ExpectedRating=Response.Rating, Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating)),
    {PassFail: 1, Summary: Prompt.Question & ", Expected " & Prompt.ExpectedRating & ", Actual " & Response.Rating}, {PassFail: 0, Summary: "Pass " & Prompt.Question}
  ))

在此示例中:

  • 该测试针对“PromptEvaluator”模型执行 AI 提示
  • 它传递了一个上下文和一个问题来进行评估
  • 它验证返回的评级是否与预期值匹配
  • 它提供有关测试成功或失败的清晰反馈

您可以在 PowerApps-TestEngine 存储库中的 AI 提示示例中探索完整的实现。

引入 AI 感知测试

使用 GitHub Copilot 为由 AI 驱动的应用程序生成测试时:

提示:
为我的 AI 驱动的应用生成一个测试,该应用使用 AI Builder 表单处理。 包括测试步骤来验证 AI 结果与非确定性输出的适当容差。

故障排除和优化

如果GitHub Copilot生成不符合需求的测试:

  • 优化提示:更具体地说明要测试的内容
  • 提供示例:链接到符合您所需风格的特定测试示例
  • 分解复杂的测试:请求生成更小、更聚焦的测试组件
  • Iterate:使用Copilot的响应优化下一个提示

探索 Test Engine 功能
浏览 Test Engine 示例目录
了解 Power Fx 测试函数
了解 YAML 测试格式
探索身份验证选项
训练:使用 GitHub Copilot 智能体 模式生成应用程序