AI 辅助测试创作( GitHub Copilot 预览版)

备注

预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前已经可用,以便客户可以抢先体验并提供反馈。

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

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

先决条件

在开始之前,请确保您拥有:

设置测试创作环境

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

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

用于 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's GitHub Copilot Chat 提供了一种 代理模式 ,可以帮助根据您的解决方案文件生成测试。 此模式允许 Copilot 更深入地访问和了解您的项目上下文。

要使用代理模式生成测试:

  1. 在 VS Code 中,打开 GitHub Copilot “聊天”(Ctrl+Shift+I)
  2. 从 Copilot 模式选择器中选择 代理
  3. 制作有关您要创建的测试的详细提示

测试生成的示例提示

尝试使用这样的提示来生成测试:

目标:
使用以 ButtonClicker 示例为 Power Apps 模型的测试引擎为 画布应用生成全面的测试套件

提示:
使用 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 test steps:包含使用表达式的 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 测试引擎测试创建。

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

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

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

使用测试引擎示例获取上下文

# samples.md 文档对测试引擎存储库中的所有可用示例进行了分类,这在制作提示 GitHub Copilot时可以作为很好的参考。 例如,在测试带有按钮的画布应用时,可以参考 按钮点击器示例

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

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

使用源代码控制的解决方案作为上下文

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

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

查看和优化生成的测试

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

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

与手动专业知识相结合

对于复杂的测试方案,用于 GitHub Copilot :

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

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

  • 特定于业务的验证规则
  • 环境考虑
  • 专业测试数据

常见的测试生成模式

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

测试画布应用

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

提示:
在 ./SolutionPackage/src/CanvasApps/src/MyExpenseApp/Src/App.fx.yaml 中为我的 Canvas 应用生成测试,以验证费用提交过程。 测试应填充费用字段,提交表单,并验证是否显示确认消息。

测试模型驱动应用

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

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

测试 Dataverse 扩展

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

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

特定于样本的测试提示

若要获得最准确的测试生成,请参考测试引擎样本目录 符合测试需求的特定样本。 以下是针对常见测试场景的定制提示:

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 生成跨多个环境工作的测试:

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

生成数据模拟场景

对于使用连接器模拟 隔离测试:

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

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

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

了解非确定性测试

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

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

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

测试引擎提供 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 提示
  • 它传递了一个上下文和一个问题以供评估
  • 它验证返回的评级是否与预期值匹配
  • 它提供有关测试成功或失败的清晰反馈

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

结合人工智能感知测试

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

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

故障排除和优化

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

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

探索测试引擎功能
浏览测试引擎示例目录
了解 Power Fx 测试函数
了解 YAML 测试格式
探索身份验证选项
培训:使用代理模式构建 GitHub Copilot 应用程序