百度智能测试在测试分析领域实践

发表于:2022-8-31 09:25

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:intelligents    来源:掘金

  测试分析是指测试活动通过设计测试用例、用例执行完成后,通过观察被测系统的表现,来判断被测系统是否存在问题。测试输入和测试分析两个过程共同决定了测试活动的问题召回能力,用平时常见的活动表示单测中的校验点即为测试分析,无校验点的单测是无效的。测试分析从理论层面可以分为VE(正确性校验)和VA(基于表现的校验)。在智能领域VE的研究领域更多的是如何正确的生成校验点、评估校验点的正确性和合理性;VA因为涉及到通过数据统计分析系统分析规律发现问题,研究的领域比较广泛。
  测试分析智能化通过将数据、算法、工程等相关技术有机结合,以尽可能召回测试输入覆盖到的场景或问题,一般包含直接的校验点自动生成、基于数据挖掘系统的潜在问题、基于视觉的UI召回等方面,在学术界和工业界均有非常优秀的研究和实践。本章节将从多个实践的角度,介绍相关领域的目标、思路、涉及到的技术点、效果,希望能给到大家一定参考。
  一、基于契约测试的校验点自动生成
  契约是微服务或系统交互间的一种接口协议的约定,契约测试本质是验证代码的变更是否导致契约失效。契约测试主要包含生成契约、验证契约、更新契约三个过程,其中契约测试的准确性很大程度依赖契约的验证点。校验点的自动生成是在契约已生成的前提下自动生成能保障契约满足每个consumer(消费方)需求的校验CASE,并在契约发生变更时能自动检测更新校验点。与传统接口功能测试CASE的差别是,基于契约测试的检验CASE是消费者驱动由各个consumer的需求预期组成多份测试CASE,而传统的功能接口测试CASE仅关注provider自身设计正确性,是一份功能测试CASE。
  基于契约测试的检验点自动生成主要思路是,获取不同consume的需求形成契约接口的内容,如请求参数、返回等,形成每个consume的契约描述。针对不同的契约描述进行流量录制(request、response等信息),对录制好的信息进行数据预处理识别不同consume关联字段、筛选正常返回的响应信息。按照URI、请求参数组合、response结构等做分类,完成schema的提取与转化,即实现n*consumer -> n*枚举组合的接口框架识别;随后将接口框架导入yapi,对每个组合mock数据形成独立检查点,通过ITP CASE的形式表达契约,进而用来达成重放契约中的请求,从根本上来说CASE的参数从契约定义中来,CASE的断言为契约中返回数据的json-schema。之后再通过逆向工程实现契约感知,常用方法之一是走读大量业务代码抽象代码风格,建立契约与代码间的精准关联,从而通过识别代码变更自动化感知契约的变更,一旦感知到契约的变更则同步更新mock数据,作为代替被测试程序的实际返回内容,实现检验CASE的自动更新。
  二、基于时间分片的C++内存泄露检测
  对于曲线的校验,会应用于测试活动的大部分环节中,检测内存泄露就是典型的一个场景。但是传统的内存泄露检测时间周期长,准确率低,导致内存泄露测试任务转化较低,智能的曲线校验分析可以解决上述问题,主要分为两个方向:
  首先是准确率提升。之前的算法是简单的人工经验判断,对测试人员经验要求高。对于这种场景使用DTW曲线相似度和Cart决策树的分类算法来实现判断是否存在内存泄露。DTW曲线相似度算法,主要通过点和点之间的差距和时间序列的延生和缩短,计算新旧版本的内存曲线相似度,认为曲线不相似的为有内存泄露。DTW实现简单,可以快速应用,但是也会存在一些误报警的badcase。于是继续进行优化,通过Cart决策树,将DTW曲线计算的距离作为特征输入,再结合别的特征进行训练和预估,最终预测准确率从75%->98%
  本文内容不用于商业目的,如涉及知识产权问题,请权利人联系51Testing小编(021-64471599-8017),我们将立即处理
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号