项目实训博客记录——5
在我们的项目中,测试重点不只是单纯验证模型是否返回结果,而是验证整个调用链路是否稳定可靠。我们设计了一套完整的chat接口测试用例方案。
本轮测试的核心链路如下:
自然语言输入 → 路由 → 参数解析 → 任务调用 → 结果组织 → 解释返回
重点关注以下几点:
聊天功能是否正常,知识问答是否正确触发,RNA任务是否正确识别,多任务是否正确拆解,多序列是否正确解析,错误输入是否合理处理,回归问题是否再次出现。
测试用例的设计如下:
一、CHAT-NORMAL(普通聊天测试)用例
测试目的:验证系统在非RNA分析场景下是否能够正常作为聊天助手工作。
| 用例编号 | 测试点 | 请求示例 | 预期结果 |
| CHAT-NORMAL-001 | 普通问候 | 输入 "你好" | 返回自然聊天回复,不触发RNA分析任务 |
| CHAT-NORMAL-002 | 系统能力询问 | 输入 "你能做什么" | 系统返回功能介绍,不实际执行任务 |
| CHAT-NORMAL-003 | 无关问题 | 输入 "帮我解释什么是深度学习" | 系统正常回答,不调用RNA任务 |
核心验证点
| 验证项 | 预期 |
| task_type | general_chat |
| need_sequence | false |
| task_result | 空 |
| reply | 正常自然语言 |
二、CHAT-KNOW(知识问答测试)用例
测试目的:验证系统是否能够正确区分知识问答和模型预测
| CHAT-KNOW-001 | RNA专业知识问答 | 输入 "lncRNA 可以调控 miRNA 吗?" | 返回专业解释,触发知识检索 |
| CHAT-KNOW-002 | RNA修饰知识问答 | 输入 "m6A 修饰在 RNA 中通常有什么生物学意义? | 返回解释,不执行预测任务 |
| CHAT-KNOW-003 | motif概念问答 | 输入 "RNA motif 是什么?" | 返回概念解释,不调用motif任务 |
| CHAT-KNOW-004 | 冷门知识 | 输入 "ABCXYZ RNA 修饰有什么作用?" | 系统提示不确定或无结果 |
核心验证点
| need_knowledge_retrieval | true |
| task_result | 空 |
| knowledge_result | 有内容 |
| reply | 专业解释 |
三、CHAT-SINGLE(单序列单任务)用例
测试目的:验证一个序列+一个任务能否正确完成。
| CHAT-SINGLE-001 | 单序列 family 分类 | 输入 "请判断这条 RNA 属于什么家族:[序列]" | 返回 family 分类结果 |
| CHAT-SINGLE-002 | 单序列修饰预测 | 输入 "请分析这条 RNA 是否存在修饰:[序列]" | 返回修饰预测结果 |
| CHAT-SINGLE-003 | 单序列二级结构预测 | 输入 "请预测这条 RNA 的二级结构:[序列]" | 返回 dot-bracket、配对信息 |
| CHAT-SINGLE-004 | 单序列 motif 分析 | 输入 "请分析这条 RNA 中可能存在的 motif:[序列]" | 返回 motif 命中结果 |
核心验证点
| sequence | 正确提取 |
| task_type | 正确 |
| task_id | 存在 |
| result | 存在 |
四、CHAT-MULTISEQ(多序列单任务)用例
测试目的:验证系统能否正确解析多个序列。
| CHAT-MULTISEQ-001 | 多序列 family 分类 | 输入两条序列进行 family 分类 | 返回两条序列的 family 结果 |
| CHAT-MULTISEQ-002 | 多序列修饰预测 | 输入两条序列进行修饰预测 | 返回两条序列各自修饰结果 |
| CHAT-MULTISEQ-003 | 多序列二级结构预测 | 输入两条序列预测二级结构 | 返回两条结构预测结果 |
| CHAT-MULTISEQ-004 | 多序列 motif 分析 | 输入两条序列分析 motif | 返回两条 motif 结果 |
核心验证点
| sequences数量 | 正确 |
| items数量 | 一致 |
| sequence_id | 不混淆 |
五、CHAT-MULTITASK(单序列多任务)用例
测试目的:验证任务拆解能力。
| CHAT-MULTITASK-001 | 单序列 family + modification | 输入一条序列请求 family 和 modification | 返回两个任务结果 |
| CHAT-MULTITASK-002 | 单序列 family + structure | 输入一条序列请求 family 和 structure | 返回两个任务结果 |
| CHAT-MULTITASK-003 | 单序列 modification + motif | 输入一条序列请求 modification 和 motif | 返回两个任务结果 |
| CHAT-MULTITASK-004 | 单序列四任务综合分析 | 输入一条序列请求 family+modification+structure+motif | 返回四个任务结果 |
核心验证点
| tasks数量 | 正确 |
| task_id | 全部存在 |
| status | 独立 |
| result | 独立 |
六、CHAT-MULTI-BOTH(多序列多任务)用例
测试目的:验证系统最复杂的场景。
| CHAT-MULTI-BOTH-001 | 两条序列 family + modification | 输入两条序列请求 family+modification | 返回两类任务,每类两条序列结果 |
| CHAT-MULTI-BOTH-002 | 两条序列 structure + motif | 输入两条序列请求 structure+motif | 返回两类任务,每类覆盖两条序列 |
| CHAT-MULTI-BOTH-003 | 两条序列四任务综合分析 | 输入两条序列请求 family+modification+structure+motif | 返回四个任务,每个任务处理两条序列 |
核心验证点
| task数量 | 正确 |
| item数量 | 正确 |
| seq映射 | 正确 |
| reply | 汇总完整 |
七、CHAT-EXPLAIN(结果解释测试)用例
测试目的:验证系统是否具有:上下文记忆和结果解释能力。
| CHAT-EXPLAIN-001 | family结果追问 | 第二轮输入 "为什么它属于这个家族?" | 系统解释上一轮 family 预测 |
| CHAT-EXPLAIN-002 | 修饰预测追问 | 第二轮输入 "这个修饰结果可信吗?" | 系统解释可信度、概率信息 |
| CHAT-EXPLAIN-003 | 结构预测追问 | 第二轮输入 "dot-bracket 结果怎么看?" | 系统解释括号与点含义 |
| CHAT-EXPLAIN-004 | 多任务结果追问 | 第二轮输入 "请综合解释这些结果关系" | 系统综合解释多个任务结果 |
核心验证点
| 上下文关联 | 正确 |
| explanation | 有内容 |
| reply | 基于历史结果 |
八、CHAT-CORRECT(标准正确输入测试)用例
测试目的:验证主业务流程。
| CHAT-CORRECT-001 | 单任务正确输入 | 输入单序列二级结构预测 | 成功返回结构预测 |
| CHAT-CORRECT-002 | 多任务正确输入 | 输入单序列 family+modification | 成功返回两个任务结果 |
| CHAT-CORRECT-003 | 多序列正确输入 | 输入编号两条序列预测二级结构 | 成功解析两条序列,返回两个结构结果 |
| CHAT-CORRECT-004 | 中英文混合任务 | 输入英文任务表达 | 系统识别对应任务 |
核心验证点
| status | success |
| error | 空 |
| result | 正常 |
九、CHAT-ERROR(异常与边界测试)用例
测试目的:验证系统鲁棒性。
| CHAT-ERROR-001 | 空输入 | message为空 | 返回参数错误提示 |
| CHAT-ERROR-002 | 缺序列 | 输入 "请帮我预测 RNA 二级结构" | 系统提示需要提供序列 |
| CHAT-ERROR-003 | 非法字符序列 | 输入 "AAAAGCXXX123@@@" | 系统提示序列非法 |
| CHAT-ERROR-004 | 过短序列 | 输入 "AUG" | 系统提示长度不足或结果可信度低 |
| CHAT-ERROR-005 | DNA序列 | 输入 "ATGCTTAGCTAGCTTACGATCG" | 系统自动转换或提示DNA序列 |
| CHAT-ERROR-006 | 中文混合符号 | 输入 "AUGC修饰预测一下!!!GGCA???" | 系统提取合法RNA片段或提示格式错误 |
| CHAT-ERROR-007 | 任务意图冲突 | 输入 "请不要分析结构,但预测二级结构:[序列]" | 系统识别主要意图或提示澄清 |
| CHAT-ERROR-008 | 知识问答误触发任务 | 输入 "RNA 二级结构预测通常有哪些方法? | 系统返回知识问答 |
| CHAT-ERROR-009 | 任务请求但序列像文件名 | 输入 "请分析我刚上传的 test.fasta" | 系统提示未启用上传文件 |
| CHAT-ERROR-010 | input_mode回归测试 | 输入小文本修饰预测 | parsed_result.input_mode=text |
| CHAT-ERROR-011 | 多序列中一条非法 | 两条序列,一条正常,一条非法 | 第一条成功,第二条返回错误 |
| CHAT-ERROR-012 | 多任务中一个失败 | 四任务中人为让motif失败 | 其他任务正常,motif失败标记failed |
核心验证点
| error | 正确提示 |
| HTTP状态 | 正确 |
| 服务 | 不崩溃 |
十、REG-CHAT(回归测试)用例
测试目的:验证历史Bug不会再次出现。
| REG-CHAT-001 | 小文本任务不识别FASTA | 输入短文本修饰预测 | 解析为text,不返回fasta_file |
| REG-CHAT-002 | parsed_result.input_mode与请求一致 | 输入短文本二级结构预测 | parsed_result.input_mode=text |
| REG-CHAT-003 | 多任务 task_id 不为空 | 输入单序列多任务 | tasks每个task有task_id |
| REG-CHAT-004 | 知识问答不误调用模型 | 输入 "m6A 修饰是什么?" | 系统识别为知识问答 |
| REG-CHAT-005 | 任务问法不误判知识问答 | 输入 "请预测这条 RNA 是否存在 m6A 修饰" | 系统执行 modification_prediction |
| REG-CHAT-006 | 多序列解析数量正确 | 输入两条序列预测修饰 | parsed_result.sequences=2;items数量=2 |
| REG-CHAT-007 | 复杂输入不导致 router 异常 | 输入长文本请求多个任务并带追问 | 系统拆分任务并触发解释/知识检索 |
核心验证点
| 历史Bug | 不复现 |
| route_result | 正确 |
| task_id | 非空 |
| input_mode | 正确 |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)