星云精准测试之用例魔方

精准测试从某个层面来讲,是赋予了测试用例真正的生命力,传统的测试用例仅仅是一些只能够依赖人去理解和分析的文本文件而已,在计算机和算法层面则没有存在意义和价值。下图是精准测试的整体架构图:

  大家首先可能会比较好奇,“用例魔方”的概念是怎么来的?测试用例魔方是在精准测试的设计、开发和商业实践中自然产生的功能集合的一个统称。当我们把精准测试的和用例分析相关的功能画成架构图形表示的时候,它自然而然地看起来就像魔方,所谓“魔”则是精准测试核心算法所赋予的超能力。
上图是星云精准测试系统的总体结构图,“测试魔方”即分布在左上角区域。大家知道精准测试的核心技术是测试用例与代码的追溯关系的建立,而在此之上就可以构建测试魔方的核心功能区。如下:
 

  所谓“方”实际上是代表测试用例的集合,每个测试用例用一个小方块标识,所有测试用例的集合用一个大方块。现在来看在精准测试架构下,“用例魔方”所能够提供的功能(对精准测试的底层技术不是很了解的话,可以预先温习下《精准测试框架白皮书》)。精准测试体系中,测试用例对应的代码逻辑都可以实现全自动的追溯和存储,因此测试用例就具备了进行深入分析的基础。在精准测试的用例魔方中,目前存在三个面(随着后续功能的增加,将增加分析的面),即回归测试用例选取、测试用例聚类分析、测试用最小化,同时辅之以智能缺陷定位技术。下面对“用例魔方”做详细的说明,选用的工具为星云精准测试平台ThreadingTest产品系列。
 
  首先介绍回归测试用例选取。从魔方视图中可以看到回归用例选取(主要选取可能影响到的重点用例)。精准测试中所谓的回归测试和自动化回归有很大的差别,我们听的比较多的自动化测试中的回归其实是把自动化用例重新运行的意思,而精准测试中的回归测试是通过内部算法自动选取新版本修改后可能影响到的测试用例。通过回归测试用例选取,解决了新版本上线该对哪些用例进行测试和重点测试的问题,这也是敏捷开发中测试所面临的最大问题。下面是回归测试用例选取的原理图:
 
 
 原理介绍:
 
 
 测试用例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.代码可视化查看位置

 
  关联源码之后可根据代码可视化定位第十二块位置,根据实际分析可得第十二块确实为缺陷语句,分析过程见第一步。
  (大家如果感兴趣可以到星云测试的官网上www.teststars.cc 试用。)
  精准测试的精髓在于通过专用测试软件实现表层功能和底层代码的关联,并且获取成本很低。它在测试用例执行的过程中,通过软件示波器以透明方式自动获取两者的关联关系。通过精准测试系统,使针对用例的深入分析“用例魔方”成为可能。目前精准测试的核心用例分析算法正在持续增强,“用例魔方”的软件研发辅助分析功能,为软件测试的智能化、专业化成长,带来曙光和方向。

原文地址:http://blog.51cto.com/13883507/2173416

时间: 2024-07-31 11:12:06

星云精准测试之用例魔方的相关文章

星云精准测试对安卓底层驱动代码的测试案例分析

Android原生底层驱动应用面极广,但一直没有很好的办法进行质量追踪.本文借助星云精准测试的高可靠性的测试技术手段,针对Android原生底层驱动进行分析.插桩.编译.采集数据.数据分析等,逐步讲解精准测试是如何实现android原生底层驱动的对接. 在本文中,我们可以清晰地查看到如何进行技术对接的每一步,比如如何使用星云精准测试进行代码插桩.实现测试用例与采集底层驱动运行代码的数据追溯.对最终采集的数据进行一系列分析等. 一.安卓源码精准测试流程概述 经分析android源码的编译主要依靠A

星云精准测试有力提升金融复杂系统的测试能效

