精准测试技术十年发展漫谈
精准测试技术十年发展漫谈
目 录
一、 背景
二、 精准测试的定义
三、 精准测试技术发展
四、 精准测试的专利技术
五、 精准测试的一分一合
六、 精准测试体系
七、 商用精准测试的无损技术
八、 商用精准和开源精准的区别
九、 精准测试成熟度五级划分
十、 精准测试的效能提升
十一、商用精准测试的规划与发展
一、 背景
精准测试技术,是这几年比较热的一个方向。从2012年这个体系开始诞生,到现在整整历经了10年的时间。中国从国外引进了很多技术,火与不火其实在国外已经决定了。本土成长起来的精准测试路线独树一帜,它不是从国外引入,是在中国的大环境下慢慢发展起来的。从寂寂无名,到软件质量技术从业者的热情被一点点的调动起来,再到被认可及至推广,中间翻越过万重山。本文作者星云测试平台设计师、创始合伙人赵明先生站在另一个维度,以星云为例侧重讲了精准测试技术的起源发展、商业内核以及行业的展望。
二、 精准测试的定义
精准测试一句话概括就是:测试用例和代码之间的追溯,这是它最本质的东西。精准测试的本质决定了它抓住了测试的一个核心要点。
大家知道,软件主要有两个方面:一个是我们看到的功能,即从界面上看到输入输出(通常我们测试是基于这个);另外还有背后的代码。在功能测试整体动态运行的时候,功能和代码必然存在着追溯关系。这种相互追溯,很像物理界的量子纠缠理论。就是说,软件代码运行逻辑和功能输出,是两个也同时是一个整体,像量子纠缠一样。当把两个量子视为一个整体,只观测任何一个都观测不全面。这个也就是我们黑盒测试以前遇到的问题,它存在很多隐性问题,因为它没办法观察计算机最本质的东西--代码的同步变动。精准测试就把这两个全部观测、捕捉并回放出来了。
最早星云在2014年的国际软件测试大会上首先发布精准测试的时候,就叫穿线测试,英文名字叫Threading Test,并没有直译成 Accurate test,现在看还是Threading Test最契合。首先,精准测试建立起了用例和代码的关系,相当于把黑盒和白盒关联起来,做黑盒测试时获取到白盒数据。即完成一个测试逻辑,代码上的逻辑立马同步生成,准确地把开发测试关联起来,这里使用了Threading的穿线的含义。另外一个层面,精准测试最本质就是线程覆盖测试。它跟白盒最大的区别是覆盖率是线程级的,也就是说我们要追溯到用例这个级别。比如一个系统可能很多用例同时跑,最终用例级的数据就是在线程里面。我们拿到线程级的数据,就能拿到测试用例级别的这种覆盖率。这里体现了Threading线程的含义。所以我们整体英文名字叫Threading Test,这是我们中国自己命名的。
三、 精准测试技术发展
精准测试是从2012年开始发展的。最开始的时候(星云)团队建立一些基础理念,主要建立用例和代码相互追溯的基本技术方向和框架。
2013年,星云开始做第一个源码插装内核,即基于JAVA的SASI(源码插装)。
2014年,用例和代码追溯、软件示波器、回归用例自动选取基本已经成型。这年有个重大的事项:在 iSQE大会上以“穿线测试”第一次发布产品。当时引起了行业上很大的关注。
2015年,开始做C++的SASI(源码插装)相当于向国际最顶级的白盒测试工具进行挑战并闯关突破了这个技术领域。
2016年,做出的产品开始正式商用,开始有用户采购了。
2017年,向白盒测试最顶级的覆盖率MC/DC(100%覆盖率)去挺进并获得成功。意味着在航空航天、智能工业等领域,中国开始有能力完成自己的高端白盒工具的替代。
2018年,在分布式系统的追溯上,星云全系统的用户标识和流量隔离技术诞生,这也是精准测试比较核心的技术。
2019年,开始做SABI 1.0(SouceCode Analyzer ByteCode Intrumentation),插装方式发生重大变革,跟我们见到的常规架构区别很大。能够做到无损采集与分析数据,可靠性很高,用户发版流程也很简单。
2020年,开始做整体轮次级项目级累计覆盖率,能够实现全自动的实时的跨版本的数据合并,解决覆盖率技术商用的重要障碍,以及嵌入系统的支持。
2021年,开始做SABI 2.0及高可用。
2022年,突破了更多关键的领域,比如linux kernel、DSP芯片、安卓的Framework操作系统等,因为以上的数据采集方式非常特殊,完成非常不容易。
可以说任何一项高端技术,都不能脱离一个渐进的过程,唯有量变才能真正实现质变。虽然充满了艰辛,但从学术理论到技术落地、到各大企业实际场景接连不断的好评,宣布了中国在这个领域中率先取得了令人惊喜的成果,不再受制于人。
四、 精准测试的专利技术
(星云)精准测试建立了一套非常完整的国家级专利簇保护机制。下面为大家讲解一下这些专利技术的特点。
一种基于测试用例与源码双向追溯的测试装置及方法, 是星云精准测试最关键的发明专利,2014年申请2017年正式授权。这个专利当时引起了很大的争议,专利局认为这种东西非常底层,就像苹果因为重力而落地,通过水的势能来发电一样,专利局一通认为这个东西太常理化了。不过就像通过水的落差发电一样,需要有人能够进行系统的理论论证探索并且进行工业化的应用,才能真正的在转变为生产力,而用例和代码的追溯也正是通过工业级精准测试的应用才开始全面受到重视并开始大面的应用。
2018年获得授权的国家发明专利“覆盖率可视化”(行业俗称代码染色)、回归测试用例选取等,都是在精准测试体系中比较关键的专利。比如 “回归测试用例选取”,在代码变化的情况下,到底应该选哪些用例进行回归?(星云)的这项目技术可以精准的挑出这些用例(都是基于代码和用例的关系),在新版本发布以后,看它代码路径变化的问题,整体回归效率提高3-5倍以上,并且大幅度降低因为回归时间有限而引起的质量风险。
其它的专利技术是在整个商用过程中,陆续发明的。比如:分布式系统或者集中式系统,很多人同时访问的场景。就是在分布式系统上,看一个用例在各个系统都怎么跑的,而且并发跑的时候不能受到干扰。那么就要有用户标签技术,然后做流量隔离。这个在分布式系统下也是一个重要的发明专利。就是指我们在分布式系统下,每个测试用例可能跑到每个分布系统里面,往哪个版本存?我们做了一套自动处理机制,这也是很关键的一套逻辑,属于精准测试的基础性专利。
一个完整的优秀软件体系,基本来说它需要有8项发明专利进行全方位的保护。精准测试是中国拥有完全知识产权的理论体系。现在我们(星云)已经批准和申请超过16个,后续我们还在持续做全面的知识产权覆盖。
五、 精准测试的一分一合
对于精准测试不算太了解的人可能认为精准测试就是单纯的覆盖率工具或者白盒工具在中国改了个名字,但还是有重大区别。简单理解,它跟传统覆盖率有一个一分一合的变化。
“一分”指的是:精准测试不仅仅去统计(大范围的整体)代码覆盖率,而是要精确到用例级。比如回归用例选取、测试用例聚类分析、智能缺陷定位、开发测试的协同,所有的数据都可关联到用例级,精准测试的作用和范围就变得很大。大家看上面的雷达对比图,相当于给传统白盒测试做了一个全方位的包围。用例级就能有高精准度的测试分析,传统的白盒并没有这种测试分析。
“一合”指的是:我们这个覆盖率已经不再是单元级的。传统白盒测试主要针对单元级,工具很贵,号称壁垒极高无法突破,但实际上它的难度还不至于高不可攀。软件在单元情况下,一个单元跑,它的性能要求很低。星云精准测试跟传统测试的白盒的差别很大。以前白盒测只能用在单元,现在我们精准测试可以把它用到系统级,也就是功能测试阶段。星云可以在系统全速运转、数据量非常大的时候实时采集数据,并确保对原有系统不要进行干扰。实际应用中,还是可以继续延用黑盒测试的操作方法,动态执行用例后,可以得到大大超于白盒单元测试的多种测试数据及其分析结果,用起来十分方便。
所以,大家可以看到星云精准测试使传统测试模式发生了一个重大转变,实现了真正意义上的灰盒测试,使测试左移实现了优雅的落地。但它并不是让我们的测试工程师马上就懂代码开发、懂脚本开发、懂单元测试,它是非常自然的去把用例跟代码进行追溯分析,因为星云有一套静态逻辑分析,可以把测试使用难度大大降低,没有开发经验的黑盒测试工程师能够用的非常好,如果肯下功夫甚至还可以逐步突破职业天花板,成为优秀的测试分析师。
精准测试可以给黑盒充分赋能。以前测试和开发人员交流非常被动,如果开发说逻辑有5个,那就是5个,即便有第6个也很难被发现。有了精准测试整个黑盒子就打开了,测试模式发生一个很大的转变。它使测试实现精准数字化。我们在2015年的时候提出通过精准测试引领测试进入数字化,当时的主流观点测试是不可能数字化的,就像我们人去开汽车一样,想左拐就左拐,觉得该刹车就刹车,没什么数字化。但是有了精准测试以后,所有动作可以去关联代码,每项功能都可以被数字化度量,Debug和回归甚至变成了有趣地打怪升级的过程。所以,回过头来看,可以发现精准测试是针对IT系统非常好的数字化、可量化、可评估、可考核、可度量、很精确的一种技术方法。
六、 精准测试体系
下面给大家介绍一下精准测试体系的具体情况。如上图所示,星云精准测试有这样的运行架构图。它首先会对源码进行一个编译和分析,把代码结构静态分析好后,将静态信息上传到后台对应项目版本中进行存储。再根据块的位置和类型信息进行插装,装点只有编号信息。代码插装好以后,放到被测系统里面直接动态去跑,测试人员用软件示波器点用例开始结束,就会自动把每个用例和代码的正向和反向追溯关系建立起来了。
正反向追溯有两个主体功能,一个是能够让测试整体量化,使之看到所有的测试过程。测试工程师没有跑用例,就没有关联关系的数据;如果乱跑,我们分析一看功能完全不对,跑的功能和设计功能不应该聚类到一块但却聚类到一块,就认为是瞎跑的,跑的不对。什么都可以看得非常细致。另外,星云提供的测试智能分析的一些算法,如测试用例最小级、回归用例选取、测试用例的聚类分析、智能缺陷定位等,这些本来很理论化的技术,之前没人能够把它做出来。例如回归用例选取这技术,它底层数据提取特别难,需要花费大量的时间去研究如何去真正落地实现。比如我们碰到的一些场景:给安卓的Framework代码插桩,然后拍张照片,照片渲染出来以后,整个安卓的驱动层代码到底怎么走?一瞬间就要驱动计算并且展示出来整体逻辑的运行情况,这个复杂度相当高。实现了这种技术,就可以用精准测试帮助手机厂商去节省CTS测试的时间。
精准测试在早期发展阶段,推广还是受到了很大的阻碍,其中一部人认为技术难度过高,因为国外的最顶级白盒工具也无法达到精准测试的技术要求,更像是理论研究而无法商用,还有一部分意见认为测试就是做功能黑盒人工测试,就应用使用基于传统的经验性的测试方法体系。现在这种观念已经在发生悄然转变。因为本质上,我们做测试就不应该忽视计算机的软件代码和功能间本质上的强关联性。
七、 商用精准测试的无损技术
再从内核能力的角度上,给大家讲一下开源白盒覆盖率工具和商用精准测试之间的对比。
现在我们很多单位在基于开源工具来做精准测试,是好事,但也存在问题。我们星云从2012年开始创业,为什么不拿个开源的直接做?还可以省10年内核开发,但我可以斩钉截铁地跟大家讲:要完整实现精准测试那样做肯定是不行的。
开源工具的困难点根源在于:它的分析和插桩全部在字节码上,但实际覆盖率的观测点却在源码上。这就产生了一个严重的信息脱节,因为字节码是有损耗的。开源工具它能够看到你的条件覆盖百分比,但它根本不知道每个条件真和假,由于在字节码阶段,它的条件和真正的源码上的条件已经发生了变化,已经没人能搞得清上面和下边对应关系了。比如Jacoco这样的开源工具做了这么多年也没有突破这个底层的根本性问题,这种差异会导致覆盖率不可弥补的缺陷和错误。大家知道:做覆盖率条件覆盖是非常必要的一个指标,开源工具突围了很多年,也没有成功。另外,它的字节码操作非常复杂,行业里直接拿来试用,但没有人能完整、清晰地阐述它的内部情况。
星云精准测试的SABI(字节码插装)和SASI(源码插装),可以实现真正的无损测试技术。
SABI,SouceCode Analyzer ByteCode Intrumentation,即源码分析字节码插装。就是说在源码上直接分析,观测点也还是在源码上。这个就能够完整实现无损的插桩,覆盖率100%精确规范。SABI是依赖非常全面的源码静态分析后,经过校正后的数据往字节码插,而不是直接在字节码分析,往字节码插。SABI字节码技术可以满足国际规范的CDC的覆盖要求。
SABI是大家非常认可并欢迎的技术方法,2019年左右研发出来,解决了金融领域无侵入式插装的诉求。目前SABI 2.0技术,能看到具体条件确定性的真假覆盖,而不是仅仅是一个覆盖百分比,包括分支覆盖。它把所有的复杂运算在源码阶段全部算完,比如它会产生一个分块数据库,里面所有的装点在什么位置已经全部算好,对于插装来说就是一条指令。一个分块数据库可能几十兆上百兆,但所有的插装动作就一条,所以它可靠性可以有非常好的保证。因分析出来的分块数据库是明文的,有问题可以直接核查,甚至可以把里边一些装点自动去掉或删改都可以,很开放,不是个黑盒,使用安全和可靠度高。
SASI(源码插装),是传统白盒最基础的技术,直接在源码插装,主要应用在对于覆盖率标准要求更高的领域。源码插装以后,经过高级语言、高级编译器的编译,直接生成最后发布包。这种是完全无损的,可以随时反查插装点,不会引起语法错误、功能错误等,可靠性更高。
八、 商用精准和开源精准的区别
商用系统级精准测试有前置精准的静态分析过程。图中你会看到它每个条件真假、条件组合真假。它把代码都切成逻辑块了,直接在对应的位置上展示结果。开源产品缺了一个完整的静态分析过程,后续很难深入做下去。这种代码染色,一行一个颜色,需要测试人员对代码的理解能力要求高,无形中进一步推高了使用成本。
商用系统级精准测试能够整个脱离Git系统做代码可视化。我们有完整的静态分析,有Ll、L2、L3三级不同的可视化表达。L2级主要应用在代码管控非常严格的场景下。它不提供源码阅读权限,但我们可以根据分析出来的代码结构,看到整体条件、嵌套关系等,对于黑盒测试人员的信息是足够的。
商用系统级精准测试系统内部有非常复杂的计算,这些计算是以静态代码分析做依据,它不在这个阶段去关联代码,关联到Git上。在Git上去拿源码,然后再去算,一个是来不及,另外因为它不是结构化的,根本达不到实际使用要求。开源产品做差异覆盖率时,需要让Git告诉你差异代码什么。而商用精准测试,早已经完成了静态分析,对于程序的控制流有没有差异很清楚。它的运算完全脱离任何外部系统,像这种实时覆盖率切换的关键的功能,在实际场景的使用频率很高。
实际应用中,对覆盖率的信息要求绝对不仅仅是单版本的,而是需要投影到很多版本。商用精准测试一旦基线切换,它会把历史数据往新基线自动进行投影,并且整个过程对用户都是透明的,不需要人工 干预。因前面已经做过程序控制流分析等工作,它的投影能够实现秒级的计算和切换。这些也是基于开源产品研发精准测试无法突破的技术瓶颈。
另外,很多企业级客户喜欢在代码块上做标记,告诉你不同的代码在做哪些功能。商用精准测试也满足了这一需求。它可以在分块上做详细标记,这个数据是一种结构化的,里边会有嵌套的程序信息理解。它可以画出程序的控制流程图,像有深度的网状结构,覆盖率看得非常清晰,这些都是基于分块信息。
在商用精准测试的使用场景里,大家用的比较多还有“实时覆盖率”功能。即:在一个发版轮次中,多个版本之间自动汇集覆盖率。当数据从程序里传出来以后,它只有跟用例的关联关系信息,它属于哪个版本、哪个轮次/计划/任务,起初都是不知道的。经过星云主server以后,会把这些数据实时往外吐,随后有专门的server去实时往里合,一瞬间就合在轮次上。如果想看这个轮次的覆盖率,只要一刷实时马上就可以看到。
商用精准测试里,包含了一整套切基线的机制。这个机制比较复杂:当一个新版本上线,一看数据属于新版本,它会自动把基线切换为新版本。切的过程中,它会把历史数据往新版本投,如果这个函数没有变,就会把历史数据投到过来;如果变了,整个清零形成一个新的轮次累计版本,用户马上可以看到一个实时累计版本的状态。这个是做了比较复杂的一套系统,我们在很多时候感触也比较深,这个内核做的复杂度非常高。
行业上大家对商用精准测试还是有些误解,拿开源Jacoco来比对是不恰当的。因为产品能够达到大规模商用化,要求是非常高的。我们(星云)可以对数亿行代码的大型高复杂度的系统插装,也就是说在对亿行代码插装的时候是不能有任何闪失,功能、性能以及引起编译上的错误,都是绝对不允许发生的。
星云做过很多大型系统,包括数十个节点的分布式,还有数百个大型服务,复杂性很高。目前录最快的处理速度是在一个88核的机上,相当于每秒钟要处理140万组的覆盖率数据。当然这个也不是原始数据,是在应用端发出来初步合并以后的数据。每秒140万组合用例的关联,这个关联不能有时间差。因为一旦有时间差,你的数据属于上一个用例的,会引起分析上的错误。每秒计算量要1.4亿个字节每秒,就是要算的这么快!这些数据来了以后马上就算完,1.4亿字节这个数据马上就要算到主系统里面去,所以它的整个的实时覆盖的延迟也要求很严格。
嵌入式系统场景中,要支持到实时系统。以前星云可以完成准时,现在完全可以在实时系统做。比如在一些DSP芯片的控制上,不会干扰它的时序。插装以后,时序能够保证正常,不会引起异常的逻辑。我们的精准测试整套系统都是C++做的,单节点128g内存可以支撑2000个系统。这种量级在以前是很难想象的(白盒工具一般主要用在单元测试阶段,测一些函数)。这种大型系统的计算,对整个内核能力要求非常高,刷覆盖率速度要很快。开源的产品速度很慢,根本够不到实际的生产场景要求。星云百万级代码行的,基本就是秒级。一刷,所有的覆盖全部算完,实时速度很快。目前星云精准测试运行绝大多数场景下,可以达到7*24小时不间断运行与计算。这个很关键!如果大家对覆盖率或者精准测试理解不深,大家会觉得这不就是一套测试用的系统么,宕机就宕机。但实际上,商用精准测试就应该是软件测试界的Oracle,它不允许宕机。因为大家一旦用上以后会非常纠结这个数据,比如我突然间一个条件没了,我测试过了为什么没了?不管你量有多大,丢了肯定不行,因为丢了就会造成分析的误差,所以整个系统这种持续性以及稳定性非常关键。我们(星云)花了一两年的时间一直在专门优化,因为它的要求太高了。商用精准测试要在系统级采集,用户的系统通常有很多,单系统采集的情况不多,可能几百上千个系统同时在采集,它要求非常高,能够做到7×24持续不间断,就需要很多技术做支撑。
九、 精准测试技术成熟度五级划分
目前,按技术实现情况,可以把精准测试分成5级。
最初级T1级叫做“开源覆盖级”。主要任务是统计覆盖率,拿开源产品架构稍微改一改就开始用了。它只有覆盖率的主要功能,包括差异覆盖,做一些简单的定制,这叫“开源覆盖级”。
一般用在高校教学、普通应用层级的覆盖率统计,需要谨慎考虑用于企业质量体系建设指标。
T2级就是“开源精准级”。这个级别主要基于 APM技术+开源,做到精准测试一些基础功能,比如可以实现用例和代码追溯。由于前面我们讲的开源内核的能力限制,对于很多场景,没有有效的方案去解决。我们看过很多企业在这方面遇到了一些很大的实际困难,投入很多研发时间和精力,但最后都翻越不过去,浪费了不少宝贵的热情和投入。
一般用在互联网公司内部创新、对于覆盖率指标精确度要求不高、以及企业对升级到精准测试的内部运行初步评估等场景,起到了对精准测试技术拓荒与导引作用。
T3级是“商用白盒级测试”。这个领域几十年前就有,比如国外工具C++Test、TestBed、VectorCast等,应用在汽车、航天一些领域用的工具。这些商用工具的单元测试能力强,用它来做航天航空上要求的MC/DC的覆盖率,不会有什么问题。但它受限在单元测试这个环节,不针对系统级应用。也就是说,黑盒工程师基本是用不起来的。这些工具大多没有用例和代码的追溯,在测试分析方面的能力比较弱。从用户的角度看,一个是价格非常高,另外在国产化替代的大背景下既方便采购、各种适配都有很大问题。
主要用在对单元测试要求高、代码量相对较小、质量要求极高、仍采用传统瀑布开发模型的企业。常见的场景在航天军工类的嵌入式系统等。
T4级是“商用系统级精准测试”。它的技术体系非常完整,要求较高。比如:(1)在满足白盒测试要求的同时,需可以对接黑盒测试,整个采集过程可在系统级进行;(2)内存和CPU的附加开销,必须控制在5%以内;(3)企业用户可以根据自身需要,定制系统级别的覆盖维度和业务模型;(4)支持轮次级实时覆盖率和跨版本覆盖率累积技术,实现白盒探索性测试的要求;(5)对微服务系统做全方位支持;(6)对流量隔离(穿透)技术需要提供强大的支持,以便更好的在微服务系统中实现全程精准测试;(7)在回归测试智能选取上,需要给出推荐值,并可进行公共底层模块引起的全量推荐修正等。
在T4商用系统级测试里,可以计算实时覆盖率,轮次级、计划级、任务级、实时覆盖率能够自动生成并查阅。T4级在整个流量隔离或者分布式系统的用户标签、穿透等方面,有非常标准化的解决方案。各种标准协议一个用户标签打过去,各个层面全部穿透过去,可以拿到整体的用例和代码间全系统的这种关联关系。另外在用例选取、回归选取等有些算法的优化,包括静态修正、动态修正等,技术方案都很完整。另外,商用精准测试的server一般都比较强,整体对性能的干扰可以控制在5%以内,因为这个级别主要是PC级的应用,性能开销要求不是最主要的问题。自2016年以来,星云测试在这个级别做了最深入的研究,并在银行、证券、保险、智能工业(通信)、智能汽车、国家电力、电信运营、航空航天、军工等领域的多家企业实现了圆满落地。
T5级是“商用内核级精准测试”。它能够执行对于Android Framework级代码的覆盖率统计、Linux操作系统内核进程和相关驱动的覆盖率统计、DSP芯片中无操作系统状态下裸C/C++代码的覆盖率统计等,对系统的干扰非常小。因为如果插装到操作系统上,很可能机器启动不了。这个级别对性能的影响度一定要控制在1%以内,芯片与嵌入式板子等要求更高,因为他们是有时序的。我们一些芯片有中断时序,比如几个中断,它一定要保证原有执行时序不能被打断。假设要0.1毫秒完成,那是绝对不能超过0.1毫秒。它不像PC端系统,慢一点也影响不太大。比如金融系统,查询功能原来是1毫秒,插装后变成1.2毫秒,它顶多是慢一点点,不会影响业务结果。但是这种芯片级会影响业务结果,造成逻辑错误,这是绝对不行的。目前国内主要是星云测试承担起了这个级别的测试任务,应用在一些高端场景及领域中,比如军工、智能汽车、芯片、电力等行业的国家级项目上。
十、 精准测试的效能提升
这个图早在8年前,我们(星云)就发布了,现在看下来实际效果与起初的预估没多少误判。商用级精准测试有很多驱动点可以改进效率,以覆盖率打比方:原有的黑盒测试的瓶颈阶段效率是很低的。这个阶段假如依然使用人海战术,基本上可以认为是消耗大量成本,而看不见有效成果。也就是你不知道软件里面是什么,就在那猜用例,猜的很多都不对。比如一天猜了100个用例,也许只有2个是有用。但商用精准测试,就可以高效地分析用例、有目的地补充用例,一天做100个用例100个都是有效的,它并没有增加工作量,这个是最让人赏心悦目的。
引入商用系统精准测试很多企业覆盖率很容易做到惊人的90%以上。因为它的提升是全方位的,包括我们开发测试的交互的效率和管理端的效率。以前我们强调现场管理,时常需要盯着测试工程师看干不干活,干得怎么样。这种情况一个是容易造成矛盾,另外因为受人为因素干扰太多也不客观,再有就是不能帮助测试工程师们发现自己需要补充的技能,长此以往容易迷茫,早早碰到职业天花板,很痛苦。由此导致人员流动过于频繁,不利于业务稳定。另外,商用级精准测试在回归上,给了测试和开发们很大的支撑点。以前很模糊的一些东西,要人去投入大量时间分析,现在测试用例自动推荐功能可以自动分析,而且速度极快,整个回归测试效率至少提高一倍以上。
十一、商用精准测试的规划与发展
商用精准测试不是项目制的,整体都是高度产品化,每个功能都要考虑到整个行业的通用模式诉求,如何做到普适化?是非常一个严格的产品化过程。所以客户的需求是模型化,我们就得按模型化来设计。比如很多场景要通过参数来区分,类似oracle这种软件的参数比较多,一般我们(星云)的专业人员可以帮大家配好,对某个行业客户的具体场景后续不需要变配置。
高性能、高可靠永远是追求的技术管理点。如果没有高性能、高可靠,产品功能就算再强大也是没用的,大规模商用化是会受到重大阻碍的。商用精准测试技术是未来软件质量体系最核心的业务和大趋势,它不允许有任何错误,我们(星云)在这块投入很大。
目前首创的核心技术都有保护。因为我们(星云)会按照自主可控内核的路线去发展,虽然很难,但是对企业来说,正是有了核心竞争力,才有资格去国际舞台上与主流白盒一争高下。如果拿开源直接用,会发现上手快很简单,但是企业很多复杂一点的需求变更、功能扩展都解决不了。因为它内核本身就有缺陷,另外是大部分用户还是看不懂它的逻辑本身,遇到问题无从下手。
所以(星云)一直很关注专利保护授权。对专利的注重和保护是希望大家尊重技术创新,尊重商业规范。如果有人要借鉴,需要一个知会、授权的流程。星云是友好的,比如白皮书里面的内容是我们的专利得到授权可以公开后,面向行业是敞开式的定期更新、向大家介绍最新的技术,也会写这些基础怎么做。
我个人认为,精准测试是在测试全面智能化之前的一个很好的过渡,但是我认为过渡期最起码需要几十年,那时AI才有可能成为主导。然后把人的工作全部省掉,甚至可能包括覆盖率工具都可以不再需要。但这是最起码是几十年以后的事情。
不改初心,方得始终。在很长的一段时间内,我们会持续的发展精准测试,让精准测试成为整个测试行业提高效率的一个保障。现在很多企业的业务扩展太快,有限的人根本接不了暴增的项目,测试工作量随着项目指数级增加。精准测试让指数级变成一个直线。人力的贡献是有限的,因为软件的算法是极度复杂的,人力无法在看不见的情况下,去做完全而有效的遍历。所以好的产品和工具是必须品。我们一直在发展,包括很多研究合作、一些理论上的算法,逐步的让它更拥有更强大的能力,把人从繁琐而没有创造力的工作中解放出来。
撰稿人介绍:
赵明是中国最早一批软件测试专业硕士,曾在三大检索及国内核心期刊发表数篇学术论文,师从国际著名软件测试科学家。深度关注和掌握软件白盒测试理论和工具底层技术。
精准测试技术理念的发明人和商用工具的总设计师,作为第一发明人申请了16项精准测试核心发明专利,完整的构建了精准测试的发明专利簇。精通软件测试核心理论算法,精通多种语言编译器核心技术,代码分析和插装技术,精通计算机程序底层开发(图形,存储,二进制分析)技术,精通各种软件测试理论算法。带队完成了中国第一个完全自主可控商用白盒测试内核的研发,完成了超高性能白盒测试内核的研发,将白盒测试的应用领域从单元级向系统级和达到实时性要求嵌入式系统进行了扩展和应用,设计并研发了WINGS单元测试用例自动生成系统,能够面对非常复杂的软件系统完成全自动的生成100%语法正确的可直接运行的单元测试用例,产品性能远超国际上同类产品。