• 15个问答为专业测试人员揭开“精准测试”的面纱


    1.到底什么是精准测试。和传统测试的区别和联系。

      相对于普通测试,精准测试是在传统测试过程中,通过技术手段对被测程序进行360度全景测试,将测试过程可视化、数字化、标准化,从而达到被测程序上线稳定、无风险、维护成本低等优势。

      和传统测试比起来,精准测试需要通过程序自动的生成海量的、不能被篡改的原生态测试数据,通过这些数据的汇集、分析对测试进行带有智能性的指导,避免了传统测试过程中人力记录的时间成本与真实性的问题。

      精准测试和传统测试的联系在于,整个测试过程中实际操作完全基于传统测试,并通过技术手段在传统的测试过程中自动产生原生态的测试数据。

    我的理解,所谓精准测试就是在传统测试基础上进行智能化的分析处理,可视化的跟踪查看,更多是采用数据方式展现你这个项目进度情况等等,举个例子一般大型项目都会有项目经理进行跟踪,开发情况提测时间,测试进度,回归测试,上线情况等,这一系列的处理流程都是人工在excel表中记录的,透明度达不到特别的清晰,很可能某一个环节出现问题就会导致整个链条的死循环,更多时间需要拉上相关负责人开会push,建立各种讨论组微信群进行讨论分析解决,而精准测试就是把这一系列的流程通过第三方软件呈现出来,提早暴漏出来风险,催促相关人员解决,更有效的沟通,说白了就是以前大家开例会汇报下工作情况,每个人只知道自己的,而不知道别人的,通过第三方软件可以有效地查看到别人情况,特别对于领导而言是极大地便利可以把控项目节奏和控制风险的一种方法。

     

    2.精准测试技术对于黑盒手工测试的效率提升。

    肯定很多人想问,精准测试更精准、质量越高是否需要花费更大量的时间,在现今互联网时代,版本高速迭代的过程中,导致了大量黑盒手工测试的诞生,这样是否与精准测试提出的质量保证产生矛盾,我们通过下面这样图进行分析:

    传统的黑盒测试在70%前的阶段,查找BUG是非常迅速的,但之后缺陷的发现效率会急剧的下降。

      精准测试是结合传统的黑盒测试与白盒测试相结合的模式,它可以在黑盒测试过程中,通过程序自动产生白盒级别的运行逻辑数据,根据可视化出来的不足点和漏洞点,引导开发和测试有针对性的高效的补充用例。

    我的理解,举个例子当测试接到需求时候要进行需求分析拆分功能点,书写相关测试用例,尽可能想到各种异常用例和尽量达到高的产品测试覆盖率,前期产品不稳定会有很多bug,但是后期会很难发现更多的问题,产品会进入一个平稳期,这个时候可能就会有很多漏洞的产生,如果上线之后必然会有补丁的发布等等,线上问题的解决,甚至一些高风险问题暴露出来,很难做到覆盖率跟漏洞的分析,但是通过第三方工具就可以查看到那些模块覆盖率低并且具体问题具体分析做到万无一失。如:函数ID 1880 isrefreshview scroll通过代码可视化和开发交流得知,此模块为优惠卷拉升加载功能,但是此功能需要优惠卷超过一定量后才会出现,但是实际测试中,测试人员只得到了一张优惠卷的账号,在遍历中自然无法覆盖到该功能。

    3.精准测试对于测试行业的影响是什么?对普通测试人员的影响。

      精准测试对于测试行业来说是一项重大的突破,用原生态的测试数据来保证被测程序的质量,从而提高程序的稳定性、可维护性。

      对普通测试人员来说,精准测试相当于一个“透明”的测试,在测试中后期,精准测试能大大提高普通测试人员的测试质量以及把控测试方向,黑盒手工测试也能够容易的突破职位的瓶颈。

    4.精准测试为什么可以促进测试和开发的互动,以及融洽二者的关系。

      精准测试在测试过程中会产生大量的原生态测试数据,,而精准测试在测试过程中能够直接将测试人员的功能执行定位到代码的运行逻辑,使得开发人员很容易的在代码中定位到测试过中产生的问题,这样的使得开发和测试有了一层交流的通道从而达到互动。

    回归测试用例自动选取

    传统:在回归中因开发回归范围大或避免测试遗漏回归范围,往往在回归过程中要求测试进行全部回归,但是又因时间紧等因素导致测试不全,上线后测试心理没底。

    精准:通过回归测试用例的自动选取,提取需要回归的版本的测试用例以及该版本之前所有版本的测试用例进行查询,获取每条测试用例最后运行的版本进行数据提取,并通过测试用例、代码、模块的追溯关联技术,与要回归的版本进行比对。分析出开发改动所影响最大的回归测试用例。

    在测试时间不充足的情况,可以通过该功能和开发人员一起对其测试用例进行评估,圈定测试用例回归的范围,从而降低测试回归的成本。

     

    5.精准测试对于覆盖率技术的全新诠释。

      对于白盒测试有深入研究的技术人员可能会问到,精准测试还是很多用到了覆盖率技术,这些本来不就是有开源的工具吗?下面我们来比较一下:

      开源的覆盖率工具:

      1、 将所有的测试产生的覆盖率混在一起,不具备快速定位缺陷与辅助查错,分析测试效率以及管理特性等等。

      2、 单机运行,一个团队下多人测试的结果无法有效的整合,也不能按照日期累计

      3、 无法达到MC/DC这些更高要求的覆盖率计算。

      4、 无法提供版本变更后的覆盖率的累积,无法适应高速迭代的应用场景。

      5、最大的问题在于普通开源产品必须面对代码进行覆盖率的统计,而绝大部分场合测试工程师是不具备拿到代码的权限的。

      精准测试:

      1、 覆盖率的分析和计算精确到每条测试用例针对的函数,每个代码块,每行代码

      2、 多人异地测试,数据整合计算该版本的覆盖率,按日增长趋势的分析

      3、 把覆盖率划分不同的等级,最高支持MC/DC条件组合覆盖率分析计算,可自定义要求

      4、 版本迭代,多版本覆盖率分析对比,适应高速迭代的应用场景

      5、 编译时需要代码(可隔离编译保证源码安全性),后期整个测试和覆盖率分析过程无需代码

    6. 精准测试和手工、自动化测试的关系,以及各自对测试行业的导向。

      精准测试因为不改变原有的测试流程,这使得它在手工或者自动化测试中都能使用,例如:精准测试产生的数字化测试数据对整个自动化测试过程可以进行深入跟踪和分析,精准测试的分析降低了自动化测试人为的干预度,使得自动化测试更加智能。

      未来类似于精准测试技术的测试分析系统会真正引领测试走出打开新的局面。因为测试分析系统是属于测试的专业范畴,更加适合测试人员的专业特性。而自动化测试,天生的脚本开发特性以及复杂的控制特性,对绝大部分普通测试工程师来讲,这方面处于明显的劣势

    笔者大胆猜想一下,未来测试行业走向肯定是更加智能化,偏向AI方面,所有的测试技术都会以更加智能化的方式体现,换句话说整个产品的生命周期是可视化的,通过UI的方式呈现出来,比如测试覆盖率这些比较虚的东西都可以通过实打实的数据展示出来,excel这种记事方法,单纯的发报告邮件方法会被淘汰,整个产品从生到上线以及后续的运行情况都透过精准测试这一手段展示出来,而测试需要做的就是在此基础之上进行好工作,而工作的体现就是透过精准更加有效精准的展现。

    7.精准测试强调的测试数据的原生性的含义以及对测试组织形式的影响

      原生性也就代表了公正性、真实性,精准测试提倡原生性的目的在于通过原生的数字化信息让测试这个行业的结果更加公正、真实、可信。避免人为原因造成的验收盲区。

      国内的测试外包几乎100%都是驻场的,驻场外包会产生很多不必要的开销。而精准测试虽然是技术层面的概念,但因为精准测试技术采用的是非人工录入数据的原生态数据源,又有实时的报表计算和测试跟踪等功能,因此精准测试天生也是一个具有互联网基因的技术,它存在推动软件测试互联网化潜能。

    8.精准测试在软件质量分析领域的核心特性。

      精准测试的核心特性有:测试示波器、崩溃捕获、路径分析、全方位可视化的测试每一步、实时测试数据接收、测试用例和代码的双向关联与追溯、全面记录测试过程中的测试设备和测试人员以及测试用例与代码等多者之间的关联,并通过丰富的报表和技术债务与风险指标进行展示

      精准测试将测试过程所获得数据进行了指标化,测试后即会得到关于覆盖率、复杂度、代码重复率、测试漏洞计算、崩溃分析、测试充分度分析、测试贡献度分析、技术债务计算、设备和缺陷的关联度分析等精准的质量分析报告来分析测试和项目质量。

    9.精准测试在设计上对于普通手工测试工程师的考虑。

      精准测试在设计上对于普通手工测试工程师进行了优先考虑,在完全不改变测试流程的情况下产生成原生态的测试数据,精准测试为了降低普通手工测试工程师的数据分析难度,采用覆盖率计算可视化,控制流程图,双向追溯等技术,以图型的展示(而不是一个数字的表达)方式让普通手工测试理解或寻求帮助。

    10.精准测试对于代码保全和软件工程方面的重要贡献。

      精准测试在实际运行过程中会记录测试每一步足迹,这也间接的保全了功能的实现逻辑,精准测试通过技术手段把测试用例和代码进行了对接,这使得开发来人在改动代码的时候可以通过测试人员的测试用例知晓其改动的印象范围,以便于做到一致性修改,并且更换新的开发人员也可以通过这个功能来了解被测程序的代码运行逻辑,这样有利于开发理解迅速掌握程序的内部结构。

    11. 没有源代码能否进行精准测试。

      传统白盒测试不能进入工业界的主要原因是因为学习难度以及对代码的安全度,精准测试为了保证源码安全性,采用了对代码进行插装的技术,插桩后打包的应用给测试人员,完全杜绝了测试人员或用户触碰代码的机会,在测试分析过程中如需要源码,只需在本地有源码的环境中与测试数据所记录的数据库匹配,就能实现无缝对接。

      精准测试这项技术更完美的适用于车联网这类的行业。

      测试人员甚至可以边在行驶过程中操作智能驾驶系统的同时,通过精准测试的软件示波器即时地获得测试数据和测试结果。测试人员在移动的车上进行测试后,将一整天获得的测试数据拿到软件平台中进行分析。测试全程无法接触到源码,保证源码安全。

    12.如何理解精准测试里面的技术债务分析。

      一款程序的代码的编写、代码的复杂度、以及开发的人员、测试人员后期的维护等都会对程序产生技术债务,在精准测试里面,通过各项指标对软件进行了债务分析,并进行计算,债务越少自然表示该程序的测试越充分、稳定性更好、可维护性佳,且通过该值也反映了后期对该程序所需要的投入以及团队的能力进行了预判。精准测试会引导用户如何去偿还债务,而这个偿还债务的过程即是软件质量接近完美的过程。

    其实就是产品后期的可维护性,需要一个人每天看看报告,不需要大量人力去修复后期的bug

    13.精准测试未来的发展方向?

      精准测试未来的发展方向主要是针对被测程序的质量验收与建立良好的测试体系,对于现今互联网企业的崛起,版本高速迭代与程序的质量都影响着互联网企业的发展,精准测试在这方面凭借着自身的技术优势,在不为企业增加多余的负担的情况下逐步的提升程序质量以及建立一套完善的测试体系。

      14.精准测试对于软件交付、软件众测的意义。

      在互联网发展的今天,软件定制已经成了行业热门,但是如何让软件达到甲方要求的预期呢?通过尾款的方式进行保障已经完全不够,采用外包形式需要花费大量的人力管理和其它开支成本。精准测试的原生态数据恰好解决了这些顾虑,通过技术手段采用分布式互联网管理的测试方式,甲方只需通过精准测试的原生不得篡改的数据平台就能观察到整个程序的测试质量,让甲方在验收的同时多了一份信心。

      对于软件众测来说,大量的测试人力,且个人能力高地差距较大,虽然能在某些方面帮甲方解决的软件试用问题,但是在维护方面又如何呢?各种BUG的描述、问题的表达、以及测试的范围度,这些都无法进行考量与统一。精准测试模式恰巧能解决这类问题,它通过与众测进行结合,通过不同的测试人员运行的测试轨迹,加以合并计算出完整的测试覆盖率范围,也能直接表现出程序模块的热门度,更大大解决测试人员因能力差异而提交BUG问题反馈,这样配合让甲方在众包人力的测试过程中,得到了一份原生态的数字化报告。

    15.精准测试如何降低企业立测试团队的难度和成本。

      精准测试对于企业来说通过测试人员的管理、中后期的测试效率以及不依赖个人能力等特点,大大降低了企业测试团队成本,精准测试通过一系列技术手段在不改变原有的测试流程大幅度降低测试人员要求,并在中后期的测试效率上给予大幅度的帮助提高质量,这使得企业成本的核心公式计算中发生了转变。精准测试为企业带来的是明确的、数字化的对于产品质量的信心,而并不是对于团队的模糊的基于能力的、经验的判断。

  • 相关阅读:
    写给自己的2020年总结
    docker镜像与docker容器
    docker安装&docker简介
    windows 安装linux子系统
    typora设置图床
    让Mysql插入中文
    pip 换源
    Unity中如何将一个场景(Scene)的Light Settings复制给另一个场景
    Windows API开发
    【C#】判断字符串中是否包含指定字符串,contains与indexOf方法效率问题
  • 原文地址:https://www.cnblogs.com/tom-gao/p/8482708.html
Copyright © 2020-2023  润新知