随着国内大数据.云计算.人工智能等新技术的发展,银行业的前中后台正面临着全面改造,金融科技是业务转型发展的一个核心发力点.金融行业信息系统集中度高.规模庞大.多系统之间关联性强.业务复杂.需求变化快,另外各种新旧系统错综交互,软件质量控制难度异常复杂.通过技术手段精准地追溯每一个数据路线,有效实现信息系统的高可靠性和易维护性,是金融业界共同的目标. 一.传统测试的局限  目前,在大部分金融机构中,主流的功能测试方法是黑盒测试辅之以一定量的自动化测试.由于自动化测试用例的维护问题较多,黑盒手工(功

精准测试之项目案例实战大剖析

一.        前言测试是保证产品质量的关键环节,不论是从开发人员开始的单元测试,集成测试,到测试人员的系统测试,产品的需求测试,客户的验收测试,都是为了保证产品能够更健壮的在市场上服务于用户,但是测试的整个工作和过程并不像开发的工作一样有一个产品的产出,所以更大程度上增加了对测试工作质量的考核,也就造成了对产品测试完成后无法有一个可靠的依据去判断是否能够保证产品在市场中稳定运行,测试过程中也必然存在着在各种各样的问题和困难.在传统的测试中,测试后期往往会出现如下几个问题:1.       

精准测试白皮书-2019最新版

精准测试白皮书 精准测试诞生的背景 现代社会是建立在各种以计算机为基石的软件技术基础之上的.随着日新月异的需求变化,软件系统越来越复杂.很多人觉得软件开发才是重要环节,但实际上,无法对大型软件进行有效的质量把控,就无法真正构建与维护大型软件.--系统中任何一个错误都可能导致整个系统的崩溃,造成无法弥补的损失,系统的任何一个微小的修改都可能引入新的缺陷导致维护困难重重. 然而,如何从极端庞大复杂的系统中迅速及时地找到故障所在,却是行业的一大难点.目前国内软件测试基本处于两种状态:一是绝大多数企业采

为自动化测试装上精准测试的“翅膀

现代的专业软件测试中心,随着项目的迭代,通常针对每个系统构建了大量的自动化测试用例集,而启动一次全量的自动化测试以CI级触发,使之大比率通过,非常困难.测试工程师们常常需要投入很高的成本,把大量精力花在自动化用例失败排查上面,然而发现有效BUG的概率很低.在反复排查无果.心神俱疲的情况下,几乎对自动化产生绝望之心,视之为鸡肋,用之无用,弃之可惜,让测试中心极为头疼. 如何让自动化用例发挥它们应有的效用,让QA工作不那么沉重呢?星云测试针对这一难题,进行了精准测试与自动化测试无缝对接的技术方案研发

JavaScript编写了一个计时器

初学JavaScript,用JavaScript编写了一个计时器. 设计思想: 1.借助于Date()对象,来不断获取时间点: 2.然后用两次时间点的毫秒数相减,算出时间差: 3.累加时间差,这样就能把计时精确. ps: 没在网上看到有这种方法,一般都是用的setinterval, 编程语言自带的延时,时间控制都有比较大的误差,所以用系统时间相减的方法控制精准. 本例互相交流用,并迫切希望得到的读者的想法及建议. <!DOCTYPE html> <html> <head>

不想知道吗?你的个人数据是如何被企业商业化的

原作者:不愿透露姓名的数据圈资深从业者天降财神. 排版:同样不愿透露姓名的吴妹妹. 前言 关于数据爬虫.数据存储.数据记录等获得各类数据源的方法相信你都知道了. 数据圈不能说的秘密之"你的个人数据源如何在机构间流转,最终应用于各个商业场景",本文经作者天降财神耗时一年完成,首次独家揭秘. 备注:本文提及的数据均指群体数据,不涉及个人真实数据. 以下是原文: 正文 我在2011年开始负责运营商大数据的引入项目,这些年出差见过的客户,包括XX电信.XX电信.XX电信.XX移动.XX联通--

CSS部分书写格式解析

CSS(Cascading Style Sheets):是一种使用字体.颜色等格式化内容的外观的表示型语言,是一种用来表示HTML文件样式的语言.   CSS引用格式: 写在<head lang="en"> </head>以内,在html文档中,该代码可用于外联CSS联接. 例: link rel="stylesheet" href="class1.css 内部(内联)样式表:写在<head lang="en&quo

产品那点事 【3】-中台科普

目录: 1.关于中台的名言 2.中台起源 3.中台定义 4.中台类型 5.中台能力 6.中台本质 7.中台优势 8.中台动态 9.排头兵的中台案例 10.建设中台的两大原因 11.中台究竟能解决的问题 12.中台解决的痛点 13.中台对中小型公司的意义 14.做中台两个关键点 15.中台落地 16.中台完整的体系 17.中台技术本质 18.中台技术架构 19.遥望未来10年—AI中台 20.业务中台 21.业务中台&数据中台 22.业务中台&大数据 23.彩蛋 关键词:   业务中台/ 共