ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

RAG与知识工程驱动的FTTR测试AI提效方案

RAG与知识工程驱动的FTTR测试AI提效方案 简介一份基于AI的端到端测试开发提效方案设计文档来自中兴通讯测试域AI应用负责人的实践分享面向具备软件测试基础、尤其关注通信行业测试效率的研发人员与技术管理者。资料聚焦从传统单智能网关到FTTR组网转变带来的复杂测试挑战针对用例冗余、脚本开发效率低、自动化覆盖率瓶颈等问题详细对比提示工程、RAG、精调等大模型应用方案并给出以RAG为核心、结合知识工程建设的整体落地路径。内容涵盖AI在测试设计、脚本开发、执行分析等环节的具体实践如通过GWT生成测试点、复用用例检索、DSL设计与RF关键字召回生成自动化脚本等并介绍了知识获取、建模、评估与应用的方法。资源为1个PDF文件大小6.37MB包含完整演讲PPT结构从背景、痛点到技术实践层层递进适合作为通信测试AI转型的方案参考。已有103人学习下载。1. 从FTTR组网到测试瓶颈AI提效方案的切入点家庭网络设备正在经历从单智能网关向FTTRFiber To The Room组网的大规模迁移一台主网关挂多台从网关WiFi覆盖、POTS语音、LAN口业务混在一张拓扑里。设备形态变了测试的复杂度跟着翻倍迭代内需求数量多、用例交付速率跟不上集测节奏、脚本开发速度赶不上用例增加速度自动化覆盖率不升反降。这套方案的核心思路是围绕测试设计、脚本开发、执行分析三个环节把大模型以RAG为主的方式嵌入研发流程同时用知识工程把散落在Ztest、Gerrit、icenter里的用例和问题数据变成可持续复用的资产。适合通信设备测试、自动化测试架构师和测试效能团队参考尤其是那些被运营商定制需求和短交付周期反复挤压的产线。2. 大模型应用路线对比为什么RAG成为测试域的首选2.1 提示工程、RAG与精调的投入产出差异在测试开发这个场景里大模型应用路线不是越先进越好而是要看知识更新的频率和私域知识的占比。测试用例、关键字、问题单这些知识高度依赖具体产品而且每轮迭代都在变这直接决定了选型方向。提示工程Prompt Engineering最轻量不需要额外数据准备改Prompt就能调效果适合做快速验证。但它的天花板也很明显模型参数里内置的是通用知识对FTTR这类具体产品的测试设计规范、关键字命名规则一无所知把大量私域知识塞进Prompttoken消耗会随上下文膨胀迅速失控。精调Fine-tuning则走向另一个极端它擅长改变模型行为、稳定输出格式适合固定任务的高频调用但数据准备复杂、一次性投入高知识一更新就要重新训练在测试用例频繁变更的节奏下基本不可行。RAGRetrieval-Augmented Generation方案恰好命中这个场景的痛点通过检索把外部知识动态补充到生成过程里模型不需要记住所有私域细节只需要在生成时找到最相关的用例QA对或关键字定义。对比下来RAG在测试域的优势是“知识更新成本低”新用例入库即生效不需要重新训练同时每次生成只携带检索到的少量上下文token开销远低于把知识库全量塞进Prompt。2.2 RAG链路中要解决的两个核心问题把RAG落到测试开发场景不能只搭一个“向量库LLM”的玩具。测试用例的检索和通用文档问答不一样用户问的是“在PPPoE拨号场景下验证WAN侧DHCPv6获取”期望召回的是结构化的测试点而非一段散文。第一个问题是召回质量。测试用例文本包含用例名称、测试步骤、预期结果三个字段直接整条向量化会稀释语义正确的做法是把用例按“测试点→文本用例”拆成QA对测试点作为检索入口用例作为生成素材。第二个问题是检索策略。单一向量检索对精确术语如sendcmd 1 DB p DHCP6C不敏感需要关键字检索兜底双路召回后再做融合排序。这里给出一个常见的双路召回实现范式def hybrid_search(query: str, top_k: int 5) - list: # 1. 关键字检索利用BM25对精确术语做召回 bm25_scores bm25_index.search(query, top_k * 2) # 2. 语义检索利用Embedding对意图相近的查询做召回 query_vec embed_model.encode(query) semantic_scores vector_db.search(query_vec, top_k * 2) # 3. 分数融合加权归一化避免单一检索偏置 fused merge_scores( bm25_scores, semantic_scores, bm25_weight0.3, semantic_weight0.7 ) # 4. 重排过滤与查询意图的匹配度低于阈值的直接丢弃 return rerank(fused)[:top_k]这段代码的含义是bm25_weight和semantic_weight控制两类检索结果的信任比例测试设计阶段我会把语义权重调高到0.7因为TSE写测试点时用的是自然语言描述而非精确命令到了脚本开发阶段RF关键字名称都是精确标识符BM25的权重反而应该提高。rerank步骤可以先用规则过滤掉测试点完全不相关的结果再交给LLM做最终排序避免向量检索距离近但业务含义不同的噪声用例混入。3. 知识工程建设从用例治理到18wQA对的沉淀3.1 知识规范是RAG效果的上限RAG的生成质量不会超过检索到的知识质量而知识质量首先取决于规范是否清晰。测试用例知识库的规范制定直接决定了后续大模型抽取测试点的准确性。这套方案里定下了三条硬性规范。原则一是测试点尽可能原子化一个测试点映射一个验证点避免多个业务逻辑纠缠在一起导致检索召回时语义发散。原则二是测试点描述统一为“在XXX场景条件下验证XXX的功能”的句式这个句式的好处是让“场景条件”和“功能预期”在语义空间里有稳定的位置向量化之后不同用例之间的可对比性更强。原则三是文本用例名称必须标识所属测试点格式为“XXX功能_XXX测试点”这条规范直接服务于知识获取环节——用例名称本身就是最廉价的标注数据。3.2 知识获取存量治理与大模型抽取双线并行存量用例库的问题是名称不规范、步骤格式混乱直接喂给大模型做抽取产出的测试点质量没法保证。所以知识获取分两步走。第一步是人工治理存量用例名称按照用例设计规范和测试点设计规范做专项清洗让用例名称的语义和测试点显著接近。这一步的效果可以量化治理后语义相似度提升15%以上这15%直接反映在检索召回率上。第二步才是用大模型批量抽取语料来源是Ztest共享用例库预处理时把用例文本拆成步骤列表再用Prompt让大模型按照固定JSON格式输出测试点示意如下你是家庭智能网关产品包括家用路由器、光猫等的软件测试设计资深专家 请从如下测试用例文本中提取1个与业务最关键的测试点按照以下JSON格式输出 { test_point: 测试点从测试用例文本中分析一个目标测试点以str返回 } # 测试用例文本如下 ## 用例名称 %name% ## 测试步骤 %step% ## 预期结果 %result%这个Prompt的设计逻辑是角色设定限定为“家庭智能网关产品”的测试设计专家而不是通用测试工程师这能让大模型调用到更贴近设备业务的知识要求输出到JSON的test_point字段而非自然语言段落是为了下游直接入库、无需二次解析限定“1个与业务最关键的测试点”而不是全部测试点是为了保证原子化原则避免一条复杂用例被抽取出多个互相嵌套的测试点破坏QA对的一对一映射关系。3.3 知识建模与向量化存储完成抽取之后知识要以适合检索的形态落入存储。这套方案采用了“测试点→文本用例QA对”的组织方式以测试点为检索键、文本用例为生成素材共建设了18w条QA对。知识建模层面区分了三种形态文档树用于承载产品能力知识、环境模型知识这类层级关系明确的内容QA对用于承载测试点与用例的映射关系知识图谱则用于承载要素因子如芯片方案、上行链路类型、端口类型之间的关联关系。向量化知识库部署在DN Studio平台文档类数据存储在项目端这种分离的好处是向量库承载高频检索文档库承载低频深度查阅各司其职。知识评估环节必须建立反馈回路。知识入库不是终点评估的核心指标是“检索命中率”和“生成可用率”——前者衡量检索模块能否找到正确知识后者衡量生成模块基于这些知识产出的用例能否被TSE直接采用或小幅修改后用。这两个指标直接决定知识库是否值得持续投入建设。4. 需求到自动化脚本端到端AI工作流的落地实现4.1 GWT建模把需求文本拆成可测试的结构端到端工作流的第一步是把需求文档实例化为Given-When-Then结构。为什么选GWT而不是直接生成测试用例因为需求文本描述的是业务意图而不是测试条件GWT建模把“前置条件—触发动作—预期结果”拆开后续生成测试点时可组合的维度更多。从需求实例化产出开始GWT阶段要识别出场景条件如“在PPPoE拨号成功的前提下”、触发行为如“重启WAN侧连接”和功能预期如“DHCPv6地址重新获取成功”这些原子化描述直接映射到测试点的“场景条件”部分。要素因子库在这一步会被引入用于补齐测试环境信息芯片方案是XX型号、上行链路类型是Ethernet还是PON、端口类型是LAN还是POTS这些因子组合决定了用例运行在什么环境上。4.2 复用用例推荐降低源头用例的冗余测试用例重复冗余是脚本开发效率低的根源而在新需求到来时直接检索复用用例是把冗余拦截在源头的唯一手段。复用用例推荐的实现逻辑是先用GWT生成的测试点同时走关键字检索和语义检索得到相似的存量测试点再关联出对应的文本用例候选集TSE人工检查测试步骤后一键关联到PR。这里有一个值得借鉴的“半自动”设计——AI只负责候选集的召回和初排最终是否复用由人来判断避免了全自动关联带来的误复用风险。这项实践的价值在于复用已有用例减少了编写新用例的时间和资源投入已验收的用例具备一致性保证覆盖过真实缺陷的用例尤其可靠且当产品功能相似时维护成本会持续下降。代价是物理层初期需要对可复用的用例做大量规划一些特定场景仍需定制化用例来补充覆盖。所以策略上要对常见和基础功能优先设计高复用性用例对新功能和非标场景保持定制化空间。4.3 从文本用例到RF脚本意图识别与关键字组装文本用例到自动化脚本的转换是这套方案里与测试开发人员效率最直接相关的一环。转换链路分为三段文本用例意图识别、DSL中间表示生成、RF关键字召回与组装。先说意图识别。文本用例的测试步骤往往是“在Web页面进入WAN设置配置DHCPv6保存并连接”这类自然语言直接映射到RobotFramework关键字是不现实的。系统会对每个步骤做意图分类配置类动作、状态检查类动作、报文抓取类动作再结合要素因子解析出操作对象WAN连接、LAN口、WiFi SSID。意图识别完成后结构化步骤被转换为DSL描述这是一种介于自然语言和RobotFramework之间的中间表示例如configure(dhcpv6, on_wan_connection, uplink_typeETH)。然后是RF关键字召回。DSL中的每个原子动作先去关键字知识库中检索匹配的RobotFramework关键字再通过填充参数模板组装成可执行脚本。关键字知识库中的每个关键字都关联了适用场景描述、参数定义和依赖前置条件例如sendcmd 1 DB p DHCP6C这类芯片级命令只适用于特定芯片方案召回的RF代码片段经过参数替换后就能拼装出完整的自动化用例。*** Test Cases *** WAN_DHCPV6_Connection_Test [Documentation] 验证WAN侧DHCPV6地址获取功能 [Setup] Connect To Device Given WAN Connection Is Established uplink_typeETH When Configure DHCPV6 On WAN modeauto Then DHCPV6 Address Should Be Assigned [Teardown] Disconnect From Device5. 复用召回的质量验证与参数调优技巧RAG方案上线后最容易出现的问题是“检索结果看起来相似但细看不能用”。这种问题不能靠感觉修要有量化的评估手段和可调的参数空间。第一个建议是为复用用例推荐搭一套离线评测集。从迭代历史里抽200300条已经确认过复用关系的“测试点对”作为评估基准每次调整检索参数后用top5命中率和MRR平均倒数排名两个指标衡量召回质量。命中率低于60%时先不要优化生成侧问题大概率出在检索侧——要么是向量化的切分不合理要么是相似度阈值过严。我在实际项目中碰到过语义检索效果被“用例名称不规范”拖垮的情况治理后同一批查询的MRR从0.31提升到了0.47这就是为什么知识治理必须先于参数调优。第二个技巧是阈值不要一视同仁。关键字检索的分数分布和语义检索完全不同BM25分数受文本长度影响大语义相似度则集中在0.650.9之间。融合排序时对语义相似度设定“强过滤”阈值低于0.7直接丢弃加“人工复核”区间0.70.8的候选集需要TSE确认能显著降低无效候选项的干扰。每次迭代后用线上的人工采纳率验证阈值是否合理采纳率过高说明阈值偏保守漏掉了一些本可复用的用例采纳率过低说明候选集噪声太大需要收紧过滤条件。第三个建议是知识库必须跟着迭代走。每轮迭代结束后把这次新增的有效QA对、失效的用例、以及执行失败后被人工修复的关键字差异都回流到知识库RAG的持续优势来自知识更新及时性——新用例入库后下一次相似测试点的检索立刻能召回这个反馈闭环才是自动化覆盖率不再倒退的根本保障。本文还有配套的精品资源点击获取
返回列表