揭秘百度智能测试在测试定位领域实践

news2025/5/26 13:05:52

在这里插入图片描述
作者 | intelligents

前几篇,分别介绍了测试活动测试输入、测试执行、测试分析、测试定位和测试评估五个步骤中测试输入、执行、分析、评估的智能化研究和实践,本章节重点介绍测试定位环节的智能化实践。

测试定位的主要作用是在构建失败或问题发生后,快速给出产生该现象的原因,以帮助现象处理者给出合理的处置措施,降低问题处理时长,降低人力定位成本和问题时长,根据原因进行分类一般也分为两种:

一、根因定位:即给出造成失败的真正原因(如代码问题);

二、行为定位:即给出造成失败的可能操作或变化,以快速进行处置,降低影响面。

测试定位智能化通过将数据、算法、工程等相关技术有机结合,从问题现象、问题关联数据、系统关联数据,利用策略或算法给出问题发生的操作项或根本原因,以最终给予问题处理者决策对应的处置行为。在该领域的实践相对较少,百度QA也一直在探索研究和实践。本章节将从多个实践的角度,本章节将从多个实践的角度,介绍相关领域的目标、思路、涉及到的技术点,希望能给到大家一定参考。

一、 基于频谱的问题根因定位

基于频谱的问题根因定位期望能通过定位分析技术手段,揭露出疑似代码问题范围,协助研发和测试人员在定位问题中快速修复,降低人效。基于频谱的问题根因定位在学术界研究已久,其思路是利用测试用例执行过程中的程序元素信息(如测试结果、代码覆盖率),对内部代码做逻辑差异分析,对代码行或代码块进行可疑度排序,从而去定位错误根源。其主要过程为使用插桩编译后的程序执行被测用例集合,对每一个测试用例的标记代码块/语句是否覆盖、是否通过进行分析,以语句/代码块为统计单位,采集<ef,ep,nf,np>四元组特征(ef:失败用例中,该代码块执行的次数;ep:成功用例中,该代码块执行的次数;nf:失败用例中,该代码块未执行的次数;np:成功用例中,该代码块未执行的次数),通过多种可疑度公式(如Tarantula,Ochiai,Overlab等),将每个标记代码块/语句计算出一个可疑度值,并根据可疑度分数排序得到最终高风险代码片段集合。该分析定位能力较为通用,可广泛应用到如单元测试、功能测试、diff测试等测试活动,大大降低人工排查定位成本,后续也将持续探索,结合更多代码白盒元素,尝试更多问题根因定位手段不断提升定位能力,目前百度正在将该定位能力集成到自动化测试流水线中。

二、基于错误码的构建系统定位方案

在测试人员的日常工作中,各种自动化任务量大,其中的异常构建数多,流水线执行完后,业务线同学需要花很多人力在问题定位&标注和红灯修复上;同时,很多问题没有彻底闭环,人工处理止于问题标注和手动恢复,导致同类问题反复出现。为了解决此类问题,我们希望对自动化异常构建进行自动标注、修复、问题闭环。错误码,是当前系统问题的一种较为直观反映。业务能结合代码注释、经验等,将错误码翻译为具体的错误原因;针对这原因一般有两种解决方案,一是可以依靠自动化恢复,二是需要人工介入处理。我们将以上过程概括为自动标注策略、自愈策略、问题闭环策略。自动标注策略指由错误码得出错误原因后,自动化标注错误分类,节省人工定位标注耗时。这要求业务线将任务日志接入统一的日志系统或使用我们规定的插件,并梳理一份错误码和错误分类的映射表,在插件中心进行注册。如此在问题发生时,工具便可以捕获错误日志,并提取其中的错误码,和错误分类做映射,并标注。自愈策略基础是自动标注策略。自愈策略接入需要先圈定自动重启的场景,即满足什么条件需要触发自愈,依赖工具产出的错误码,每一种条件为一种自愈子策略。判断当前满足自愈条件时,便触发自愈策略,如出现红灯时重启环境等。可根据业务线需要,配置超时时间、模块、内存等多个触发条件和自愈子策略,支持业务线自行定制,较为灵活。问题闭环策略同样基于自动标注策略,和自愈策略可以结合使用。在大概率需要人工介入的场景,自动创建问题的icafe卡片,卡片内容中描述问题、错误码和自动定位结果,由人工来确认问题的解决方式和处理结果。从问题出现到卡片创建再到卡片状态被修改为处理完成,才算完成闭环。在项目业务线试点中,异常任务问题上报率达到100%,问题闭环率达到94%。

