• 0
  • 0
分享
  • 揭秘百度智能测试在测试评估领域实践——软件测试圈
  • TIMI 2022-11-07 14:32:44 字数 3075 阅读 618 收藏 0

测试评估是通过收集质量保障活动过程产生的各类系统表现数据,利用策略进行分析,以进一观测经过全部质量活动后的质量风险,此次分析区别于测试报告,如性能测试报告、功能测试报告,测试报告是针对某项质量活动揭露有无问题的报告,测试评估是从风险程度去判断是否要增加质量活动。测试评估往往是质量保障人员最容易忽视的环节,但随着测试自动化程度水平的提升,测试人员往往只通过自动化报告去判断质量风险,而缺少必要的分析,极容易造成漏测。

测试评估智能化通过将数据、算法、工程等相关技术有机结合,从质量活动系统表现数据、变更风险程度等方面,利用策略或算法预估项目准出的风险,以最终决定项目是否可以上线。测试评估的研究主要从风险引入、质量活动数据挖掘、风险度评估等多个领域进行研究,在该领域的实践相对较少,百度QA一直在探索研究和实践。本章节将从对应实践角度,介绍相关领域的目标、思路,涉及到的技术点、效果,希望能给到大家一定参考。

一、基于研发行为的质量风险维度挖掘

质量风险引入主要是研发阶段,即研发写出有风险代码。研究该过程,实际上是在探寻何种人在何种背景下写出何种代码容易引入风险,挖掘出因素并进行结构化,进而通过模型进行识别风险,为下一步风险控制和决策提供依据。

挖掘质量风险引入的维度有项目风险、人员风险、代码风险等,

项目风险包括开发时长、模块数、变更数等维度,可以衡量出项目规模;

人员风险包括千行代码bug率、项目熟悉度、提测打回数等,可以衡量出研发人员的靠谱程度。

代码风险包括两类,一类是变更行、函数、复杂度等代码变更信息,可以衡量出复杂程度;另一类是影响接口、UI、场景对应的用户密度、问题密度等,可以衡量出变更代码可能影响面。

基于这些数据,建立模型和规则,可以得到风险发生概率和风险发生造成危害大小,帮助判断项目qa需要介入程度,如是否可以自测、无人值守。

数据维度选择、采集是识别的基础。

1、 项目风险、人员风险依赖项目过程中留存数据,在整个交付过程会得到采集、清洗和落盘;

2、 代码风险可由历史提交情况,结合代码语法树分析AST和深度算法识别等技术计算得到,用来判断风险概率,如稳定性风险、性能风险等。

依赖风险可以通过rpc+mesh等系统架构进行获取,获取服务相互间依赖,再结合代码理解,判断项目变更是否会带来服务间影响,进而判断依赖风险概率。

二、准入风险评估及应用

准入风险评估主要由风险维度数据、风险决策、任务类型三部分组成,以判断项目预计需要用何种质量活动进行覆盖,如完全自动化、RD自测即可、QA介入或介入程度。

准入风险评估本质是测试前识别风险,根据风险推荐/预警质量活动和测试用例。建设通用数据挖掘工程能力打通数据血缘关系,获取项目风险画像、人员风险画像、代码动静态风险画像等,基于画像信息建立风险识别能力量化风险;风险控制本质是针对已识别风险给出执行建议和充分度评估;深入风险跟踪&控制,智能决策生成或执行能充分暴露风险的测试活动(如功能测试、策略测试、性能测试、灰度等),使得系统风险和产品质量风险最低;驱动测试活动从传统的经验执行触发模式向充分度评估指导的风险驱动执行模型转变,在测试活动无法覆盖所有已识别风险即测试充分度不满足需求时给出优化建议补充测试指导。风险决策本质是综合考虑风险发生概率和风险发生时的影响程度进行综合决策,借鉴偏专家经验的规则化决策以及风控模型,产出基于规则、模型、影响的整体量化决策方案。整个风险决策闭环流程包含风险追踪数据获取、风险数据特征筛选、特征清洗、特征处理、模型开发、校验评估、模型上线、监测标注,并且将标注结果反哺风险追踪数据,完成整个风险决策流程良性循环。

