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