精准测试从某个层面来说,是赋予了测试用例真正的生命力,传统的测试用例仅仅是一些只可以依赖人去理解和分析的文本文件而已,在计算机和算法层面则没有存在乎义和价值。下图是精准测试的总体架构图: 算法
你们首先可能会比较好奇,“用例魔方”的概念是怎么来的?测试用例魔方是在精准测试的设计、开发和商业实践中天然产生的功能集合的一个统称。当咱们把精准测试的和用例分析相关的功能画成架构图形表示的时候,它天然而然地看起来就像魔方,所谓“魔”则是精准测试核心算法所赋予的超能力。架构
上图是星云精准测试系统的整体结构图,“测试魔方”即分布在左上角区域。你们知道精准测试的核心技术是测试用例与代码的追溯关系的创建,而在此之上就能够构建测试魔方的核心功能区。以下: 框架
所谓“方”其实是表明测试用例的集合,每一个测试用例用一个小方块标识,全部测试用例的集合用一个大方块。如今来看在精准测试架构下,“用例魔方”所可以提供的功能(对精准测试的底层技术不是很了解的话,能够预先温习下《精准测试框架白皮书》)。精准测试体系中,测试用例对应的代码逻辑均可以实现全自动的追溯和存储,所以测试用例就具有了进行深刻分析的基础。在精准测试的用例魔方中,目前存在三个面(随着后续功能的增长,将增长分析的面),即回归测试用例选取、测试用例聚类分析、测试用最小化,同时辅之以智能缺陷定位技术。下面对“用例魔方”作详细的说明,选用的工具为星云精准测试平台ThreadingTest产品系列。函数
首先介绍回归测试用例选取。从魔方视图中能够看到回归用例选取(主要选取可能影响到的重点用例)。精准测试中所谓的回归测试和自动化回归有很大的差异,咱们听的比较多的自动化测试中的回归实际上是把自动化用例从新运行的意思,而精准测试中的回归测试是经过内部算法自动选取新版本修改后可能影响到的测试用例。经过回归测试用例选取,解决了新版本上线该对哪些用例进行测试和重点测试的问题,这也是敏捷开发中测试所面临的最大问题。下面是回归测试用例选取的原理图:工具
原理介绍:测试
测试用例A与测试用例B为在版本A中进行测试的用例,其绿圈中A一、A二、A三、B2…等为其测试用例所对应的运行中采集的函数信息。设计
在版本迭代过程当中,版本B也对其测试用例A进行了测试,并添加了测试用例C,精准测试采集其对应的函数信息。3d
当版本C进行迭代发布时,精准测试根据测试用例A、B、C最后运行的版本所对应的函数信息与版本C的版本函数信息进行比较,根据变化差别进行回归优先级排序。code
① 测试用例A最后运行在版本B中,对应的函数信息为A一、A二、B一、A3,对比版本C中的函数无代码变化,计算回归优先级值为0。 blog
② 测试用例B由于在版本B中未运行,最后运行的版本为A,版本A的测试数据B一、B二、B三、C3和版本C中的函数比对,得出函数C3的代码有变化,计算回归优先级值为1。
③ 测试用例C最后运行在B,对应的函数信息为C一、C二、C三、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个测试用例test一、test二、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.针对test六、test7提交缺陷,代表test6与test7输出与预期不符
4.打开缺陷分析界面进行分析
5.可疑度算法包括以下三种,可自主选择
其中aep表示经过且覆盖到该块的测试用例的个数、anp表示经过且未覆盖到该块的测试用例的个数、aef表示未经过且覆盖到该块的测试用例的个数、anf表示未经过且覆盖到该块的测试用例的个数。结果表示该块的可疑度。
6.代码可视化查看位置
关联源码以后可根据代码可视化定位第十二块位置,根据实际分析可得第十二块确实为缺陷语句,分析过程见第一步。
(你们若是感兴趣能够到星云测试的官网上www.teststars.cc 试用。) 精准测试的精髓在于经过专用测试软件实现表层功能和底层代码的关联,而且获取成本很低。它在测试用例执行的过程当中,经过软件示波器以透明方式自动获取二者的关联关系。经过精准测试系统,使针对用例的深刻分析“用例魔方”成为可能。目前精准测试的核心用例分析算法正在持续加强,“用例魔方”的软件研发辅助分析功能,为软件测试的智能化、专业化成长,带来曙光和方向。