备注
预览功能不适合生产使用且功能可能受限。 这些功能在正式发布之前已经可用,以便客户可以抢先体验并提供反馈。
为 Power Platform 应用程序创建全面的测试计划可能非常耗时,尤其是对于复杂的场景。 人工智能辅助创作工具等 GitHub Copilot 可以通过生成测试模板、建议测试用例和自动创建样板代码来显着加速这一过程。
本指南介绍如何与源代码管理解决方案一起使用 GitHub Copilot Power Platform ,以有效地创建测试引擎测试计划。
先决条件
在开始之前,请确保您拥有:
- Visual Studio 已安装代码
- GitHub Copilot 订阅
- GitHub Copilot VS Code 的聊天扩展
- Power Platform 已安装 CLI
- 源头控制 Power Platform 的解决方案
设置测试创作环境
为了最大限度地提高 AI 辅助测试创作的有效性,请将这些工具组合到结构化工作流程中:
- 获取源文件
- 从源代码管理克 Power Platform 隆 环境或解决方案
- 使用 pac solution export Power Platform 和 pac solution unpack 从 文件中 导出和解压解决方案
- 初始化 git 存储库以进行版本控制(如果尚未完成)
- 在解决方案存储库中创建专用测试文件夹
- 在 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 更深入地访问和了解您的项目上下文。
要使用代理模式生成测试:
- 在 VS Code 中,打开 GitHub Copilot “聊天”(Ctrl+Shift+I)
- 从 Copilot 模式选择器中选择 代理
- 制作有关您要创建的测试的详细提示
测试生成的示例提示
尝试使用这样的提示来生成测试:
目标:
使用以 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 验证此行为的步骤。
库测试提示
BasicGallery 和 NestedGallery 示例演示如何测试库交互:
提示:
为我的库应用生成一个测试,其中我有一个“产品”库,其中包含包含“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 应用程序