三、商业收入变化大盘止损决策定位介绍

商业收入变化大盘止损决策定位过程由报警接收, 报警定位诊断、故障特征提取、止损决策、止损方案推荐组成,其核心是覆盖和诊断策略的有效性;其中覆盖又包含报警覆盖、指标覆盖两部分;报警覆盖首先需要覆盖产品线的各个子方向,指标覆盖是指对当前已覆盖报警的业务的监控指标完备性的覆盖,包含系统稳定性指标覆盖、用商指标覆盖、宏观指标&业务过程指标结合完备性指标的整体覆盖,通过完备的报警指标覆盖能第一时间感知商业大盘收入变化风险,基于报警信息制定一套故障特征标准数据结构来解析不同报警获得通用的故障特征;诊断策略对故障特征进行策略分析并最终给出有效的止损推荐方案,诊断策略的有效性对最终止损推荐的质量至关重要。当前诊断策略主要包含风险程度识别策略用于判断报警风险程度;风险指标&报警识别策略用于判断系统关联的风险指标/模块信息;异常点识别策略用于确认业务真实异常时间点;日志trace定位策略结合效果监控拓扑,对报警链路模块日志trace定位,实现精确定位到故障模块,进而对模块程序/词典变更暂停或回滚止损;根据监控影响pv计算当前报警预估损失pv指数,预估线上问题级别, 给出止损建议;通过止损库策略梳理给出完备的止损预案操作指导快速发起止损决策;为了更便于不同业务定制诊断策略,当前提供故障诊断、止损决策策略支持业务低成本自定义编写,其中故障特征可在继承通用策略的基础上自行编排、通知样式可在基本标准格式下进行子编排处理。目前商业收入变化大盘止损决策定位已完成报警触发、诊断、止损推荐的全流程机制打通,并可直接给出止损决策方案。

四、搜索UI展现case级定位方法

为了提升系统质量,质量保障同学一般会针对系统建设全方位的质量监控,虽然能召回的问题变多,但是随之而来的针对case级的定位,就会是一项耗时耗力的工作,ui展现case定位就是基于这个背景而来的。定位主要分为两个部分,一个是基础建设,二就是具体逻辑实现。基础建设是定位重要的一环,系统的复杂度会给我们定位带来极大的挑战,越是复杂的系统就越难定位。针对这个问题我们解决方案是建设完整的日志trace方案。首先为了节省资源,不单独存储日志,只存种子信息,所有日志保存一份;然后建设模块topo,将日志从上到下的进行递归检索,根据日志的内容生成请求链路。最后为了保证安全,建设流量管控,超时等机制。最终完成了秒级延迟和检索耗时的日志trace能力。二就是具体定位逻辑实现,主要是通过定位topo、结合case报警信息去触发整体的召回定位能力,然后通过日志里的进行进行正则化的匹配和提取,来判断在具体case的原因在哪些地方有体现,比如具体的资源为什么没有召回,在哪个地方被删除和修改,最终实现分钟级别的报警接收和自动定位。

---------- END ----------

推荐阅读【技术加油站】系列:

揭秘百度智能测试在测试评估领域实践

揭秘百度智能测试在测试分析领域实践‍

揭秘百度智能测试在测试自动执行领域实践

揭秘百度智能测试在测试自动生成领域的探索

【技术加油站】浅谈百度智能测试的三个阶段

【技术加油站】揭秘百度智能测试规模化落地

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/105564.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

傻白探索Chiplet,国内外研究现状(六)

