一、概述
1.1 传统缺陷分析的痛点
缺陷分析是软件测试的核心环节,直接决定了问题的修复优先级和版本发布质量。然而在传统测试流程中,缺陷分析面临以下痛点:
- 分类耗时:测试人员需要人工阅读每条缺陷描述,判断其类型和模块归属。对于大型项目,单轮测试可能产生数百条缺陷,人工分类不仅耗时,还容易因疲劳导致分类不一致。
- 严重度误判:严重度评估高度依赖个人经验。初级测试人员可能将影响核心交易链路的问题标为 Minor,而对 UI 拼写错误标为 Critical,造成优先级混乱。
- 根因定位难:从复现步骤到代码根因的链条长,涉及前端、后端、中间件、数据库等多层。缺乏系统化的分析手段时,开发人员经常需要反复沟通才能锁定问题源头。
- 重复缺陷泛滥:不同测试人员可能对同一底层问题提交多份缺陷报告,增加了缺陷管理的冗余和沟通成本。
- 趋势感知滞后:缺乏对缺陷数据的聚合分析能力,无法及时发现某些模块的质量劣化趋势,错失提前干预的时机。
1.2 AI 如何增强缺陷分析全流程
AI(尤其是大语言模型 LLM 和传统机器学习模型)可以在缺陷分析的全生命周期中发挥增强作用:
缺陷提交
AI 实时校验描述完整性,自动补全缺失字段,初步分类建议
自动分类
基于缺陷描述自动归类为功能/性能/安全等类型,定位所属模块
严重度评估
结合影响范围和业务上下文,给出严重度分级建议
重复检测
语义比对已有缺陷库,识别重复或相似缺陷,避免冗余
根因分析
融合日志、代码变更和复现步骤,辅助定位问题根因
趋势预测
基于历史缺陷数据,预测高风险模块和回归风险
二、自动缺陷分类
2.1 按类型分类
缺陷类型的准确分类是后续处理流程的起点。AI 系统可基于缺陷描述文本,自动将缺陷归入以下预定义类型:
| 分类类型 | 典型描述特征 | AI 识别依据 |
|---|---|---|
| 功能缺陷 | 预期结果与实际不符、业务流程中断、计算错误 | 关键词匹配 + 语义理解业务逻辑矛盾 |
| 性能缺陷 | 响应慢、超时、内存泄漏、CPU 飙升 | 时间/资源指标关键词 + 负载场景描述 |
| 安全缺陷 | 越权访问、注入漏洞、敏感信息泄露、加密缺陷 | 安全术语词典 + 权限/鉴权语义 |
| UI/UX 缺陷 | 布局错乱、样式异常、交互不友好、文案错误 | 视觉描述词 + 前端组件名称 |
| 兼容性缺陷 | 特定浏览器/设备异常、版本不兼容 | 环境标识词 + 对比语义 |
| 数据缺陷 | 数据丢失、精度错误、格式异常、数据不一致 | 数据实体名 + 一致性/完整性语义 |
| 集成缺陷 | 接口调用失败、消息丢失、第三方服务异常 | API/接口名 + 调用链路描述 |
2.2 按严重度分级
严重度分级是缺陷管理的核心决策点。AI 通过分析缺陷描述中的业务影响范围、用户感知程度、数据安全风险等维度,自动建议严重度等级:
| 严重度等级 | 定义 | AI 判定规则示例 |
|---|---|---|
| Critical | 系统崩溃、数据丢失、核心业务不可用 | 包含「崩溃」「无法启动」「交易失败」且影响主链路 |
| Major | 主要功能异常、但有临时规避方案 | 功能不可用但可绕过,或影响面较大的非核心功能 |
| Minor | 非关键功能异常、有限影响 | 边界场景、特定条件下偶发、不影响主流程 |
| Trivial | UI 瑕疵、文案错误、建议性改进 | 仅涉及展示层、不阻断任何操作、用户感知低 |
2.3 按模块归属
通过分析缺陷描述中的页面/接口名称、业务流程关键词、报错堆栈等信息,AI 可以自动关联到对应的系统模块。典型技术实现包括:
- 文本-模块映射:构建模块关键词知识库(如「转账」→ 核心交易模块,「登录」→ 统一认证模块),结合描述中的命名实体进行匹配。
- 堆栈解析:从报错日志中提取类名和包路径,通过代码索引定位所属模块。
- 历史学习:利用已标注的缺陷数据训练分类模型,学习「描述→模块」的映射关系。
2.4 两种技术路线对比
| 维度 | 传统分类模型(ML) | 大语言模型(LLM) |
|---|---|---|
| 技术原理 | 基于标注数据训练的分类器(如 BERT、XGBoost) | 基于 Prompt 的少样本/零样本推理 |
| 数据需求 | 需要大量标注样本(通常 500+ 条/类) | 仅需少量示例或零样本即可工作 |
| 分类精度 | 在充分训练后精度高(90%+),但泛化能力有限 | 理解力强,零样本可达 70-85%,微调后可达 90%+ |
| 冷启动 | 慢,需数据积累和模型训练(数天到数周) | 快,当天即可通过 Prompt 工程上线 |
| 可解释性 | 较低,通常为黑盒预测 | 可输出分类理由,便于人工复核 |
| 维护成本 | 高,需定期重训以适应新类型 | 低,调整 Prompt 即可适应变化 |
| 适用场景 | 稳定业务、大规模批量分类 | 快速试点、多变的分类需求、需要解释性 |
三、智能缺陷严重度评估
3.1 基于描述的严重度预测
LLM 通过理解缺陷描述的自然语言语义,提取以下关键信号来预测严重度:
- 关键词信号:「崩溃」「白屏」「数据丢失」「死锁」→ 高严重度;「建议」「优化」「美化」→ 低严重度。
- 影响范围描述:「所有用户」「生产环境」「核心交易」→ 提升严重度;「个别用户」「测试环境」「非核心功能」→ 降低严重度。
- 紧急性线索:「阻塞发版」「合规红线」「资金风险」→ 最高优先级。
- 是否有规避方案:若描述中提到「可通过 XXX 绕过」,可适当下调严重度。
3.2 影响范围分析
AI 系统可结合系统架构知识图谱,推断缺陷的波及范围:
- 用户影响面:受影响用户群体的规模(全量/特定角色/特定渠道)。
- 功能依赖链:若缺陷发生在公共组件或基础服务,则所有依赖该组件的上游功能均受影响。
- 数据影响:是否涉及数据写入、是否可能导致数据不一致或丢失。
- 合规影响:是否触及监管红线(如账务差错、客户信息泄露)。
3.3 复现可能性评估
AI 可以分析复现步骤的清晰度和可操作性,评估缺陷的复现概率:
- 必现(100%):步骤清晰确定,每一步操作可精确描述。此类缺陷修复优先级最高。
- 高频(>50%):存在概率性触发条件,但发生频率高,通常与特定数据或并发场景相关。
- 偶发(<10%):触发条件复杂或不明,复现依赖特定的环境/数据组合。
LLM 还可以辅助分析复现步骤中的逻辑漏洞,提出补充验证建议,帮助测试人员提升复现步骤的质量。
3.4 衡量指标
| 指标 | 定义 | 计算方式 | 目标值 |
|---|---|---|---|
| 评估准确率 | AI 严重度建议与人工最终判定一致的比例 | 一致数量 / 总评估数量 | ≥ 85% |
| 误判率 | AI 高估严重度(将低严重度判为高)的比例 | 高估数量 / 总评估数量 | ≤ 10% |
| 漏判率 | AI 低估严重度(将高严重度判为低)的比例 | 低估数量 / 总评估数量 | ≤ 5%(此指标尤为关键) |
| 模糊度 | AI 无法给出明确判断,需要人工介入的比例 | 低置信度数量 / 总评估数量 | ≤ 15% |
| 平均修正时间 | 人工修正 AI 建议所花费的平均时间 | 总修正时间 / 修正数量 | 持续下降趋势 |
四、根因分析(Root Cause Analysis)
4.1 LLM 辅助根因定位
根因分析是缺陷处理中最具技术挑战的环节。传统方式依赖开发人员逐一排查复现步骤、日志和代码,耗时长且高度依赖个人经验。LLM 的引入为根因分析带来了质变:
- 日志语义理解:LLM 可快速扫描海量日志,识别异常模式(如连续的 NullPointer、超时、资源耗尽),并将分散的日志条目串联为完整的事件链。
- 代码上下文理解:结合报错堆栈和缺陷描述中的操作路径,LLM 可定位到可疑代码段,并分析代码逻辑与缺陷表现之间的因果关系。
- 复现步骤推理:LLM 可基于复现步骤生成假设性的根因推断,并建议验证实验(如「尝试修改参数 X 为 Y,观察是否复现」)。
4.2 多信息源融合分析
高质量的根因分析需要融合多个信息源,AI 系统可自动完成信息的汇总与交叉验证:
| 信息源 | 提供的关键信息 | AI 处理方式 |
|---|---|---|
| 缺陷报告 | 复现步骤、预期/实际结果、环境信息 | 提取关键操作路径和现象描述 |
| 应用日志 | 异常堆栈、请求链路、错误码、时间线 | 日志模式识别、异常关联分析、时间线重建 |
| 代码变更记录 | 近期提交、修改文件列表、Commit 信息 | 代码 Diff 分析,筛选与缺陷现象相关的变更 |
| 监控/APM 数据 | 接口响应时间、错误率、资源使用趋势 | 异常指标检测、时间窗口关联 |
| 数据库状态 | 数据快照、锁状态、慢查询 | 数据不一致检测、锁冲突分析 |
| 历史缺陷库 | 相似缺陷的根因及修复方案 | 向量检索相似案例,复用已有分析经验 |
4.3 根因分类体系
为了系统化地进行根因分析,建议建立以下根因分类体系,AI 可自动将分析结果映射到对应类别:
- 代码逻辑错误:条件判断遗漏、边界处理缺失、空指针/未初始化、并发竞争。
- 配置问题:参数值错误、环境变量缺失、开关/灰度策略不正确。
- 数据问题:脏数据、数据迁移遗漏、数据格式/编码不匹配。
- 依赖服务问题:下游接口变更不兼容、超时配置不合理、熔断策略误触发。
- 架构设计缺陷:单点故障、性能瓶颈、扩展性不足。
- 需求理解偏差:实现与需求规格不符、未覆盖隐含需求。
4.4 典型案例:日志分析 + 代码溯源
以下展示一个 AI 辅助根因分析的典型工作流:
📋 案例:支付回调偶发失败
缺陷描述:用户完成支付后,约 5% 的概率未收到支付成功的回调通知,导致订单状态停留在「待支付」。
AI 分析过程:
- 日志扫描:AI 检索支付回调模块的日志,发现在回调失败的时间点,均出现了
ConnectionPoolTimeoutException,且连接池的活跃连接数接近上限。 - 代码定位:基于异常堆栈,AI 定位到
PaymentCallbackService.java的sendNotification()方法,该方法使用同步 HTTP 客户端调用下游通知服务,但未设置合理的超时时间。 - 根因推断:AI 分析发现:在高并发时段,下游通知服务的响应时间从正常 200ms 上升至 3s+,而连接池大小固定,导致新请求无法获取连接。AI 指出根因为 连接池配置不合理 + 缺少异步/重试机制。
- 修复建议:AI 建议 (1) 增大连接池上限并设置获取连接超时;(2) 将回调通知改为异步消息队列;(3) 增加指数退避重试机制。
(1) 日志信息不完整时,LLM 可能给出看似合理但实际错误的推断;
(2) 复杂的并发/时序问题,LLM 难以仅凭文本描述定位真因;
(3) 涉及业务领域知识的深层逻辑错误,需要业务专家的验证。
建议将 LLM 输出作为「分析起点」,而非最终诊断。
五、缺陷聚类与重复检测
5.1 相似缺陷自动识别
在大规模测试中,不同测试人员可能针对同一底层问题提交多份缺陷报告。AI 通过语义相似度计算实现自动识别:
- 文本向量化:将缺陷标题和描述通过 Embedding 模型(如 text2vec、BGE)转换为高维向量。
- 相似度计算:使用余弦相似度衡量两条缺陷之间的语义距离。通常设置阈值 0.85 以上为高度相似。
- 多模态比对:除文本外,还可结合截图(通过 OCR 提取文字或 CLIP 模型)、日志片段进行综合比对。
5.2 缺陷报告去重
去重流程通常集成在缺陷管理系统(如 Jira、禅道)的提交环节:
- 实时提示:测试人员提交缺陷时,系统后台实时检索相似缺陷,若检测到高度相似的已有缺陷,弹出提示并展示链接。
- 自动关联:对于相似度中等(0.7-0.85)的缺陷,自动建立「可能关联」标记,供缺陷评审阶段集体研判。
- 批量去重:对历史缺陷库做全量聚类分析,识别长期被忽略的重复缺陷并合并。
5.3 聚类分析发现共性质量问题
缺陷聚类不仅用于去重,更是质量治理的有力工具。通过对缺陷进行无监督聚类,可以发现:
- 模块质量热力图:识别缺陷密集的模块,提示需要加强单元测试或代码 Review。
- 缺陷模式发现:发现重复出现的缺陷模式(如「所有日期选择器在月末边界有问题」),揭示团队的系统性薄弱点。
- 版本质量对比:通过不同版本的聚类分布对比,评估版本间质量变化趋势。
六、缺陷趋势预测
6.1 基于历史数据的缺陷趋势分析
AI 可以利用时序预测模型(如 ARIMA、Prophet、LSTM),结合以下历史数据预测未来缺陷趋势:
- 缺陷发现率:按周/月统计新增缺陷数量,预测未来测试周期的缺陷发现趋势,辅助测试资源规划。
- 缺陷修复率:分析修复速度与新增速度的差值,预测缺陷积压风险。
- 缺陷类型分布变化:监控各类型缺陷占比的漂移趋势,及时调整测试策略重点。
6.2 高风险模块预测
通过机器学习模型(如随机森林、梯度提升树)综合以下特征,可预测各模块在未来迭代中的缺陷风险等级:
| 特征维度 | 具体特征 | 数据来源 |
|---|---|---|
| 历史缺陷密度 | 模块历史缺陷数量、严重度分布 | 缺陷管理系统 |
| 代码变更频率 | 近期提交次数、变更代码行数、修改文件数 | Git 仓库 |
| 代码复杂度 | 圈复杂度、方法长度、依赖深度 | 静态代码分析工具 |
| 测试覆盖度 | 单元测试覆盖率、集成测试覆盖的调用链路数 | 覆盖率工具 |
| 开发者经验 | 提交者的历史缺陷引入率、模块熟悉度 | Git + 缺陷关联分析 |
高风险模块预测的输出通常是一个风险矩阵或Top-N 模块列表,指导测试资源向高风险区域倾斜。
6.3 回归风险预警
当新版本上线或代码合并时,AI 可结合以下信息进行回归风险预警:
- 变更范围分析:自动识别本次变更涉及的文件和函数,映射到受影响的业务功能。
- 依赖影响分析:通过调用链路图,分析变更对上下游服务的影响范围。
- 历史回归模式:学习历史上的回归缺陷模式(如「修改结算模块后 80% 的概率引起报表模块异常」),对类似场景发出预警。
- 兼容性风险评估:SDK 升级、框架版本变更等操作的系统性风险评估。
七、银行业应用
7.1 银行系统的缺陷分析特点
银行系统的缺陷分析在通用方法之上,具有以下突出特点:
- 高可靠性要求:核心交易系统的可用性要求通常为 99.99% 以上,任何缺陷都可能导致不可接受的业务中断。缺陷分析的精度和速度要求远高于一般行业。
- 多系统耦合:一笔完整的交易可能跨越核心系统、支付网关、风控引擎、账务系统、监管报送等 5+ 个系统,缺陷波及范围的分析复杂度极高。
- 数据敏感性:缺陷描述中可能包含客户敏感信息(账号、金额),AI 分析需要在数据脱敏后的环境中运行。
- 长周期维护:银行核心系统的生命周期通常超过 10 年,遗留系统的缺陷分析需要考虑历史技术债的累积效应。
7.2 合规类问题的自动识别
银行业面临严格的监管要求,合规类缺陷的漏判可能带来监管处罚。AI 可以自动识别以下合规类问题:
| 合规领域 | 典型缺陷示例 | AI 识别方式 |
|---|---|---|
| 反洗钱(AML) | 大额交易未触发可疑交易上报、客户尽职调查信息缺失 | 基于监管规则库的模式匹配 + LLM 语义理解 |
| 数据安全 | 客户敏感信息明文存储、日志中打印卡号/身份证号 | 正则 + 命名实体识别(NER)检测敏感信息泄露 |
| 账务准确性 | 借贷不平、利息计算精度偏差、手续费收取异常 | 数值一致性校验、业务规则引擎 |
| 监管报送 | 1104/大集中/EAST 报表数据遗漏或格式错误 | 报送模板校验 + 数据完整性检查 |
| 消保合规 | 产品适当性校验缺失、信息披露不完整、双录异常 | 业务流程规则校验 + 文档完整性检查 |
7.3 落地建议
在银行环境中落地 AI 缺陷分析,建议采取以下渐进式策略:
- 第一阶段:试点先行(1-3 个月)
- 选择 1-2 个非核心系统(如内部管理系统、报表系统)作为试点。
- 部署 LLM 分类 + 重复检测能力,积累标注数据和用户反馈。
- 重点验证 AI 分析的准确率和用户接受度。
- 第二阶段:核心扩展(3-6 个月)
- 将试点范围扩展到核心交易系统,增加严重度评估和根因分析能力。
- 建立「人机协同」的审核流程:AI 输出分析建议 → 测试工程师确认/修正 → 结果回流训练。
- 搭建专门的合规缺陷分析规则库,覆盖反洗钱、数据安全等监管领域。
- 第三阶段:全面推广(6-12 个月)
- 实现全系统覆盖,将 AI 缺陷分析深度集成到 DevOps 流水线中。
- 上线趋势预测和回归风险预警能力,实现质量管理的「左移」。
- 建立持续优化的反馈闭环,定期评估和迭代模型。
(2) 合规审计:AI 的分析过程应完整留痕,支持审计追溯——为什么 AI 将某缺陷标记为 Critical、它的判断依据是什么。
(3) 模型审批:AI 模型的引入需通过行内模型风险管理流程,包括验证、审批和定期复查。
(4) 人为终审权:任何 AI 输出的严重度/分类/根因建议,都必须经过人工确认才能生效,不能设置自动闭环的「无人值守」流程。
八、实战演练
以下三个实战任务旨在帮助测试人员将前述理论知识转化为实操能力。建议在完成理论学习后,使用 LLM 工具(如 ChatGPT、Claude、Kimi 等)依次完成以下任务,每项任务均可直接在聊天界面操作,无需额外环境搭建。
🛠️ 任务一:LLM 智能缺陷分类与严重度评估
场景
你是一名银行系统的测试工程师,刚刚完成一轮功能测试,手上有 5 条新提交的缺陷描述。你需要对这些缺陷进行类型分类(功能/性能/安全/UI/数据/集成)和严重度评估(Critical/Major/Minor/Trivial),并与 LLM 的判断结果进行对比。
背景数据 — 5 条银行系统缺陷描述
- 缺陷 A:「转账页面点击『确认转账』后系统白屏无反应,控制台报错
TypeError: Cannot read properties of undefined (reading 'accountNo'),影响所有用户,无法进行任何转账操作。」 - 缺陷 B:「客户信息查询页面,当输入包含特殊字符(如单引号
'或百分号%)的客户名称时,查询结果为空,但实际数据库中存在该客户。」 - 缺陷 C:「交易明细导出功能,导出超过 10,000 条记录时,系统等待 30 秒后返回 500 错误,但 10,000 条以下导出正常。」
- 缺陷 D:「个人网银首页的『最新活动』轮播图,在 Safari 浏览器下出现图片错位,覆盖了下方公告栏的部分文字内容。」
- 缺陷 E:「柜员在核心系统中进行冲正操作时,界面提示『操作成功』,但 24 小时后账务核对发现该笔冲正并未生效,资金未退回客户账户。」
操作步骤
- 人工判断:先不借助 LLM,根据本章第 2.1 节(类型分类)和 2.2 节(严重度分级)的知识,独立对 5 条缺陷进行分类和严重度标注,记录你的判断结果。
- LLM 分析:将 5 条缺陷描述一次性粘贴到 LLM 对话中,使用以下 Prompt 请求分析:
「你是一名银行系统测试专家。以下有 5 条缺陷描述,请对每条缺陷进行:(1) 类型分类(功能/性能/安全/UI/数据/集成);(2) 严重度评估(Critical/Major/Minor/Trivial);(3) 给出 1-2 句分类理由。输出格式为表格。」 - 对比分析:将 LLM 输出与你的人工判断逐条对比,标注差异项并分析差异原因。
- 迭代优化:如差异较大,尝试调整 Prompt(如增加银行背景说明、补充严重度定义细节),观察输出变化。
评估标准
| 评估项 | 优秀 | 合格 | 需改进 |
|---|---|---|---|
| 分类准确率 | 5/5 与参考一致 | 4/5 一致 | ≤ 3/5 一致 |
| 严重度准确率 | 5/5 与参考一致 | 4/5 一致 | ≤ 3/5 一致 |
| Prompt 有效性 | 一次 Prompt 即可得到结构化输出 | 1-2 次调整后得到 | 多次调整仍不理想 |
| 差异分析 | 对每项差异给出有洞察的原因 | 仅记录了差异 | 未进行差异分析 |
⏱️ 预计耗时:20 分钟
🔬 任务二:缺陷根因分析 — 日志 + 缺陷描述综合研判
场景
生产环境反馈了一个周期性出现的性能问题,你是负责排查的测试工程师。手上有缺陷描述和应用日志片段,需要借助 LLM 进行根因分析。
背景数据
缺陷描述:
理财产品的「持有中」页面在每天上午 9:00–9:30 高峰时段经常加载失败,页面显示「系统繁忙,请稍后重试」。其他时段功能正常。单个用户刷新 2-3 次后偶尔可以加载成功。APP 端和 PC 端均有此问题。
应用日志片段(2024-05-15 09:05:23 起,已脱敏):
2024-05-15 09:05:23 ERROR [pool-3-thread-7] c.b.fund.service.HoldingService:134 - Failed to query holdings for userId=88201
java.util.concurrent.TimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method)
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116)
...
2024-05-15 09:05:23 WARN [pool-3-thread-7] c.b.fund.dao.ProductDao:157 - HikariPool-1 - Connection is not available, request timed out after 30000ms
2024-05-15 09:05:24 ERROR [pool-3-thread-8] c.b.fund.service.HoldingService:134 - Failed to query holdings for userId=88345
2024-05-15 09:05:25 WARN [pool-3-thread-9] c.b.fund.dao.ProductDao:157 - HikariPool-1 - Connection is not available, request timed out after 30000ms
2024-05-15 09:10:01 WARN [main] c.b.fund.config.DataSourceConfig:42 - Active connections: 20/20, Pending: 47
操作步骤
- 独立分析(5 分钟):先不借助 LLM,根据日志和缺陷描述,写下你初步判断的可能根因(列出 2-3 个候选原因)。
- LLM 辅助分析:将缺陷描述 + 日志粘贴到 LLM,使用以下 Prompt:
「你是一名资深后端开发工程师。以下是一个生产环境缺陷的描述和应用日志,请:(1) 分析日志中的关键异常信号;(2) 推断最可能的根因(1-2 个);(3) 按优先级给出 3 条修复建议;(4) 提出 1 条预防类似问题的措施。」 - 深度追问:针对 LLM 的回复,追问 1-2 个深入问题(如:「如果数据库连接池增大到 50,是否就能彻底解决?有什么潜在风险?」),观察 LLM 能否给出更全面的分析。
- 方案对比:将 LLM 的分析与你的独立分析做对比,找出你遗漏的维度或 LLM 忽略的细节。
评估标准
| 评估项 | 优秀 | 合格 | 需改进 |
|---|---|---|---|
| 关键信号识别 | 识别出 TimeoutException + Connection not available + Active 20/20 三个信号 | 识别出其中 2 个 | 仅识别出 1 个 |
| 根因推断 | 定位到连接池耗尽 + 慢查询 + 高峰并发叠加 | 定位到连接池问题 | 仅描述表面现象 |
| 修复建议质量 | 给出治本+治标+预防三层方案 | 给出 1-2 条可行建议 | 建议笼统或不可行 |
| 追问深度 | 追问触及方案副作用和边界 | 追问了额外问题 | 未进行追问 |
⏱️ 预计耗时:25 分钟
🧩 任务三:缺陷聚类 — 从散乱缺陷中识别共性模式
场景
你是测试团队的缺陷分析师。团队刚完成一轮银行 APP 的全面测试,提交了 8 条缺陷。这些缺陷看似分散,但你怀疑它们背后存在共性问题。你需要借助 LLM 的语义理解能力,找出相似缺陷并聚类,为团队提出针对性的质量改进建议。
背景数据 — 8 条缺陷描述
- BUG-001:「转账页面输入金额超过 999,999 元时,页面崩溃并显示『页面不可用』,需重启 APP 才能恢复。」
- BUG-002:「理财产品购买页面,输入购买金额为 0 元时,系统提示『系统错误,请稍后重试』,而非提示『请输入有效的购买金额』。」
- BUG-003:「修改登录密码时,新密码包含中文字符,前端未做拦截,提交后到数据库层报字符集不兼容错误。」
- BUG-004:「手机银行转账功能,输入金额为负数(如 -100 元)时,系统未拦截也未提示错误,直接进入下一步。」
- BUG-005:「理财产品赎回页面,输入金额超过持有份额时,系统没有友好提示,直接跳转到空白页面。」
- BUG-006:「柜面系统新建客户时,身份证号输入 18 位纯数字(实际末位可能为 X),系统未校验格式导致脏数据入库。」
- BUG-007:「批量转账模板导入功能,金额列输入字母字符(如 abc)时,系统直接崩溃,控制台报 NumberFormatException。」
- BUG-008:「手机号修改功能,输入含有空格的手机号(如 138 0000 0000),系统不处理空格直接提交,导致后续短信通知发送失败。」
操作步骤
- 独立聚类(5 分钟):先不借助 LLM,通读 8 条缺陷,手动将它们分组(你认为哪些缺陷属于同一类问题?),记下你的分组结果和分组依据。
- LLM 聚类:将全部 8 条缺陷粘贴到 LLM,使用以下 Prompt:
「以下有 8 条银行 APP 的缺陷描述。请基于缺陷的根因相似性将它们进行聚类分组,不要超过 4 组。对每个聚类:(1) 给出聚类名称;(2) 列出归属的缺陷编号;(3) 用一句话概括该聚类的共性根因;(4) 提出一条针对该聚类共性问题的最佳改进建议。输出格式为结构化 Markdown。」 - 结果对比:将 LLM 聚类结果与你的手动分组对比,标注差异项并分析合理性。
- 改进建议报告:基于 LLM 的聚类输出,撰写一份 3 点质量改进建议(如加强前端输入校验、建立统一的边界值测试 checklist 等),交付给开发团队。
评估标准
| 评估项 | 优秀 | 合格 | 需改进 |
|---|---|---|---|
| 聚类逻辑 | 分组基于根因共性(如「输入校验缺失」),而非表面现象 | 分组有一定逻辑但不基于根因 | 分组随意或无明显逻辑 |
| 与 LLM 一致性 | 80% 以上缺陷分组与 LLM 一致 | 50%-80% 一致 | 低于 50% 一致 |
| 改进建议质量 | 建议具体、可落地、有优先级 | 建议笼统但方向正确 | 建议空泛或不可操作 |
| 报告完整性 | 包含聚类结果 + 改进建议 + 预防措施 | 包含其中 2 项 | 仅包含 1 项 |
⏱️ 预计耗时:25 分钟