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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 在软件测试行业,尤其是今年疫情的发生,想要在这个行业站稳脚跟,有着扎实的技术是非常重要的,今天小编要为大家介绍的内容就是软件测试工程师如何提升自己?希望能够给大家带来帮助。软件测试工程师如何提升自己?熟练掌握IT核心技术:编程、数据库。先熟悉c++,然后慢慢运用起来,然后学习Python编程基础,在测试中所处的环境和对象就是程序,在测试中运用一些程序命令帮助我们完成一些繁琐、枯燥、重复的简单工作,可以更好更快的找到bug,而且不容易出错,提高了效率,节省了时间。虽然编程不是一个程序测试人员必须具备的能力,但是追求更高效有效率的软件测试是测试人员提高水平的动力之一。学习数据库可以方便使用测试管理...
            0 0 1110
            分享
          •   JasperReports介绍  JasperReport是一个强大、灵活的报表生成工具,能够展示丰富的页面内容,并将之转换成PDF、HTML或者XML格式,该库完全由Java写出,可以用于在各种Java应用程序,非常适合Java开发者用来做报表生成。  基本使用指南  新建项目  首先选择模板,这里就直接选了普通的A4模板。  这里用来设置文件名字和文件路径。  这里是选择数据源,我这里已经事先创建好了数据库连接,在后续测试取数据的时候会用到。  这里就是JasperReport的主界面,首先介绍一下界面的五个主要区域:  区域1:选择数据源和项目;  区域2:用于展示报表的内容列表,报...
            0 0 944
            分享
          •   测试设计规范是一个定义了与测试项目相关的测试条件、详细的测试方法和高级测试用例的文档。它确定了要运行哪些测试套件和测试用例,以及要跳过哪些。  使用测试设计规范,可以简化对当前测试周期的理解。这个文档回答了像“我们在做什么?”,“我们怎么做?”和“为什么要这样做?”这样的简单问题。然而,要达到这个结果,必须正确地将许多事物融入到创建规范中,使其变得完美合理。  在软件行业中,"规范"这个词对任何人来说可能并不陌生。根据理论定义,规范是关于设计和制造某物所涉及的详细描述和材料。规范已经采取了多种形式,并为不同部门提供了多种不同的服务。对于开发者来说,软件需求规范(SRS)...
            0 0 790
            分享
          •   一 现状及场景  1、缺失bug根因分析环节  工作10年,虽然不是一线城市,也经历过几家公司,规模大的、规模小的都有,针对于测试行业很少有Bug根因环节,主流程基本上都是测试提交bug-开发修改-测试验证-发送报告,测试环节结束。  往往有下面几个原因:  · 时间压力: 在项目开发周期紧张的情况下,测试团队可能会因时间压力而忽略深入的BUG根源分析。解决方案:合理规划测试时间,将足够的时间用于分析和解决问题。  · 技能和经验不足: 一些测试人员可能缺乏足够的技能和经验来进行深入的BUG根源分析。解决方案:提供培训和指导,提升团队成员的技能水平。  · 沟通不畅: ...
            0 0 497
            分享
          •   Google正在升级 Gmail 中的Gemini写作工具,以帮助你润色已经写好的草稿。Google在一篇博文中说,现在,在其他由 Gemini 支持的"帮我写"选项(如正式化和详细化)中,你可以点击"润色"来润色你的电子邮件。  该公司还在 Android 和 iOS 上的电子邮件正文中添加了快捷方式,让人更清楚地知道有人工智能写作工具可以使用。  Google One AI 高级账户的付费用户或Google工作空间Gemini插件的付费用户可以使用这些工具。如果你是这样的人,当你打开一个空草稿时,你会看到一个"帮我写"的快捷方...
            0 0 299
            分享
      • 51testing软件测试圈微信