质量评估模型助力风险决策水平提升
基于风险驱动的交付是百度实践智能测试--感知智能阶段非常重要的研究方向,基于风险驱动的交付,源于三个现状:
一、不是所有的项目都有风险,80%以上的项目无任何的关联bug和线上问题;
二、不是所有的测试任务都能够揭错,无效的质量行为(有bug发现的质量行为/所有质量行为)占比非常高;
三、测试人员也有误判的可能,漏测一直存在。
通过上述三个现状,可见如果能够有方法逼近:测该测的项目、评风险评得准,那么对测试效能和召回都有极大的帮助。
接下来我们将持续刊登三篇文章,来揭秘百度实践基于风险驱动的交付的冰山一角:
1、百度搜索业务交付无人值守实践与探索:从具体业务实践的角度介绍风险评估在交付无人值守领域的关键作用。
2、AI技术在基于风险测试模式转型中的应用:从测试全过程的角度介绍各环节以风险思维+AI技术加持的各种应用场景。
3、质量评估模型助力风险决策水平提升:从思路、方案和模型的角度介绍质量度模型的实现和挑战。
本文介绍第三篇:质量评估模型助力风险决策水平提升。
01
无论自动化测试任务执行、项目准出还是项目流程流转主要依赖人员判断,而人员能力是有区别的,进而会影响质效,本文章主要介绍我们在探索和实践的一条路径,就是通过机器学习模型,让计算机自动,辅助甚至是替代人工,进行决策。
项目如何评估是否可以准出,如果是人工决策方式,一般分为三步:
1. 查看交付过程涉及到的数据以及报告,包括查看代码、以及预估影响面、质量活动内容等;
2. 结合这些数据给出决策结论,包括决策可以进入下一个流程、需要 qa补充测试;
3. 跟进该项目,在后续环节是否有bug漏出,如果有bug漏出会去做 case study。经过case study学习,以及一些经验交流,QA不断提升测试认知,从而在下一次需求测试中,能做的更好。
基于这种人工决策的方式,存在一些弊端:
1. 查看数据,每个人需要跨多个平台,查看各种测试活动的数据,看数据的重复性比较大,而且成本比较高;
2. 依赖人工经验给出决策结论,人员素质参差不齐,特别是新老员工的测试经验的差距比较大,完全基于人工经验去评估,会存在判断盲区,造成漏测;
3. 如果测试人员流失,会导致测试经验流失。并且测试人员的精力有限,当自主测试项目比较多,会影响测试项目的交付周期。
那么如何破局呢?
机器学习其实在很多实际的业务场景当中遍地开花,比如基于人工进行决策,现在通过机器自己去决策场景:
自动驾驶
智能的自检系统
通道人脸安检之类
以自动驾驶为例,自动驾驶从 L0 到 L5一共有六个等级,随着等级提升,自动化程度也同步提升,人工需要参与程度不断降低。
L0 阶段属于纯人工驾驶阶段,需驾驶员完全去做所有的操作以及环境监控;
到 L2 阶段的时候,是一个辅助驾驶阶段,汽车可以做部分自动驾驶,比如做一些加速、减速或制动,但是驾驶员还需随时保证能够控制这个车辆,以及全部的环境监测;
到 L3 跟 L4 的时候,就是条件自动化跟高度自动化阶段,汽车大部分时候能够自动操作,人只在偶尔需要去关注一下,部分的环境监测;
到 L5 的时候,就是完全全自动化驾驶阶段,让人完全变成了旅客。
以自动化驾驶为例,其实是很契合我们期望的,即基于机器进行风险决策:从纯人工决策 -> 辅助决策 -> 条件自动化 -> 高度自动化 -> 全自动化决策。
GEEK TALK
02
整体方案
要达到机器代替人自动决策,如何做到呢?
整体方案是构建质量评估系统,机器自动决策,自动流转流程,核心由风险识别、风险控制和风险决策3部分组成,具体如下:
风险识别: 识别动、静态风险点,包括人员,项目,代码变更和影响范围的风险;
风险控制: 针对识别的风险,推荐测试活动、测试用例,自动构造测试输入进行测试控制;
风险决策: 针对风险控制后的风险遗留概率和风险发生可能造成的影响,给出测试建议,风险等级和决策结论,就可以根据决策结论和建议做相应的辅助/自动化操作。
第二、风险控制:
首先识别所有风险;
然后针对于变更,比如影响接口、影响场景有针对性的测试,能够覆盖变更用例做定制执行,如果有覆盖不到的,甚至可以推荐一些自动生成用例执行;
测试执行后,进行充分度评估,包括:一次测试输入的测试参数组合是否充分?执行的覆盖情况是否充分?输出、断言、error 类型是否充分?从而更加全面的评估测试充分度。如果不充分,可以给出是哪一块不充分,需要提升,进而补充相应测试。
第三、风险决策:
风险决策过程,主要涉及到两个重要部分:风险发生概率的评估以及 结合风险产生的影响给出决策结论。接下来,介绍这两部分如何建设。
风险发生概率评估
一个测试任务,是否有风险以及风险发生概率的大小本质上是一个二分类算法,通过模型从历史数据自动学习经验,预测未来,二分类算法很多,那么该选哪一个,主要从三个角度:
1. 首先是从实际到我们业务测试数据的效果来看效果是怎么样的;
2. 然后模型需要可解释。因为给出决策结论后,qa或者rd需要知道,为什么给出对应的结论,或者拦截后需要披露拦截原因。所以对于模型可解释性要求比较高;
3.质量数据量比较少,对速度要求比较高,所以模型不能太复杂。如果数据量少、模型太复杂就会很容易出现过拟合。
基于上面三个考虑,最终选择逻辑回归作为分类的模型,逻辑回归公式如下:
θ表示权重,x 表示选择的特征
比如:x1 是一个开发时长,X2 是一个变更函数类似特征。
给模型输入的特征就是风险引入跟风险移除的各种维度的特征灌给模型去学习,模型效果评估,因为分类算法,所以典型的评估指标主要是正确率、准召率指标。
风险决策给出评估结论
我们无法在有限时间穷举所有可能,因此,测试本质是规避风险,减少风险发生概率和发生问题造成的危害,风险矩阵是一种综合两者的风险评估分析的方法,主要用于风险评估领域,y 轴是风险发生的问题的概率,x 轴是问题发生产生的危害,交叉的区间里面,就有不同的结论:
红色这一块是代表伤害事件发生可能性极大,并且任何情况都会出现,这种肯定是要拦截的;
针对于会发生少量的伤害事件但是可能性极小的、或者压根就不会发生,但是在极少特定情况下可能会发生,这种就会通过,无人值守直接流转或者由 QA 确认之后再进行流转。
有了风险识别与控制决策后,需要有统让QA去看风险决策的内容,所以会有风险可视化报告,包括:
风险的数据;
决策的结论以及反馈建议。
报告中有入口能够让QA进行反馈,整个反馈闭环的一个流程大概就是,人工反馈,再结合后续的环节去看有没有BUG反馈,结合这些反馈,我们会去提取模型优化路径。优化路径提取完,会去看这个优化路径,里面有哪一些特征需要提取,提取完之后灌给模型去迭代,然后再到下一轮的模型上线落地,循环迭代优化。
GEEK TALK
03
落地效果
整套方案的落地收益主要是带来测试思维变化,决策水平提升明显,测试思维变化主要是越来越多业务依赖报告去评估,给出决策结论,有部分业务甚至直接基于模型结论自动流程流转。
决策水平提升主要体现在质量和效能的提升。
质量:2022Q3共识别1123个不可自主测试项目,共拦截318个bug;
效能:2022Q3共识别4345个自主测试项目,约节省2172人天;可自测项目评估等待时间得到大幅降低:从50H降到2H。
GEEK TALK
04
总结
上述内容质量风险评估系统共包含风险识别、风险控制、风险决策和风险闭环四部分,我们现在能力还需要持续完善。如果类比自动驾驶的 L0 到 L5 层级来说,当前处在辅助决策这一阶段。后续我们会不断的完善、深耕所需能力,往条件自动化跟高度自动化这个方向前进,期望未来能够实现完全自动化决策的这种能力。
能够实现完全自动化的这种决策能力,未来的智能交付系统,可能是这样一个的流程。
发起需求,请求质量评估系统,质量评估系统来告知应该进行什么样的测试活动、测试用例甚至应该由谁来执行测试;
在执行过程中,请求质量评估系统,检查测试充不充分?有哪里还不充分,如果执行一半已经够充分,可以给出终止建议;
测试完成后,请求质量风险评估系统,返回是否还有遗留的风险点没有测?还需要补充哪一些测试?给出一些拦截建议,比如高风险拦截后分配QA跟进,补充测试用例,再做测试。如果是低风险,可能就自动流转到下一个阶段,减少人工参与。
END