ThreadingTest软件测试界顶层设计--由中国人引领的数字化软件测试时代来了
作者:TT 时间:2015.4.15 于上海杨浦城市概念
长久以来,业界对软件测试一直存在或多或少的偏见,外行人更是认为软件测试可有可无,也大有人在。这个行业给人的印象是很好入门,经过简单的培训就可以上岗。相比开发岗位来讲,测试行业的发展空间看上去不那么乐观。绝大部分黑盒测试工程师通过一段时间的工作和学习后,很快就碰到天花板,在技术上很难突破,对职业发展更是茫然。软件测试行业流行的一个话题永远是如何从测试成功转型。
笔者看过一本专业测试书,作者的技术功底非常优秀,书中讲解了非常多的测试技术和测试工具,不过遗憾的是,作者也在该书的收官章节大谈测试转型的问题。因此,从某种程度上看,即使测试资深人士在潜意识中也认为:测试必须进行转型,否则永远冲不破瓶颈期到来的魔咒。这也从一个侧面反映了测试行业的诸多失望与无奈。
为何软件测试经过数十余年的发展仍然无法进入一个全新的境界,似乎整个行业多年以来也是原地转圈?随着经济的快速发展,软件人才需求越来越大,大量的软件测试队伍也在快速膨胀中。一些新的测试方法也在不停的创新和使用中,但是软件测试行业依然不愠不火,无法像开发一样得到重视、蓬勃发展。包括投资圈的投资老大们也表示,我们只看结果。只要软件能按时上线,后面让开发团队打补丁。上线后,不断暴露出来的各种问题让技术总监寝食难安:功能跳转有问题、闪退、崩溃等等。好容易度过上线生死劫,后期的维护问题又来了:开发团队的变动将导致软件维护工作千头万绪、无从下手。更新一些代码和逻辑,将很可能牵一发而动全军,而你面对无边的黑盒,无力感汹涌而至,你恨不得推倒重来。当然,你可以排除万难、另起炉灶重做一个,但之后的问题还是跟之前一样,需要面临着软件的过程检查、后续迭代挑战和沉重的心理压力。恰如盖世英雄没有一件称手的兵器。
痛定思痛,我们一定会领悟到,造成软件维护困难的深层次的原因在于:软件测试的整个过程和方法完全面对BLACK BOX。当你站在庞大的代码行面前,无论你怎样十指生风飞快的进行盲点排错,你还是无从知晓暗箱里的那部分到底是哪一部分影响了哪一部分?你把程序盲测了第500遍,你还是不能明查秋毫、一针见血的肯定软件缺陷已经在你的可控范围内了。听起来很残酷。
那么我们再简单捋一下那些不知死活的测试难点在哪里:首先,我们系统级的测试用的基本都是黑盒工具,就算你花了大价钱用了国外的白盒工具,那也只能止步于单元级测试;第二,测试过程中所产生的数据基本都是人工录入,数据的准确性无法保证,也这是为什么软件测试永远强调团队的职业素质和管理能力;第三,传统的功能测试过程极其不稳定,特别依赖于测试人员的业务能力和临场发挥能力,即使很优秀的测试人员也会因为状态问题而导致测试用例设计水准出现波动,更不要提有经验人员和经验欠缺人员的在测试质量上的巨大差别;第四,业界几乎将自动化测试作为解决测试质量的灵丹妙药,但实质上自动化测试无外乎是人的经验的机械执行而已,完全无法解决测试的根本症结。所有罗列种种,造成了整个测试行业不被理解,不受重视。若是程序报错,测试人员在第一时间承受白眼,被无声质问:“你们是怎么搞的,不是测试过了吗?你们难道是吃白饭的吗?“在这样的工作条件下,测试工程师们如同拖着一个个沉重的铁球,困难重重、举步为难、四面楚歌。
那么到底什么样的测试技术才能改变软件测试的尴尬境地?我们可以在车辆功能安全标准ISO26262安全管理生命周期的细则中总结出软件测试必须具备的基因:从项目管理上来看,测试工作需要达到两点:第一,实现开发与测试的交互管理;第二,实现可追溯的工程技术。从项目测试执行上来看,测试工作需要同时支持:静态测试和动态测试。
笔者是国家最早一批软件测试的专业硕士毕业,亦在软件测试业深耕多年,带领着近600多人的团队在各大集团公司做过各种复杂软件的测试任务,深知软件测试理论的博大精深、应用场景的精妙复杂。笔者曾经对国外白盒抱有希望,专研了解过国际最为领先的白盒测试产品,但令人失望的是:国外的白盒测试工具不仅太贵:一个LISENCE初级配置需要5万元左右,功能较齐备的至少需要20万,而且基本局限在单元级测试。另外他们一个致命的缺点是:成千上百的功能点使学习周期过长,企业培养一位白盒测试工程师的代价非常大,还不算白盒测试工程师的流动成本。在这个唯快不破的互联网纪元,陈旧的白盒测试工具显得过于拖沓、跟不上时代的步伐。
然而,最近软件测试圈出现了可喜的变化:测试小伙伴们对一款设计非常前沿的数字化软件测试工具ThreadingTest(以下简称TT)着了迷,它不仅登上了国际软件测试大会(ISTQB)的主讲堂,而且实际中,很多大集团公司的测试部门都在下载使用。它最炫酷的显著特点就是:测试无需源码,用黑盒的测试方法得出白盒测试报表。若是管理需要,软件完全可以为用户展示软件开发、测试与维护中的每一步变化的数字化追溯结果,项目实现数字化的验收与维护,对于TT简直是举重若轻的。那么,如此奇妙、炫炸天的功能是如何实现的?它还有什么其它的惊爆眼球的解决方案?那么,今天我就向大家简要介绍一下ThreadingTest穿线测试工具。
首先,ThreadingTest穿线测试率先实现了测试用例和代码的双向追溯。即运行一个测试用例以后,穿线测试可以通过程序自动的记录和显示这个测试用例执行的代码。如果测试用户关注某一些代码行,它可以追溯出那些测试用例在运行过程中跑过这段代码。我们都知道软件开发的两大核心人员就是开发和测试人员,这是完全不同的两类技术工种,开发和测试一直没有办法进行真正的信息化沟通。通过这个技术特性,每个测试工程师的每个测试用例都可以进行量化的分析和统计,这些量化数据既可以用来对测试工程师进行工作的考量,也可以提供开发人员和测试人员之间进行信息化的交流。
双向追溯技术记录了每个测试用例对应的程序内部的执行细节,细致到每个条件,分支,语句块的执行情况,可以理解为一个全景的调试器。开发人员可以通过双向追溯的结果去理解程序逻辑,进行软件维护以及进行可一致性的修改,因此,开发人员将很大程度上增加对测试人员工作的认同。开发和测试交流最头痛缺陷复现的问题可以迎刃而解,大大提升了测试和开发的交流效率。
第二,ThreadingTest可以高效定位隐蔽性极高的缺陷。黑盒测试,目前测试行业最主流的测试技术,即常说的“点点点”测试技术,这个测试技术之所以流行, 是因为其上手难度很低,在测试早期可以快速的发现大量缺陷,是一种能够以较低成本和较快速度发现缺陷的方法。但是经过大量实践总结,黑盒测试在发现70%明显缺陷以后,很快后劲不足,查错效率变得异常缓慢。在这个阶段,即使测试工程师编写大量测试用例也很难发现有效缺陷,因为黑盒测试无法对程序内部结构进行数据分析,测试后期其实产生的是大量的重复和无效用例。那么测试界公认的的技术之巅白盒测试技术又如何?我们发现,白盒测试正处在更为尴尬的境地:白盒测试完全无法被广泛传播与应用。除了测试工具价格高昂和学习成本代价巨大以外,传统白盒工具是以面对代码中的一个个函数单元为测试单位,为了满足覆盖率标准需要投入极大的人力。另外,从技术特性上来讲测试工程师必须要掌握编程语言,为软件测试从业者设置了重重障碍。现在的软件开发尤其是互联网企业对于测试的要求是快速上手,随用随测。因此白盒测试在这块使用基础上,既失去了先机,也没有用户根基。
穿线测试设计的精妙之处在于:它是创新型的系统级白盒测试工具。它通过技术手段能够在黑盒测试过程中,自动产生白盒测试的数据,这一切并没有改变传统黑盒的简单测试办法,TT在运行过程中,透明的去采集测试过程中的程序内部运行的数据,优雅、无缝的实施了与手工测试和自动化测试的对接。因此,当黑盒测试达到效率极限区域以后,穿线测试却可以仍然持续、轻松给出数字化分析报告,甚至可以达到用户MC/DC 100%覆盖率的要求。测试人员通过可视化的测试充分析报表,与开发人员沟通,快速、高效的补充测试用例。反之,对比单纯的传统黑盒测试,由于没有任何对比测试覆盖分析,无论是开发人员还是测试人员都没有办法根据测试的实际情况去分析和补充测试用例,这也是导致黑盒测试在后半段低效率的症结所在。
第三,ThreadingTest穿线测试的源码分离测试技术,奠定了它可以在行业内施行新型测试技术大推广的坚实基础。TT数字化软件测试引入了一个技术组件,即测试示波器,它是对于软件测试的一大创新。TT示波器能够在测试过程中,自动分析程序运行的一些数据指标,以波形的形式进行实时输出,例如跟踪显示程序执行的逻辑块的速率指标,程序执行的条件数速率指标等。示波器还能够用来对程序的行为进行深度的分析。例如可以通过示波器来判断不同的测试用例是否为等价类,因此示波器可以记录每个功能对应的输入精确的逻辑块执行的数量,因此当程序的行为发明变化的时候,示波器可以很精准的分析出来,测试人员可以根据这些数据,来进行等价类的判断。它和电气示波器一样,能够对程序的执行进行很多类型的分析和判断。TT示波器改变了传统测试只面对被测试应用和一些简单的测试管理系统,它将成为测试领域里强大的测试分析工具。
再来看看传统白盒测试。由于传统白盒测试工具必须面对源代码执行,因此即使在同一企业内部,由于开发和测试所处的部门不同、保密程度要求不同,测试人员大都无法接触到源代码。穿线测试能够通过技术手段,只需要开发工程师提供编译后的程序,实施测试时,不需源码即可获得相关统计类和指标类的数据。如果需要结合源代码显示更为详细的测试信息,可以在测试后期设置开通权限,进行动态关联即可。因此,TT数字化软件测试的问世,将解决软件测试的最根本问题。包括:管理问题、技术问题、效率问题、质量问题等等,当然也包括职业发展问题。
第四,ThreadingTest对被测试程序实行全程数字化管理,它将软件测试的粗放状态变成精准可控的状态。TT自动精准记录了每个测试用例对应的程序执行逻辑、每个测试用例的覆盖率、用例执行的逻辑以及对与错等等,所有的信息都会被记录在TT系统里面。它可以实时展示整个项目的覆盖率情况以及增长情况,测试管理人员可以对测试进度情况进行非常精确的把握,也可以根据权限对每个测试工程师的工作量,工作效率进行非常客观的考核和分析。另外,针对移动测试,TT还会自动上报测试用例执行的机型信息,以及每日软件测试变化情况。
因此,TT数字化软件测试可以让软件不再严重依赖于某些开发工程师或测试工程师的个人能力,在数字化软件测试工具的管理分析和相应的指导培养下,不同能力水准的团队经过有针对性的培训,最后都可以达到较为理想的水准。测试工程师在经过最初的磨练学习后,完全有机会脱颖而出,成为一名优秀的、高水准的测试分析师。如同建筑工程监理、财务审计师一样,测试分析师将是软件行业最有技术含量、最受尊重的岗位。
目前,根据ThreadingTest研发团队提供信息我们得知:下载TT产品的用户已经几千家,涉及到APP开发、金融、车联网、游戏、物流等不同行业,用户电话回访结果也非常让研发团队自豪。在用户热心的建议下,TT不断进行着优化、迭代,产品线也在不断延伸中。另外他们还透露,有不少下载ID是国外的,过年过节、凌晨3点钟来下载,都很正常。看来TT的星火燎原之势已经渐近。这让笔者不由激动和感慨:国人当自强!中国人不乏天才而勤奋的优秀人才,当我们排除万难、沉下心来一心一意为理想去奋斗去燃烧的时候,我们就有机会让全世界为之惊叹、喝彩。
本文写于数字化软件测试平台www.teststars.cc云平台发布前夕,很快大家可以看到中国乃至全世界第一个数字化软件测试系统的诞生,它依托于先进的云模式,支持多个测试工程师的实时的分布式测试场景,能够快速的为所有的测试团队提供最先进的软件测试服务。届时www.teststars.cc云平台对应的ThreadingTest高级个人版(扩展了很多优秀功能),未来仍然采用免费的形式供大家学习和在工作中使用,大家可以到平台上自行下载,进行产品试用。
在星云测试网站下载高级个人版,还可以开通云测试用
为了与业内同行更好的交流,笔者借用软件测试学术领域中的一个常用理论名称-“符号执行“建立了一个QQ群(目前该群已经有1800余人,主要推广数字化软件测试技术),意在能够传播测试新理论与新工具。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.