准入风险评估结论主要用于测试任务分发、流程流转、测试人员分发等,通过准入风险评估结论指导后续质量方式选择自动化任务跳过、无人值守、自主测试、何种类型的QA介入,总之风险准入评估,可以用来做质量活动的最优分发,提升质量活动的合理性。

三、多维活动过程数据挖掘

项目通过准入风险评估后,会进入到质量活动进行对应的测试,需要记录每个质量活动的痕迹,用来判断通过质量活动后,前期风险准入评估风险是否得到覆盖,本环节就是要研究获取何种维度质量活动数据和抓取。下面主要讲得是比较核心的白盒覆盖率,日志覆盖率,业务请求覆盖,仿真性等数据挖掘。

白盒覆盖率:主要是测试过程中,测试用例对项目的覆盖程度,用于评判测试的完备性,细分项目有语句、判定、分支、函数等等。主流的实现思路是通过对源码文件在编译过程中产生的预处理文件进行插桩处理,及对预处理文件埋点记录函数,而后正常去编译。当正在运行的程序走到相关的代码行便会进行记录,再去对记录的数据进行挖掘和采集,得到白盒覆盖率数据

日志覆盖率:一般指的是异常日志的覆盖情况,主要用于检测异常测试的充分度。和白盒覆盖率相比,不需要单独插桩编译,会省时许多。主流的实现逻辑是使用单独的日志打印的逻辑函数。当正在运行的程序走到相关的函数便会进行记录,最后统计测试用例可以覆盖的日志情况,最终得到日志覆盖率的数据

业务请求覆盖:主要指的是通过业务场景建设业务请求知识图谱,根据经验,本身场景风险大小去细化请求路径,最终分风险级别给出所有业务场景集合,在执行测试用例的时候,来判断测试用例中业务请求在业务场景中的覆盖情况,得到业务请求覆盖的数据。

仿真性:主要分两类,一是环境仿真性,主要是和线上环境的仿真程度,包括机器,网络,程序版本,上下游情况等等,得到环境仿真性数据;二是流量仿真性,包括流量大小,潮汐,覆盖范围等等,通过数据的统计得到流量仿真性,最终给出仿真性数据。

四、基于模型的风险评估

以往当项目提测时,评估项目质量风险更多的是根据测试人员的以往测试经验来决定的。但这种评估项目风险的手段存在着人工判断存在盲区,测试人员经验不足等问题,因此基于模型的质量风险度评估系统应运而生。

本环节就是应用前几个阶段的风险维度数据+质量活动数据,用模型或规则预估项目最终风险大小,来判断项目是否应该上线或补充测试。

在风险评估中,需要考虑风险的发生的概率和风险发生的影响进行决策,因此在决策方案上,采用基于规则+模型+影响来进行量化决策。首先,建设风险概率模型,通过历史数据自动学习“经验”,用以评估项目风险发生的概率。在模型选型上,模型需要有一定的可解释性,且质量数据量较少,速度要求高等特性。

并且针对业务测试数据对各种分类算法进行效果验证。综合以上考量,选取逻辑回归(LR)作为分类模型。在模型特征选取上,选取风险引入(代码风险指标,人员风险指标等)和风险移除(测试充分度,监控完备度等)两个维度的多类特征数据作为模型输入。然后,在风险决策结论给出方面,采用风险矩阵法的思路,综合考虑风险的遗留概率(风险发生的可能性)和风险的影响程度(风险的严重程度),得出风险的评估结论。最后,通过风险报告可视化等路径完善反馈闭环,持续优化模型迭代。

通过上述质量风险维度设计、风险准入评估、质量活动数据挖掘、风险准出评估,四个环节系统实现,把所有环节连接起来,落地业务线,在提质增效上取得很好的效果:

风险评估单Q22-Q3共识别1000+不可自主测试项目,共拦截300+bug;风险评估托管4000+自主测试项目,约节省2000+人天 。

