多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

基于RAG的通讯测试开发AI方案:从需求到脚本的端到端提效实践

基于RAG的通讯测试开发AI方案:从需求到脚本的端到端提效实践 简介这份PDF资料聚焦通信行业测试开发提效面向具备一定软件测试基础的研发人员与技术管理者针对FTTR组网转型下测试用例冗余、脚本开发效率低、自动化覆盖率提升遇瓶颈等痛点给出从需求到自动化脚本生成的全流程AI优化方案。内容涵盖大模型应用方案对比提示工程、RAG、精调、以RAG为最优路径的落地思路、AI辅助测试设计与脚本开发实践以及知识工程建设的规范、获取、建模、评估与应用闭环并展望自生成、自校验、自修复等方向。资源包为1个PDF文件大小约6.37MB便于直接查阅完整方案与架构图。目前已有106人学习适合希望将AI能力嵌入测试研发流程、提升用例复用率与自动化交付效率的读者参考借鉴。1. 从需求到脚本的端到端提效一套通讯测试开发AI方案的落地拆解FTTR组网把原来一台智能网关的测试场景硬生生扩成了主网关加多台从网关的1:3组网拓扑WiFi、POTS、LAN、IP网络全都要覆盖。运营商客户还要求强定制、短交付迭代内需求数一多集测阶段等用例、等脚本就成了常态。这套来自中兴通讯有线研究院的AI辅助测试开发方案核心思路是用RAG加知识工程把需求实例化、测试点生成、用例复用、脚本生成串成一条端到端工作流。它适合有一定测试基础、正在被用例冗余和脚本交付效率卡住的通讯行业研发人员尤其是做FTTR、家庭网关这类组网产品的团队。2. 为什么选RAG而不是提示工程或精调方案选型与知识工程底座2.1 三种大模型应用方案的适用边界项目正文里给了一张很实在的对比表我把它整理成更直观的决策依据。测试开发活动涉及大量私域知识而且知识更新频繁——今天FTTR的组网参数变了明天某个芯片方案的DB命令改了这些都不是通用大模型能覆盖的。方案核心优点核心缺点适用场景提示工程成本最低灵活性高用户可自行优化受限于模型数据窗口大小复杂提示词消耗大量token影响响应速度和成本快速试验和验证、初步优化模型应用效果RAG为模型补充外部知识解决知识局限性有效改进Token限制不擅长改变模型行为需要额外内容检索和数据源实现复杂度较高模型需要动态获取外部知识、知识更新频繁、上下文信息量大的场景精调改变模型行为提升输出稳定性适合特定任务优化后续调用速度快节省token成本较高需一次性投入数据准备和处理复杂不适合频繁变化的知识补充固定任务的高频使用场景、需要稳定输出格式、行为优化需求强烈选RAG的逻辑很直接测试域的私域知识更新太快精调一次的成本和周期跟不上提示工程又扛不住18万测试点这种量级的上下文。RAG方案在知识更新频繁的场景下是经济性和效果之间最平衡的选择。2.2 知识工程建设的五个标准环节RAG不是把文档往向量库一扔就完事。这套方案里知识工程有明确的流程语料选择、知识规范、知识获取、知识建模、知识库建设、知识评估、知识应用。我把它拆成可执行的步骤来看。第一步定知识规范。测试点要尽可能原子化能映射到一个验证点描述格式统一为“在XXX场景条件下验证XXX的功能”文本用例名称必须标识所属测试点格式是“XXX功能_XXX测试点”。这三条原则看着简单但直接决定了后续检索的准确率。第二步做知识获取。语料来源是Ztest共享用例库先做步骤分割预处理然后用Prompt让大模型从存量用例里抽取测试点。这里有个关键细节用例名称治理是人工专项把存量用例名称的语义往测试点靠语义相似度能提升15%以上。自动化抽取的Prompt长这样{ test_point: 测试点从测试用例文本中分析一个目标测试点以str返回 }Prompt里还带了角色设定“你是家庭智能网关产品包括家用路由器、光猫等的软件测试设计资深专家”然后传入用例名称、测试步骤、预期结果三个字段。这个角色设定不是装饰它让模型输出的测试点更贴近业务语义而不是泛泛的步骤概括。第三步建向量知识库。基于用例名称语料和大模型抽取的语料建设了18万的“测试点→文本用例”QA对。存储上向量化知识库放在DN Studio平台文档类数据放在项目端。这个规模意味着检索时必须做分层召回否则响应速度会崩。提示知识库建设不是一劳永逸的事。测试点抽取的Prompt需要根据业务反馈持续调整尤其是当新业务场景比如FTTR从1:3扩展到1:5组网出现时原有的抽取逻辑可能漏掉关键测试点。3. 复用用例推荐与文本用例生成两个核心触点的工程实现3.1 复用用例推荐关键字检索加语义检索的双路召回复用用例推荐的目标很明确在TSE编写新用例之前先把相似的存量测试点召回出来让人工判断能不能复用。实现上是关键字检索和语义检索两条路并行。关键字检索走的是传统倒排索引对测试点里的功能名词、场景词做精确匹配。语义检索走向量相似度用的是知识库里18万QA对的向量表示。两条路的结果合并后TSE人工检查测试步骤确认可以复用就一键关联PR。# 伪代码示意双路召回合并逻辑 def recommend_reuse_cases(new_test_point, top_k10): # 关键字检索基于倒排索引 keyword_results keyword_index.search( querynew_test_point, field[function, scenario, condition], sizetop_k ) # 语义检索基于向量相似度 query_vector embedding_model.encode(new_test_point) semantic_results vector_store.search( query_vectorquery_vector, top_ktop_k, metriccosine ) # 合并去重按加权分数排序 merged merge_and_rank( keyword_results, semantic_results, keyword_weight0.4, semantic_weight0.6 ) return merged[:top_k]参数上关键字权重给0.4语义权重给0.6是因为测试点的表述虽然经过治理但不同TSE的用词习惯仍有差异语义匹配更能抓住意图。top_k设10是经验值太少容易漏掉可复用用例太多会增加人工筛选负担。复用策略上方案里写得很清楚常见和基础功能优先设计复用性高的用例特定场景和新功能写定制化用例。这个边界很重要无脑复用会导致新场景覆盖不足全部定制又回到效率低的老路。3.2 文本用例生成从GWT到测试点的端到端工作流文本用例生成的输入是需求实例化活动的产出核心是GWTGiven-When-Then格式。整个工作流是需求→GWT→测试点→文本用例→测试脚本。GWT生成测试点的逻辑是Given描述前置条件When描述操作动作Then描述预期结果三者组合起来就是一个可验证的测试点。比如FTTR场景下“Given主网关和3台从网关已组网When手机APP切换WiFi频段Then从网关WiFi信号正常切换且无断连”。测试点生成后结合要素因子和测试环境推荐生成文本用例。要素因子包括产品能力、环境模型、风险因子等这些在知识库里有对应的知识库支撑。文本用例的意图识别环节会对用例做DSL设计然后召回Robotframework关键字生成自动化脚本。# 文本用例到RF脚本的转换示意 def generate_rf_script(text_case, keyword_library): # 意图识别判断用例类型功能/性能/异常 intent classify_intent(text_case) # DSL设计将自然语言步骤转为结构化DSL dsl_steps [] for step in text_case.steps: dsl { action: extract_action(step), target: extract_target(step), params: extract_params(step), expected: step.expected } dsl_steps.append(dsl) # 关键字召回从RF关键字库匹配 rf_keywords [] for dsl in dsl_steps: candidates keyword_library.recall( actiondsl[action], targetdsl[target], top_k3 ) rf_keywords.append(candidates) # 生成RF脚本 script assemble_rf_script(rf_keywords, text_case) return script这个链路里意图识别的准确率直接影响后续DSL设计的质量。如果意图判断错了比如把异常场景当成正常功能召回的关键字就会完全跑偏。常见做法是在意图识别后加一层人工确认尤其是新业务场景的用例。注意RF关键字库的覆盖度决定了脚本生成的自动化率。如果某个操作在关键字库里没有对应实现脚本生成就会卡住需要人工补关键字。所以关键字库的持续建设是和用例生成同等重要的事。4. 避坑与常见问题排查血泪经验换来的五条记录4.1 测试点抽取粒度太粗导致复用率上不去现象知识库建好后复用用例推荐的召回结果里很多测试点粒度太粗一个测试点覆盖了多个验证点导致TSE无法直接复用还是要手工拆分。原因大模型抽取测试点时Prompt里虽然写了“提取1个与业务最关键的测试点”但模型倾向于输出概括性描述尤其是当用例步骤本身就很长的时候。解决在Prompt里增加约束明确要求“测试点必须原子化一个测试点只对应一个验证点”并在输出格式里加一个字段标记验证点数量。同时对抽取结果做后处理如果测试点描述里出现“和”“以及”“同时”等连接词触发人工复核。4.2 语义检索在跨产品线时召回偏差大现象FTTR产品的测试点去召回光猫产品的用例时语义相似度分数很高但实际业务场景不匹配导致误召回。原因向量模型在通用语义空间里“WiFi切换”和“WiFi配置”的向量距离很近但测试意图完全不同。跨产品线时业务术语的差异被通用语义掩盖了。解决在语义检索前加一层产品线过滤先按产品线标签缩小检索范围再做向量相似度计算。同时在知识库建设时给每个QA对打上产品线、业务场景、测试类型三个维度的标签检索时支持多维度过滤。4.3 用例名称治理的人工成本被低估现象项目初期计划用两周完成存量用例名称治理实际花了六周而且治理后的语义相似度提升只有15%低于预期。原因存量用例数量大命名习惯五花八门有些用例名称本身就没有明确语义人工治理时需要先理解用例内容再重命名耗时远超预期。解决先做抽样分析按用例名称的语义清晰度分三档只对清晰度最低的那一档做人工治理其余用大模型做批量重写建议人工确认。这样能把人工成本压缩到原来的三分之一。4.4 RF关键字召回时参数类型不匹配现象生成的RF脚本在本地跑不通报参数类型错误。检查发现文本用例里的参数是自然语言描述比如“设置频段为5G”但RF关键字要求的是枚举值“5G”或“2.4G”。原因DSL设计环节的参数提取只做了文本抽取没有做类型映射。自然语言到枚举值的转换需要额外的映射表。解决在关键字库里给每个关键字标注参数类型和取值范围DSL设计时根据关键字定义做参数类型转换。对于无法自动转换的参数标记为待人工确认不直接生成脚本。4.5 知识库更新后检索结果不稳定现象知识库新增了一批FTTR 1:5组网的测试点后原有的1:3组网测试点召回率下降TSE反馈“以前能搜到的用例现在搜不到了”。原因向量库更新时新数据的向量分布影响了原有数据的相似度计算尤其是当新数据量较大时检索的top_k结果被新数据挤占。解决向量库更新采用增量索引加时间衰减策略新数据的权重在初期适当降低避免挤占存量数据的召回空间。同时检索时保留一个“经典用例”通道对经过验证的高质量用例做固定召回不参与动态排序。5. 进阶技巧用知识评估闭环把AI生成用例的准确率稳住知识工程里最容易被忽略的是知识评估环节。这套方案里知识评估是基于AI应用方案并结合知识库建设对知识质量做评价确保知识库能满足实际应用需求。我把它拆成一个可操作的闭环。评估的输入是AI生成的文本用例和TSE实际采纳的用例之间的差异。具体做法是每周抽一批AI生成的用例让TSE标注“直接采纳”“修改后采纳”“不采纳”三个状态然后分析不采纳的原因分布。不采纳原因占比示例改进动作测试点遗漏35%补充GWT生成规则增加边界场景覆盖步骤描述不清晰25%优化DSL设计的步骤拆分逻辑预期结果不准确20%更新知识库里的预期结果模板环境依赖缺失15%在要素因子里补充环境模型其他5%人工复核这个表的关键不是数字本身而是它驱动了一个持续改进的循环。比如测试点遗漏占比高就去检查GWT生成规则里是不是漏掉了异常分支步骤描述不清晰就去看DSL设计的拆分粒度是不是太粗。我一般会把这个评估做成月度例行每次抽100条AI生成用例TSE标注后自动生成原因分布报表。连续跟踪三个月如果“直接采纳”的比例从40%提升到60%以上说明知识库和生成规则都在往好的方向走。如果某个原因占比突然升高比如环境依赖缺失从15%跳到30%那大概率是最近新增的业务场景没有及时补充环境模型。还有一个技巧是把TSE修改后的用例反哺回知识库。TSE修改AI生成的用例时修改前后的差异本身就是高质量的训练数据。把修改后的用例作为新的QA对存入知识库同时标记“经人工修正”下次检索时这类用例的权重可以提高。这样知识库不是静态的而是随着使用不断进化。从那以后我每次做AI生成用例的评估都强制走一遍“标注→归因→反哺”的闭环不只看采纳率数字更要看数字背后的原因分布有没有收敛。希望帮到你。本文还有配套的精品资源点击获取
返回列表