星云精准测试之用例魔方

发表于:2018-9-06 09:58

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

 作者:顾翔    来源:51Testing软件测试网原创

分享:
  精准测试从某个层面来讲赋予了测试用例真正的生命力,传统的测试用例仅仅是一些只能够依赖人去理解和分析的文本文件而已,在计算机和算法层面计划没有存在意义和价值。下图是精准测试的整体架构图:
  大家可能首先会比较好奇,测试魔方的概念是怎么来的,测试用例魔方是在精准测试的设计、开发和商业实践中自然产生的功能集合的一个统称,因为当把精准测试的和用例分析相关的功能画成架构图形表示的时候,它自然就看起来像魔方,所谓"魔"则是精准测试核心算法所赋予的。
  上图是星云精准测试系统的总体结构图,所说的魔方分布于左上角区域。大家知道精准测试的核心技术是测试用例与代码的追溯关系的建立,而在此之上就可以构建测试魔方的核心功能区。
  所谓"方"实际上是代表测试用例的集合,每个测试用例用一个小方块标识,而所有测试用例的集合用一个大方块,那现在来看下精准测试架构下测试用例魔方所能够提供的功能,对精准测试的底层技术不是很了解的话可以预先温习下《精准测试框架白皮书》。精准测试体系下,测试用例对应的代码逻辑都可以实现全自动的追溯和存储,那么测试用例其实就具备了深入进行分析的基础。在精准测试性能测试魔方中,目前存在三个面(随着后续功能的增加,将增加分析的面),即回归测试用例选取,测试用例聚类分析以及测试用最小化,同时辅之以智能的缺陷定位技术。下面对用例魔方做详细的说明。
 
  首先介绍回归测试用例选取。从魔方视图中可以看到回归用例选取意在用例集中选取部分用例进行测试。精准测试中所谓的回归测试其实和自动化的回归有很大的差别,我们听的比较多的自动化测试中的回归其实是把自动化用例重新运行的意思,而精准测试中的回归测试意思是通过算法自动选取新版本修改可能影响到的测试用例。通过回归测试用例选取,解决了新版本上线该对那些用例进行测试和重点测试的问题,这其实是再敏捷开发中测试所面临的最大问题。下面是回归测试用例选取的原理图:
  原理介绍:
  测试用例A与测试用例B为在版本A中进行测试的用例,其绿圈中A1、A2、A3、B2…等为其测试用例所对应的运行中采集的函数信息。
  当版本迭代过程中,版本B也对其测试用例A进行了测试,并添加了测试用例C,精准测试采集其对应的函数信息。
  当版本C进行迭代发布时,精准测试根据测试用例A、B、C最后运行的版本所对应的函数信息与版本C的版本函数信息进行比较,根据变化差异进行回归优先级排序。
  ①测试用例A最后运行在版本B中,对应的函数信息为A1、A2、B1、A3,对比版本C中的函数无代码变化,计算回归优先级值为0。
  ②测试用例B因为在版本B中未运行,最后运行的版本为A,版本A的测试数据B1、B2、B3、C3和版本C中的函数比对,得出函数C3的代码有变化,计算回归优先级值为1。
  ③测试用例C最后运行在B,对应的函数信息为C1、C2、C3、A3,和版本C中的函数比对,得出函数C3的代码有变化,函数C2进行了删除,计算回归优先级值为3。
  ④结果进行回归优先级排序,得出测试用例C回归优先级最高优先值为3>测试用例B回归优先值为1>测试用例A,回归优先值0,不需要回归。
  当新版本上线后,精准测试系统会自动给出本次发布波及到的测试用例列表以及收到波及的程度。如下图:
  魔方中的测试用例聚类分析,是测试用例的聚类分析,通常测试用例的分类都是人工根据功能组织而硬性进行归类的。在精准测试体系中,由于测试用例都包含有对应的内部代码的执行逻辑,而执行路径直接可以通过代码块或者函数进行举例计算。例如一个程序总共有10个函数。
  用例的聚类结果具有非常实用的价值,体现在一下几点:
  1.通过用例聚类结果,可以从管理端审核测试执行的正确性,由于测试一般由人工执行,因此传统流程下想确认测试用例是否本身执行有错误,或者是否按照预先设定的要求执行了,是非常困难的,这也是测试管理的成本一直很高的一个重要原因。而通过对用例的聚类结果进行分析,假设两个功能迥异的测试用例,本不应该分到一起的用例被分到了一起,那么管理者容易识别出这里面存在测试用例的执行错误。测试一般来讲属于产品发布的最后一环,如果测试发生错误在传统模式下就几乎很大概率直接被忽略并引发生产环境的。
  2.通过测试用例聚类结果,可以发现缺陷分布的密集区域,因为聚类的依据是用例执行对应的代码的路径差异信息,因此聚类结果充分真实的体现了用例之间的空间感 ,因此结果非常有意义,例如可以用来发现权缺陷的密集分布区域。缺陷的分布一般是有规律的,通常会符合功能相近的功能区域分布会成一定的规律,功能相近的用例如果有出现错误那么相近用例出现错误的概率也更大。那么当时间不充足的情况下,可以依据聚类结果,每个用例聚类簇随机选几个,如果没有bug,就可以放弃对簇内其他用力的考察,如果发现了缺陷,那么其它簇内的用例也需要重点考察。
  在企业大量应用自动化测试的场景,经常随着长期的积累,会产生大量的逻辑重复的测试用例,通过用例魔方的测试用例集最小化算法,可以将重复或者存在包含关系的用例从用例集中剔除出去。原理非常简单,假设两个用例,在代码覆盖上存在完全包含关系,那么被包含的用例就可以从用例集中剔除。算法所依据的数据依然是测试用例与代码的追溯关系技术数据。
  用例魔方中另外一个精彩的功能是智能的缺陷定位技术,在星云精准测试中提供了3种计算公式。
  通过智能缺陷定位,测试工程师仅需要标记用例从功能角度的执行状态(是否存在缺陷),在结合精测试体系下用例自动记录的对应的程序执行的代码的频谱,就可以对缺陷进行到代码级的精准定位。
  1.源代码
  简单分析第15行代码,当第十行y<z成立且第十二行x<y不成立且第十四行x<z成立时即得y<z且x>=y且x<z.此时可得y<=x<z,中间数为x,所以此处正确语句应为m=x。
  2.创建7个测试用例test1、test2、test3………..test7并进行测试
  ①test1输入为3 3 5输出为3,预期输出为3,符合预期,此用例记为通过
  ②test2输入为1 2 3输出为2,预期输出为2,符合预期,此用例记为通过
  ③test3输入为3 2 1输出为2,预期输出为2,符合预期,此用例记为通过
  ④test4输入为5 5 5输出为5,预期输出为5,符合预期,此用例记为通过
  ⑤test5输入为5 3 4输出为4,预期输出为4,符合预期,此用例记为通过
  ⑥test6输入为2 1 3输出为1,预期输出为2,不符合预期,此用例记为未通过
  ⑦test7输入为3 2 4输出为2,预期输出为3,不符合预期,此用例记为未通过
  3.针对test6、test7提交缺陷,表明test6与test7输出与预期不符
  4.打开缺陷分析界面进行分析
  5.可疑度算法包括如下三种,可自主选择
  其中aep表示通过且覆盖到该块的测试用例的个数、
  anp表示通过且未覆盖到该块的测试用例的个数、aef表示未通过且覆盖到该块的测试用例的个数、anf表示未通过且覆盖到该块的测试用例的个数。结果表示该块的可疑度。
  6.代码可视化查看位置
  关联源码之后可根据代码可视化定位第十二块位置,根据实际分析可得第十二块确实为缺陷语句,分析过程见第一步。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

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

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

沪ICP备05003035号

沪公网安备 31010102002173号