微软于7月31日发布了一款名为 code-testing-generator 的开源智能体,能够为任意编程语言自动生成单元测试。
该智能体会先学习用户的代码仓库,然后自主规划、编写并验证测试用例,确保其有效可用。目前该智能体仅支持单元测试的生成,集成测试、端到端测试、浏览器测试和性能测试暂不在其能力范围之内。
智能体通过"研究-规划-实施"(RPI)流水线来协调测试生成工作。首先,智能体会扫描代码仓库,找出需要测试的代码,识别所用编程语言和测试框架,参考已有测试用例,并确定正确的构建与运行命令。
随后,智能体会根据任务规模从三种执行路径中选择最合适的一种:
直接模式:读取相关代码,直接编写测试并验证结果。
单次模式:完成一次研究和规划后,按照既定方案执行。
迭代模式:循环执行上述流程,以覆盖较大规模的需求或达到特定的覆盖率目标。
确定路径后,智能体会从结构简单的代码入手,逐步处理依赖关系更复杂的代码,并将每个行为映射到对应的测试文件。测试编写完成后,智能体还会对生成的测试进行质量检验,具体包括以下几个方面:
模拟对代码进行微小修改,验证测试是否会相应失败;
检查断言是否存在缺失或不够严格的情况;
确认每一个待测场景均有对应的测试用例;
构建完整工作区并运行全套测试套件;
确认仓库的测试命令能够成功识别新生成的测试。
code-testing-generator 智能体已以 dotnet-test 插件的形式发布于 GitHub 上的 dotnet/skills 仓库中。该插件可在 GitHub Copilot CLI 中使用,同时也以预览功能的形式支持在 Visual Studio Code 及 VS Code Insiders 中通过插件方式调用。
Q&A
Q1:code-testing-generator 智能体目前支持哪些类型的测试?
A:目前该智能体仅支持生成单元测试,集成测试、端到端测试、浏览器测试和性能测试均不在其当前支持范围内。微软表示未来可能会扩展更多测试类型。
Q2:code-testing-generator 智能体的 RPI 流水线是怎么工作的?
A:RPI 即"研究-规划-实施"流水线。智能体首先扫描代码仓库,识别编程语言、测试框架和构建命令;然后根据任务大小选择直接、单次或迭代三种执行模式之一;最后从简单代码开始逐步编写测试,并在完成后自动进行质量验证,包括检查断言完整性、运行全套测试套件等。
Q3:code-testing-generator 智能体在哪里可以使用?
A:该智能体以 dotnet-test 插件形式发布在 GitHub 的 dotnet/skills 仓库中,支持在 GitHub Copilot CLI 中使用,同时也可以通过插件方式在 Visual Studio Code 和 VS Code Insiders 中调用,目前该功能处于预览阶段。
