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

news2024/12/24 8:44:39

 

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

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

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

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

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

本文将从多个实践的角度,介绍相关领域的目标、思路、涉及到的技术点,希望能给到大家一定参考。

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

GEEK TALK

基于频谱的问题根因定位期望能通过定位分析技术手段,揭露出疑似代码问题范围,协助研发和测试人员在定位问题中快速修复,降低人效。

这一方法在学术界研究已久,其思路是利用测试用例执行过程中的程序元素信息(如测试结果、代码覆盖率),对内部代码做逻辑差异分析,对代码行或代码块进行可疑度排序,从而去定位错误根源。

其主要过程为使用插桩编译后的程序执行被测用例集合,对每一个测试用例的标记代码块/语句是否覆盖、是否通过进行分析,以语句/代码块为统计单位,采集<ef,ep,nf,np>四元组特征(ef:失败用例中,该代码块执行的次数;ep:成功用例中,该代码块执行的次数;nf:失败用例中,该代码块未执行的次数;np:成功用例中,该代码块未执行的次数),通过多种可疑度公式(如Tarantula,Ochiai,Overlab等),将每个标记代码块/语句计算出一个可疑度值,并根据可疑度分数排序得到最终高风险代码片段集合。

该分析定位能力较为通用,可广泛应用到如单元测试、功能测试、diff测试等测试活动,大大降低人工排查定位成本,后续也将持续探索,结合更多代码白盒元素,尝试更多问题根因定位手段不断提升定位能力,目前百度正在将该定位能力集成到自动化测试流水线中。

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

GEEK TALK

在测试人员的日常工作中,各种自动化任务量大,其中的异常构建数多,流水线执行完后,业务线同学需要花很多人力在问题定位&标注和红灯修复上;同时,很多问题没有彻底闭环,人工处理止于问题标注和手动恢复,导致同类问题反复出现。

为了解决此类问题,我们希望对自动化异常构建进行自动标注、修复、问题闭环。错误码,是当前系统问题的一种较为直观反映。业务能结合代码注释、经验等,将错误码翻译为具体的错误原因;针对这原因一般有两种解决方案,一是可以依靠自动化恢复,二是需要人工介入处理。

我们将以上过程概括为自动标注策略、自愈策略、问题闭环策略。

自动标注策略指由错误码得出错误原因后,自动化标注错误分类,节省人工定位标注耗时。这要求业务线将任务日志接入统一的日志系统或使用我们规定的插件,并梳理一份错误码和错误分类的映射表,在插件中心进行注册。如此在问题发生时,工具便可以捕获错误日志,并提取其中的错误码,和错误分类做映射,并标注。

自愈策略基础是自动标注策略。自愈策略接入需要先圈定自动重启的场景,即满足什么条件需要触发自愈,依赖工具产出的错误码,每一种条件为一种自愈子策略。判断当前满足自愈条件时,便触发自愈策略,如出现红灯时重启环境等。可根据业务线需要,配置超时时间、模块、内存等多个触发条件和自愈子策略,支持业务线自行定制,较为灵活。

问题闭环策略同样基于自动标注策略,和自愈策略可以结合使用。在大概率需要人工介入的场景,自动创建问题的icafe卡片,卡片内容中描述问题、错误码和自动定位结果,由人工来确认问题的解决方式和处理结果。从问题出现到卡片创建再到卡片状态被修改为处理完成,才算完成闭环。在项目业务线试点中,异常任务问题上报率达到100%,问题闭环率达到94%。

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

GEEK TALK

商业收入变化大盘止损决策定位过程由报警接收, 报警定位诊断、故障特征提取、止损决策、止损方案推荐组成,其核心是覆盖和诊断策略的有效性。

其中覆盖又包含报警覆盖、指标覆盖两部分。报警覆盖首先需要覆盖产品线的各个子方向;指标覆盖是指对当前已覆盖报警的业务的监控指标完备性的覆盖,包含系统稳定性指标覆盖、用商指标覆盖、宏观指标&业务过程指标结合完备性指标的整体覆盖,通过完备的报警指标覆盖能第一时间感知商业大盘收入变化风险,基于报警信息制定一套故障特征标准数据结构来解析不同报警获得通用的故障特征。

诊断策略对故障特征进行策略分析并最终给出有效的止损推荐方案,诊断策略的有效性对最终止损推荐的质量至关重要。

当前诊断策略主要包含风险程度识别策略用于判断报警风险程度;风险指标&报警识别策略用于判断系统关联的风险指标/模块信息;异常点识别策略用于确认业务真实异常时间点;日志trace定位策略结合效果监控拓扑,对报警链路模块日志trace定位,实现精确定位到故障模块,进而对模块程序/词典变更暂停或回滚止损;根据监控影响pv计算当前报警预估损失pv指数,预估线上问题级别, 给出止损建议;通过止损库策略梳理给出完备的止损预案操作指导快速发起止损决策;为了更便于不同业务定制诊断策略,当前提供故障诊断、止损决策策略支持业务低成本自定义编写,其中故障特征可在继承通用策略的基础上自行编排、通知样式可在基本标准格式下进行子编排处理。