基于风险决策进行质量保障领域,才刚起步,后续百度QA将持续从上述四个维度进行技术和算法研究,以进一步提升准召。


作者:百度Geek说

链接:https://juejin.cn/post/7156043909544542239

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 扫盲内容:什么是接口?接口都有哪些类型?接口的本质是什么?什么是接口测试?问什么要做接口测试?怎样做接口测试?接口测测试点是什么?接口测试都要掌握哪些知识?其他相关知识?1、什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。2、接口都有哪些类型?接口一般分为两种:程序内部的接口;系统对外的接口;系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数...
            12 12 1644
            分享
          • 今日晚间,达达、顺丰同城、闪送相继宣布与抖音生活服务达成合作,为餐饮商家提供同城配送解决方案。在抖音北京本地页面,提供外卖到家业务的商家已经开始提供商家自配业务。据一位火锅品牌商家向新消费日报透露,商家随机选择配送平台的功能,实际上已经试运行一段时间。“达达、顺丰同城、闪送都是全城配送,所以基本可以覆盖主城区所有地点,只是配送费用不同。”此前,抖音曾与饿了么达成合作,“饿了么外卖”出现在抖音小程序,不到4个月时间,抖音在即时配送领域再添新合作商,抖音在本地生活的野心尽显。团购服务商张霖对新消费日报记者表示,抖音选择在这一节点深耕本地生活,是因为价格敏感的用户比例在增加。“虽然总需求萎缩,但线上...
            0 0 570
            分享
          • 什么是大数据?大数据是不能使用传统计算技术处理的大型数据集的集合。这些数据集的测试涉及各种工具,技术和框架来处理。大数据涉及数据创建,存储,检索和分析,在数量,多样性和速度方面都非常出色。您可以在这里了解有关大数据,Hadoop和Mapreduce的更多信息,在本教程中,我们将学习:大数据测试策略验证大数据应用程序的测试步骤架构测试性能测试测试环境需求大数据测试 传统数据库测试大数据场景中使用的工具大数据测试中的挑战测试大数据应用程序更多的是验证其数据处理,而不是测试软件产品的个别功能。当涉及到大数据测试时,性能和功能测试是关键。在大数据测试中,QA工程师使用集群和其他支持组件来验证TB级数据...
            15 15 1600
            分享
          •   去年下半年,公司空降了一位总监,他提出了一个观点:提高交付质量和交付速率!顿时茅塞顿开,对呀,我们工作的目的不就是提高交付的软件系统质量,以及提高效率!  昨晚听同行分享后,思考总结了一下,针对如何提高交付的软件应用质量和速率这个问题,发现自己还有一些细节的地方没考虑到,果然还是经验不足,学习成长的道路,任重而道远!!!  下面的内容,重新整理了大佬分享的几个观点,结合自己的一些想法,算是做一个参考吧。。。  一、需求  1、需求评审  为什么要需求评审?原因有下面几点:  ①、熟悉业务,由产品或者业务讲解需求,好做到心中有数,不至于到开发测试阶段暴露出由于业务不熟悉导致的问题;  ②、多...
            0 0 635
            分享
          •  Apifox 自动化测试模块新升级,在流程测试原有功能上新增了测试步骤循环、判断、等待时间的流程控制条件,以及测试步骤分组管理等能力。当业务需要多种判断时,流程控制可用于控制测试步骤的复杂执行顺序,更能模拟用户真实的使用场景,提升测试人员对复杂测试场景的工作效率。循环当测试步骤需要重复执行时,可以通过设置固定数量的有限循环来快速实现。同时支持设置中止条件或遇错处理的逻辑判断,以保证循环能按需运行。注意:右侧运行参数设置模块也有循环功能,但该功能是针对的是整个测试用例。场景实例宠物店需要在当天营业结束后,对今日售出的每个宠物进行信息查询并将「在售」状态变更为「已售出」。假设今日售出 ...
            0 0 981
            分享
      • 51testing软件测试圈微信