目录 一、概述 二、国外Chiplet历史与现状 2.1 AMD 2.1.1 EPYC&#xff08;Naples&#xff09; 2.1.2 EPYC&#xff08;Rome&#xff09; 2.1.3 EPYC&#xff08;Milan-X &#xff09; 2.1.4 Ryzen&#xff08;Matisse&#xff09; 2.2 苹果 2.3 Intel 2.3.1 Alter…

【大数据技术】Spark+Flume+Kafka实现商品实时交易数据统计分析实战(附源码)

需要源码请点赞关注收藏后评论区留言私信~~~ Flume、Kafka区别和侧重点 1&#xff09;Kafka 是一个非常通用的系统&#xff0c;你可以有许多生产者和消费者共享多个主题Topics。相比之下&#xff0c;Flume是一个专用工具被设计为旨在往HDFS&#xff0c;HBase等发送数据。它对H…

2022年我国江蓠行业现状:养殖面积、产量不断增长 进口量仍大于出口

根据观研报告网发布的《中国江蓠市场现状深度研究与发展前景预测报告&#xff08;2022-2029年&#xff09;》显示&#xff0c;江蓠属于“海藻”产业&#xff0c;为暖水性藻类&#xff0c;我国俗称 “龙须菜”、 “海菜”、 “蚝菜”。藻体紫褐色或紫黄色、绿色。 江蓠在热带、 …

Opencv(C++)笔记--霍夫变换检测直线、霍夫变换检测圆

目录 1--原理 2--Opencv API 3--实例代码 4--霍夫变换检测圆 1--原理 具体原理可参考 博客1 和 视频讲解1&#xff1b; 霍夫变换检测直线的核心思想是&#xff1a;在笛卡尔坐标系下&#xff0c;一条直线&#xff08;两个点&#xff08;x1, y1&#xff09;和&#xff08;x2,…

行业权威来揭秘,商用PC为什么首选12代酷睿

第12代酷睿处理器可以提供更卓越的性能&#xff0c;凭借架构先进性让商用台式机和笔记本电脑为用户带来更好的体验&#xff0c;帮助企业和员工效率倍增。 作者|九月 来源| PConline 想要让办公效率进一步提升&#xff0c;一台强大的PC设备是必不可少的生产力和内容创作工…

有什么适合零基础的人做的副业兼职

互联网上有很多套路。这是不可预防的。只要你敢贪婪&#xff0c;你就会陷入别人设计的陷阱。在业余时间做兼职应该是很多人的梦想&#xff0c;因为他们可以在有限的时间内赚更多的钱。很多人不知道的是&#xff0c;其实我们赚钱的渠道很多:比如网上发文章.短视频直播.我们媒体、…

基于SpringBoot+Mybatis框架的私人影院预约系统(附源码,包含数据库文件)

基于SpringBootMybatis框架的私人影院预约系统&#xff0c;附源码&#xff0c;包含数据库文件。 非常完整的一个项目&#xff0c;希望能对大家有帮助哈。 本系统的完整源码以及数据库文件都在文章结尾处&#xff0c;大家自行获取即可。 项目简介 该项目设计了基于SpringBoo…

Spring MVC—Spring MVC概述

文章目录Java web的发展历史一.Model I和Model II1.Model I开发模式2.Model II开发模式二. MVC模式SpringMVC 的工作原理和流程springmvc 的拦截器Spring和SpringMVC的区别————————————————————————————————Java web的发展历史 一.Model I和M…

VS Code debug调试时无法查看变量内容【已解决】

问题场景&#xff1a;新换成的vscode编译软件&#xff0c;但是在debug调试时发现与QtCreator不同&#xff0c;无法直接查看变量&#xff0c;显示的都是地址或其他。 比如&#xff1a;QString或QStringList无法查看具体的内容&#xff0c;正常是这样显示的&#xff0c;反正我不…

Linux神器——vim

目录 一、vim基本概念 二、vim基本操作 三、vim正常模式命令集 四、vim末行模式命令集 五、vim操作总结 六、vim界面配置 vi/vim的区别简单点来说&#xff0c;它们都是多模式编辑器&#xff0c;不同的是vim是vi的升级版本&#xff0c;它不仅兼容vi的所有指令&#xff0c;而…