目前商业收入变化大盘止损决策定位已完成报警触发、诊断、止损推荐的全流程机制打通,并可直接给出止损决策方案。

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

GEEK TALK

为了提升系统质量,质量保障同学一般会针对系统建设全方位的质量监控,虽然能召回的问题变多,但是随之而来的针对case级的定位,就会是一项耗时耗力的工作,ui展现case定位就是基于这个背景而来的。

定位主要分为两个部分,一个是基础建设,二就是具体逻辑实现。

基础建设是定位重要的一环,系统的复杂度会给我们定位带来极大的挑战,越是复杂的系统就越难定位。针对这个问题我们解决方案是建设完整的日志trace方案。首先为了节省资源,不单独存储日志,只存种子信息,所有日志保存一份;然后建设模块topo,将日志从上到下的进行递归检索,根据日志的内容生成请求链路。最后为了保证安全,建设流量管控,超时等机制。最终完成了秒级延迟和检索耗时的日志trace能力。

具体定位逻辑实现,主要是通过定位topo、结合case报警信息去触发整体的召回定位能力,然后通过日志里的进行进行正则化的匹配和提取,来判断在具体case的原因在哪些地方有体现,比如具体的资源为什么没有召回,在哪个地方被删除和修改,最终实现分钟级别的报警接收和自动定位。


资源分享【这份资料必须领取~

下方这份完整的软件测试视频学习教程已经上传CSDN官方认证的二维码,朋友们如果需要可以自行免费领取 【保证100%免费】

在这里插入图片描述

在这里插入图片描述

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

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

相关文章

机器学习之回归

回归算法 线性回归 求解线性回归方法 正规方程梯度下降 迭代 API sklearn.linear_model.LinearRegression 正规方程优化fit_intercept 是否计算偏置量&#xff0c;没有的化经过原点属性 coef_ 回归系数intercept_ 偏置量 sklearn.linear_model.SGDRegressor 使用随机梯度…

转行了!文科生转程序员的外包工作经历分享

01 种子 我是一名文科生&#xff0c;法律专业&#xff0c;武汉某 211 &#xff0c;入这行纯属巧合。 大三下半年&#xff0c;大家纷纷准备秋招&#xff0c;我去校园招聘会上溜达了一圈&#xff0c;好奇而去&#xff0c;丧气而归。 或许是因为大学三年过得太过安逸(宅在宿舍打…

C#语言实例源码系列-实现本地磁盘目录

专栏分享点击跳转>Unity3D特效百例点击跳转>案例项目实战源码点击跳转>游戏脚本-辅助自动化点击跳转>Android控件全解手册 &#x1f449;关于作者 众所周知&#xff0c;人生是一个漫长的流程&#xff0c;不断克服困难&#xff0c;不断反思前进的过程。在这个过程中…

POMO: Policy Optimization with Multiple Optima for Reinforcement Learning学习笔记

文章目录摘要零、一些基础1.梯度近似2.策略梯度定理3.REINFORCE4.REINFORCE with Baseline5.REINFORCE Actor-Critic一、介绍二、相关工作&#xff08;1&#xff09;深度强化学习构建法&#xff08;2&#xff09;推理技术&#xff08;3&#xff09;深度强化学习改善法三、激励四…

制作 iOS 证书

准备工作 您需要 注册并加入 Apple Developer Program&#xff0c;才能在 App Store 上架应用。请准备一台 macOS 系统的电脑&#xff0c;用于证书制作。 创建 App ID 登录 Apple Developer&#xff0c;选择 Certificates, Identifiers & Profiles 选项。 选择 Identifi…

自学编程和计算机科班出身的差别在哪里

前不久逛知乎的时候看到一个问题&#xff1a;自学编程和计算机科班出身的差别在哪里&#xff1f; 自己回答了一下&#xff0c;获得了比较多的点赞和评论&#xff0c;在这里也分享给大家。 985 通信专业学长&#xff0c;转行程序员&#xff0c;聊一聊我的看法&#xff1a;说一千…

k8s之Job 与 CronJob

写在前面 语雀原文阅读效果更佳&#xff1a; 5、Job与CronJob 语雀 《5、Job与CronJob》 Job 与 CronJob 接下来给大家介绍另外一类资源对象&#xff1a;Job&#xff0c;我们在日常的工作中经常都会遇到一些需要进行批量数据处理和分析的需求&#xff0c;当然也会有按时间来…

RK3568平台开发系列讲解(工具命令篇)常用 GIT 命令汇总

