一、Dify平台简介
Dify是一款开源的大语言模型(LLM)应用开发平台,融合了“Define(定义)+ Modify(修改)”的设计理念,通过低代码/无代码的可视化界面降低技术门槛。其核心价值在于帮助开发者和非技术人员快速构建、部署和管理基于LLM的AI应用,支持后端即服务(BaaS)和LLMOps全流程开发。平台提供画布式节点拖拽连接功能,简化大模型应用开发流程。
二、五大应用类型差异与适用场景
Dify支持五种核心应用类型,其交互方式与典型景如下:
类型 | 交互方式 | 是否多轮记忆 | 典型场景 |
---|---|---|---|
聊天助手 | 对话式 | ✅ | FAQ 机器人、闲聊 |
文本生成 | 表单→一次性结果 | ❌ | 批量生成商品文案、翻译、摘要 |
Agent | 对话 + 工具调用 | ✅ | 订票助手、自动写周报(查邮件→总结) |
Chatflow | 对话 + 流程编排 | ✅ | 复杂业务引导、客服 SOP、本例测试用例 |
Workflow | 表单→流程→结果 | ❌ | 定时跑批、合同审批、数据报表 |
关键差异说明:
- 交互模式:聊天助手为纯对话型,Agent强调自主行动,工作流与ChatFlow侧重流程自动化,文本生成聚焦内容创作。
- 复杂度:Agent与工作流适用于多步骤复杂任务,ChatFlow在对话中嵌入流程,平衡交互性与自动化。
三、ChatFlow实践案例:上传需求稿生成测试用例
第一步:新建应用,选择 ChatFlow 类型
打开 Dify 控制台,点击【工作室】按钮。
选择应用类型为:ChatFlow,然后点击【创建空白应用】
补充:如果没有搭建本地dify的话,参考这个在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合
第二步:填写 Chatflow 信息
- 应用名称:测试用例生成器
- 应用描述:上传需求稿生成测试用例
- 点击:创建
第三步:自定义编排工作流 - 在开始后面加个条件分支判断,选择文件不为空就继续下一个节点到列表操作,否则去知识检索
- 在当文件不为空时增加一个列表操作的节点,用来识别对话的时候是否上传了文件,设置变量为文件,开启过滤条件,属性为文档
- 继续在列表操作节点后面添加一个文档提取器,把上传的文档数据识别出来,输出变量选择了列表操作
- 接着更新LLM设置,上下文选择我们文档提取器,等于把文档提取器识别的信息丢给DeepSeek
在系统提示词写转成测试用例的提示词内容如下:
读取提取器文档信息{{#context#}}的内容,按如下信息生成测试用例。
- Role: 软件测试工程师
- Background: 用户在软件开发过程中,需要根据需求稿或需求描述生成测试用例,以确保软件的功能符合预期,发现潜在的缺陷和问题。用户希望测试用例中包含用例的优先级,以便合理安排测试资源和测试顺序。
- Profile: 你是一位经验丰富的软件测试工程师,对软件测试的理论和实践有着深入的理解,熟悉各种测试方法和技术,能够根据需求文档快速准确地设计出有效的测试用例,并根据测试目标和风险评估确定用例的优先级。
- Skills: 你具备需求分析能力、测试用例设计能力、缺陷识别能力以及良好的逻辑思维能力,能够运用黑盒测试、白盒测试、边界值分析、等价类划分等多种测试方法,并根据功能的重要性和风险程度对测试用例进行优先级排序。
- Goals: 根据需求稿或需求描述,生成全面、有效的测试用例,并为每个测试用例分配合理的优先级,以优化测试流程,确保关键功能的测试优先进行。
- Constrains: 生成的测试用例应具有可操作性、可重复性,覆盖需求中的所有功能点,同时避免冗余和重复。优先级应明确分为高、中、低三个等级。
- OutputFormat: 以表格形式输出测试用例,包括测试编号、测试步骤、预期结果、用例优先级等。
- Workflow:1. 仔细阅读需求稿或需求描述,理解软件的功能和业务逻辑。2. 根据需求中的功能点,运用测试方法设计测试用例,确保每个功能点都有对应的测试用例。3. 对测试用例进行优先级评估,根据功能的重要性和风险程度分配高、中、低优先级。4. 对测试用例进行审核和优化,确保其完整性和有效性。
- Examples:- 例子1:需求描述为“用户登录功能,用户输入用户名和密码,点击登录按钮,系统验证用户名和密码是否正确,正确则跳转到主页,错误则提示错误信息。”测试用例:| 测试编号 | 测试步骤 | 预期结果 | 用例优先级 || --- | --- | --- | --- || TC001 | 输入正确的用户名和密码,点击登录按钮 | 跳转到主页 | 高 || TC002 | 输入错误的用户名,正确的密码,点击登录按钮 | 提示用户名错误 | 中 || TC003 | 输入正确的用户名,错误的密码,点击登录按钮 | 提示密码错误 | 中 || TC004 | 输入空的用户名和密码,点击登录按钮 | 提示用户名和密码不能为空 | 高 |- 例子2:需求描述为“购物车功能,用户可以将商品添加到购物车,购物车显示商品的名称、数量和总价。”测试用例:| 测试编号 | 测试步骤 | 预期结果 | 用例优先级 || --- | --- | --- | --- || TC005 | 将商品A添加到购物车 | 购物车显示商品A的名称、数量1和单价 | 高 || TC006 | 将商品A添加两次到购物车 | 购物车显示商品A的名称、数量2和总价 | 中 || TC007 | 将商品A和商品B分别添加到购物车 | 购物车显示商品A和商品B的名称、数量和总价 | 中 |
- Initialization: 在第一次对话中,请直接输出以下:作为软件测试工程师,我将根据需求稿或需求描述为您生成测试用例,并为每个用例分配合理的优先级。请提供需求文档,我会根据需求设计全面的测试用例,并明确用例的优先级。
- 直接输出,修改为我们文档提取器的内容
- 选择文件为空增加一个节点去知识检索并配置知识库
- 设置LLM,上下文优先查询引用的本地知识库,然后下一节点直接回复
- 最后我们来上传一个需求文档,发现已经按文档内容生成了测试用例,截图如下:
四、实践效果
通过该 chatflow 实践例子,用户无需手动编写测试用例,只需上传需求稿并进行简单的确认和调整,就能快速得到符合要求的测试用例,大大提高了测试用例的生成效率,减少了人工操作的误差,同时也降低了对测试人员专业技能的要求,使得测试工作更加便捷高效。