关于后端:技术加油站揭秘百度智能测试规模化落地

37次阅读

共计 2374 个字符,预计需要花费 6 分钟才能阅读完成。

摘要:上一篇《【技术加油站】浅谈百度智能测试的三个阶段》,介绍了百度智能测试三阶段,本篇咱们提出以开掘场景为驱动的形式有序推动智能测试三阶段分节奏的规模化落地。

场景从何而来,是咱们首先就要面临的问题,为此还是从测试流动实质去寻找答案。测试流动其实大略能够分为 测试输出、测试执行、测试剖析、测试定位和测试评估 五个步骤。这五步测试流动指标是不一样的,因而不能抽象对整体测试流动进行智能化,容易造成指标凌乱,影响落地发展。

咱们发展的思路是:某服务的某项测试中的某个测试流动为一个场景为试点,从而造成点线面体的推动形式。如下图所示:

01 测试输出阶段中的智能化摸索

测试输出:找出笼罩足够全、精确的测试行为、数据汇合和构建实在的环境,以去笼罩更多的测试场景和更高的代码笼罩,该阶段决定测试流动发现问题能力下限。在传统测试形式中,测试输出的抉择很大水平上依赖教训和历史 case。

在智能化测试的摸索中,通过智能异样单测用例生成、海量 query 寻找最正当的 query、页面遍历举荐动作集、fuzz 函数或接口的入参等伎俩,能够进一步欠缺测试输出,晋升测试阶段召回能力。

如测试流量扩流与初筛场景中,通过扩充流量覆盖面,扩充的测试输出范畴的同时,通过特色分桶,覆盖率插桩等伎俩,剔除有效特色数据以及特色去重来实现流量初筛。针对异样场景,基于控制流图,数据建模等思维,针对值类型与门路频率等通过变异策略生成异样用例。在保障测试输出齐备性与执行效率的同时,进步测试的覆盖率。

02 测试执行阶段中的智能化摸索

测试执行阶段:联合测试输出汇合以及变更详情,以较小的代价,在不升高发现问题能力的前提下无效执行完该执行的品质流动,实质上是效率问题。

传统做法是:将所有确定的测试用例不做筛选优化、对测试过程不做精简全量执行,往往存在用例冗余度高、长尾用例分组异样,最终导致测试执行效率低、资源耗费大;

而智能测试下的做法是: 对测试汇合进行精选、类似度去重、分组平衡、资源调度来智能执行测试过程,进而极大的晋升测试执行效率,降低成本;在该阶段, 咱们通过动态评估 (动态扫描用例内容)、动静评估(执行用例并联合过程与后果的状态来判断用例品质)、变异测试(注入源代码异样算子,检测用例是否无效)、Flaky 监测(检出与剔除源代码不相干的用例) 等伎俩来确定所有该执行的用例,通过智能勾销、跳过、裁剪、排序、组合等策略来保障该执行的用例能在最短时间内无效执行实现。

03 测试分析阶段中的智能化摸索

测试分析阶段是将测试执行的后果进行零碎整体的分析判断,确认测试执行的后果是否有问题,尽可能高准召的剖析裸露问题,实质上是品质问题,行将测试输出阶段该召回的问题披露进去。

传统的做法是有教训的测试专家,来制订各测试工作是否有问题的规范,包含不限于特定指标是否存在;特定指标的大小和比照;阈值设定等,这种做法比拟依赖人的判断能力,随着零碎和环境的变动导致抗干扰能力有余。

智能场景是通过测试执行工作的历史体现,智能化进行决策分析,判断测试执行后果是否有问题。

例如 1、数据测试中可应用历史数据的指数平滑计算方法,计算数据大小,行数和内容的正当稳定范畴,进而在下次测试工作执行时,智能主动判断工作后果是否有问题。

2、业务指标测试场景中,各指标的阈值稳定范畴,也能够通过借鉴线上的稳定范畴以及历史测试工作的数据,通过智能计算的形式自动化的产出正当稳定范畴。

3、通过视觉技术剖析前端用例执行过程中,截图内容是否有问题,而不必放心人工判断导致的漏出;

4、通过 DTW 曲线拟合算法判断内存泄露是否存在,而不是传统的阈值办法。

04 测试定位阶段中的智能化摸索

测试定位,次要是疾速判断导致测试流动“失败”起因,以疾速修复,实质上是个效率问题。测试流动中常常会遇到执行失败的状况,惯例状况下常常要去排查工具、环境、代码等状况来判断流动失败的起因,最终决策是否进行对应行为,在智能化的摸索中,咱们心愿通过智能定位疾速找到测试工作失败的归因,第一步能够找到工具 / 环境问题来判断是否要进行从新构建或自愈;第二步能够找到代码导致的失败,以帮助研发疾速定位问题疾速修复晋升效率。

在该过程中,咱们摸索了基于决策树的测试失败智能定位,实现了工具失败主动 rebuild 和自愈。在监控畛域,咱们利用变更墙、线上零碎关系常识图谱实现监控问题的范畴定位,以帮助研发或运维疾速做出止损动作。

05 测试分析阶段中的智能化摸索

测试评估,是测试流动最容易漠视的阶段,从业者常常因为某测试工作红 / 绿灯来判断测试是否通过;而测试评估是联合测试执行和零碎变更,整体评估待施行或施行过测试流动的零碎危险,以进一步领导咱们是否要测试流动,实质上是个品质问题。

测试评估,首先是由历史数据造成危险判断的范式,而后用来评估新我的项目的危险。造成范式的阶段,咱们摸索了基于测试全流程数据的品质度模型,须要选取适合的危险因素,建设数据采集和变动感知的体系,采集数据并转化为特色,利用机器学习训练大量实在数据,对特色进行定性(一个因素对危险是正向还是负向)和定量(对危险的影响有多大)剖析,得出危险预估模型,将人工的教训转化为主观的判断。我的项目应用阶段,因为曾经建设了数据感知零碎,新数据能够间接输出到模型,失去即时的危险论断和特色对危险的影响状况,让品质可见。落地积攒的我的项目数据又能反哺模型,造成无效闭环。

在我的项目待施行测试流动时,咱们先进行一次测试评估,即可决定我的项目是否须要测、辅助判断如何测。采取了对应的品质流动后,再做一次危险评估,以进一步测验测试后果,发现危险。如此,测试决策将变得更无效、更可积攒、更可继续。

———- END ———-

百度 Geek 说

百度官网技术公众号上线啦!

技术干货 · 行业资讯 · 线上沙龙 · 行业大会

招聘信息 · 内推信息 · 技术书籍 · 百度周边

正文完
 0