【分享】看好了!AI 之力是这样用的!- AI赋能 MS 测试用例平台生成实践

:open_book: 前言:

在《进击的巨人》中,当枭手握匕首,那句“看好了!巨人之力是这样用的!”不仅震撼了无数观众,也成为极致力量觉醒的经典宣言。

而在当今软件开发的世界里,我们也迎来了一位新的“巨人”——人工智能。它不再只是科幻小说里的概念,而是真实地走进了我们的开发流程、测试体系,甚至是每一个细节的优化中。

随着软件复杂度的不断提升,传统的手工编写测试用例方式效率低下且容易遗漏边界场景。为了提升测试效率与质量,我们尝试引入 AI 技术,结合业务需求自动生成测试用例,并将其集成到我们的 MS平台中,实现智能化测试流程。

本文将带你一起“释放 AI 的巨人之力”,讲述我们如何借助 Dify 平台,在 MS 系统中实现 AI 自动生成测试用例的全过程。

-看好了!AI 之力是这样用的!

技术选型:为何选择 Dify 而不是 Spring AI?

在调研阶段,对比了多个 AI 集成方案,最终选择了 Dify 作为 AI 接入框架,主要基于以下几点考虑:

:white_check_mark: 1. 图形化界面 + 拖拽式构建 AI 应用

  • Dify 提供了可视化的流程编排工具,可以轻松配置 Prompt、知识库、逻辑分支等模块。

  • 相比之下,Spring AI 更偏向代码开发,需要手动封装模型调用逻辑,学习成本较高。

:white_check_mark: 2. 支持国内主流大模型厂商

  • Dify 原生支持通义千问、DeepSeek等中文模型,并提供良好的中文理解和输出能力。

  • Spring AI 更侧重于国际模型(如 OpenAI、Anthropic),对中文模型的支持有限。

:white_check_mark: 3. 开箱即用的 AI 能力

  • Dify 提供了丰富的应用模板,可以直接部署并快速验证功能,省去了大量工程化工作。Dify 提供标准的 HTTP 接口,适用于任何语言栈的后端服务,便于集成进现有系统。

  • 如果使用 Spring AI,则需要从零开始集成 LLM 接口、Prompt 管理、流式处理等功能。

准备工作:配置 Dify 工作流

我们通过私有化部署的 Dify 搭建了一个 AI 测试用例生成服务,并配置了如下核心组件:

:wrench: 1. Prompt 设计

在提示词设计中,我们明确要求 AI 输出特定格式的测试用例,例如 JSON 格式,以确保后续平台能正确解析和展示结果。(这里涉及一些行业敏感信息,不便展示)

:package: 2. 集成知识库(可选)

我们可以上传产品文档、接口说明、历史测试用例等资料,帮助 AI 更准确地理解业务逻辑,从而生成更贴合实际的测试用例。

:arrows_counterclockwise: 3. 工作流编排

通过 Dify 的可视化编排功能,我们将“输入接口信息 → 调用模型 → 输出测试用例”这一流程固化下来,形成标准化的 AI 生成流程。


接入 MS 平台

完成 Dify 的配置后,我们在 MS 平台中集成了 Dify 提供的 RESTful API,具体步骤如下:

:outbox_tray: 1. 用例场景输入

在ms平台输入提示词

这里做了一个简单的dialog交互,用户可以输入提示词(这里限定为AI生成用例的场景描述),并选择期望生成的用例数量(因为llm的输出token限制,并不能无限量的生成测试用例,所以这里设定一个期望值)

:inbox_tray: 2. 结果解析与展示

点击【生成】,可以看到AI生成的测试用例会自动解析成 名称-前置-步骤-等级的列表格式到界面上,

在这里用户可以勾选需要采纳的用例,点击【导入用例】,用例会直接添加到当前项目的用例库

也可以选择【导出生成结果】,导出成excel文件,做进一步编辑

:white_check_mark: 初步成果

  • 显著提升测试用例覆盖率,特别是边界值、异常情况的覆盖;

  • 减少测试人员重复劳动,提升整体测试效率;

  • 实现了 AI 在测试流程中的初步落地。

:hammer_and_wrench: 后续优化方向

  • 引入反馈机制,让测试人员对生成用例进行评分,持续优化 Prompt;

  • 结合 RAG 技术,利用历史测试数据训练 AI,提高生成准确性;

  • 将 AI 生成用例与自动化测试平台打通,实现闭环测试;

总结

通过 Dify 提供的图形化工具、中文模型支持和通用 API 接口,我们能够高效地将 AI 技术集成进 MS 平台,实现测试用例的智能生成。也希望官方可以尽快在开源版本中增加AI能力,让广大用户早日享受到AI的便捷。

这里和MS进行交互的界面是怎么做的?

加这个功能是要修改源码吗?还是使用自定义插件就可以作到了

需要改源码

好的, 谢谢