上班15年后,普通程序员能实现财富自由吗?

对于职业生涯还没有开挂的普通程序员来说&#xff0c;有可能实现财务自由吗&#xff1f; 先来说下财务自由的最低标准 北上广深&#xff1a;身价3000万&#xff0c;含房产1000万、现金2000万。 杭州、南京、成都等二线城市&#xff1a;身价1500万&#xff0c;含500万房产、现…

集成底座双K8S集群扩展升级方案

集成底座方案是应用于企业信息化建设的集成整合阶段&#xff0c;通过建立统一、标准、柔性、可复用、可扩展的IT架构&#xff0c;解决企业信息化建设过程中缺乏整体规划、集成整合难度大、安全管控不到位等问题&#xff0c;强化企业信息化的架构建设、集成整合、数据治理、安全…

某鱼兼职并不是那么好做,钱也不是漫天要价

文章目录一、背景二、雇主的期望2.1、jinja2代码三、题主的期望3.1、删除功能3.2、前端体现3.3、留言列表实现降序3.4、效果显示四、总结一、背景 上周某鱼推送过来的单子多到题主应接不暇&#xff0c;不得已拒绝了几单&#xff0c;但是接下来的单子呢又不那么顺利&#xff0c;…

提速3.7倍!何恺明团队再发新作,更快更高效的FLIP模型:通过Masking扩展语言-图像预训练(附论文原文下载)

原创/文 BFT机器人 研究论文地址&#xff1a;https://arxiv.org/abs/2212.00794 计算机视觉和深度学习领域大神何恺明携团队再发新作&#xff01;论文围绕近来火热的CLIP&#xff08;Contrastive Language-Image Pre-Training&#xff09;模型展开研究&#xff0c;并提出了一种…

Python怎么进行时区的转换

pytz 是一个用于处理时区的 Python 库,它为 Python 提供了对时区的支持。 它提供了大量的时区信息&#xff0c;包括时区名称、偏移量、是否使用夏令时等。你可以使用 pytz 库来处理本地时间、UTC 时间和其他时区之间的转换。 它提供了许多函数来帮助你处理时区相关的信息。 …

C++之多态(中篇)(最全总结)

这里接上面C之多态&#xff08;上篇&#xff09; 本篇目录4.多态的原理4.2 多态的原理4.3 C 11 override和final4.4 重载、重写&#xff08;覆盖&#xff09;、隐藏&#xff08;重定义&#xff09;的对比 &#xff08;函数之间的关系&#xff09;5.抽象类5.1概念5.2接口继承和实…

三、基于kubeadm安装kubernetes1.25集群第二篇

在上一篇中我们已经安装kubernetes要求做了服务器初始化&#xff0c;看这篇之前&#xff0c;建议先看下上篇&#xff1a;https://blog.csdn.net/u011837804/article/details/128350651 那我们正式开始kubernetes1.26集群安装 1、每台机器安装docker20.10.22 docker的安装细节…

数据结构训练营4

开启蓝桥杯备战计划&#xff0c;每日练习算法一题&#xff01;&#xff01;坚持下去&#xff0c;想必下一年的蓝桥杯将会有你&#xff01;&#xff01;笔者是在力扣上面进行的刷题&#xff01;&#xff01;由于是第一次刷题&#xff01;找到的题目也不咋样&#xff01;所以&…

itop-imx8m开发板gstreamer日志级别设置

gst 的日志等级分为 none(0)error(1) warning(2) info(3) debug(4) log(5)。默认 gst 的日志等级为 1&#xff0c;即 error 打印&#xff0c;出错时会打印。 1&#xff09;全局日志级别设置 如果需要更高级别打印&#xff0c;修改环境变量 GST_DEBUG 即可。如需要 warning 级别…

基于python的transform行人车辆识别

Transformer是一种神经网络体系结构&#xff0c;由于它能够有效地处理顺序数据中的长期依赖性&#xff0c;因此在自然语言处理(NLP)任务中受到欢迎。它还被应用于各种其他任务&#xff0c;包括图像分类、对象检测和语音识别。 在车辆和行人识别方面&#xff0c;transformer可用…