🚀返回专栏总目录 文章目录 一、GIT BASICS二、GIT DIFF三、UNDOING CHANGES四、REWRITING GIT HISTORY五、GIT BRANCHES六、REMOTE REPOSITORIES七、GIT CONFIG八、GIT LOG九、GIT RESET十、GIT PULL十一、GIT PUSH沉淀、分享、成长,让自己和他人都能有所收获!😄 一、GI…

基于51单片机的酒精气体检测器设计

使用说明&#xff1a; 上电以后&#xff0c;需要预热一段时间&#xff0c;此时lcd显示Loading... &#xff08;预热过程为电压先上升后下降的改成&#xff0c;通过检测电压来检测是否预热完成&#xff09; &#xff0c; 预热完成后显示酒精浓度&#xff0c;按下按下按键key1即…

MySQL:互联网公司常用分库分表方案汇总

本文目录 一、数据库瓶颈 IO瓶颈 CPU瓶颈 二、分库分表 水平分库 水平分表 垂直分库 垂直分表 三、分库分表工具 四、分库分表步骤 五、分库分表问题 非partition key的查询问题 非partition key跨库跨表分页查询问题 扩容问题 六、分库分表总结 七、分库分表示例 …

因特网概述

目录1 网络、互连网&#xff08;互联网&#xff09;和因特网2 因特网发展的三个阶段3 因特网的标准化工作4 因特网的组成1 网络、互连网&#xff08;互联网&#xff09;和因特网 网络&#xff08;Network&#xff09;由若干结点&#xff08;Node&#xff09;和连接这些结点的链…

2022年山东省职业院校技能大赛高职组“网络系统管理”赛项规程

2022年山东省职业院校技能大赛高职组“网络系统管理”赛项规程一、赛项名称赛项名称&#xff1a;网络系统管理赛项组别&#xff1a;高职组赛项类别&#xff1a;电子与信息大类二、竞赛目的本赛项旨在借鉴世界技能大赛的办赛理念与技术规程&#xff0c;通过竞赛让参赛选手经历一…

论文导读 | 关于内存子图匹配算法的调研

前言 近年来&#xff0c;图数据结构在学术界和工业界的应用越来越广泛&#xff0c;包括社交网络分析、道路分析、化学分子合成、生物蛋白质网络分析、金融欺诈检测等等。子图匹配&#xff08;Subgraph Matching&#xff09;是图分析领域研究的一个重要课题&#xff0c;其旨在一…

批发进销存软件哪个好用?求测评

产品产量增加&#xff0c;在其他条件不变的情况下&#xff0c;就会形成规模效应&#xff0c;这样产品的生产成本就会降低。批发市场就可以对接大批量生产和出售单价更低的商品。而零售业往往也会采取批发货物的方式来降级成本。但是产品种类多&#xff0c;对于的供应商和客户也…

FactoryBean

FactoryBean ①简介 FactoryBean是Spring提供的一种整合第三方框架的常用机制。和普通的bean不同&#xff0c;配置一个FactoryBean类型的bean&#xff0c;在获取bean的时候得到的并不是class属性中配置的这个类的对象&#xff0c;而是getObject()方法的返回值。通过这种机制&…

网友:我30多岁了,现在转行学编程来得及吗?

这些年&#xff0c;互联网行业的变化发展很快&#xff0c;很多公司也是借助互联网发展的大趋势发展的非常好。 水涨船高&#xff0c;行业好&#xff0c;意味着互联网行业的从业者的工资也就跟着高&#xff0c;很多互联网行业刚入门的月薪基本都已经过万了&#xff0c;一些传统行…

Android设计模式详解之命令模式

前言 命令模式是行为型设计模式之一&#xff1b; 定义&#xff1a;将一个请求封装成一个对象&#xff0c;从而让用户使用不同的请求把客户端参数化&#xff1b;对请求排队或者记录日志&#xff0c;以及支持可撤销的操作&#xff1b; 使用场景&#xff1a; 需要抽象出待执行…

自动化测试高手-价值篇

自动化测试的最终交付价值是什么&#xff1a;自动化测试项目的最终交付价值是它产生的收益&#xff0c;也就是投入回报率比&#xff0c;ROI&#xff0c;一个成功的自动化测试项目必然是获得了高ROI的收益。 自动化测试高手就是要做出成功的自动化测试项目&#xff0c;不仅要写代…

linux命令date

linux命令date 文章目录linux命令date一、date二、使用&#xff08;一&#xff09;结合格式&#xff0c;格式输出数据&#xff08;二&#xff09;结合选项&#xff08;options&#xff09;一、date date命令可以获取到当前系统时间&#xff0c;主要是为了shell脚本的 date用法…

Html中锚点的使用

概述 URL是由多个部分组成。包括协议、主机&#xff08;域名&#xff09;、端口、路径、查询参数和锚点 https://www.example.com:80/path/to/myfile.html?key1value1&key2value2#anchor锚点&#xff08;anchor&#xff09;是网页内部的定位点&#xff0c;使用 # 加上锚…