提问:现在国内软件测试有个误区,很多人认为软件测试技术低于软件开发技术,软件测试要求不高,随便找个人做可以了,对于这个,你是怎么看的?

  Bill Liu:造成这样的客观原因很多。简单的测试的确不需要太多技术,把产品给你,你随便用一用,也会找到一些bug,所以看起来非常简单,不要说人了,是猴子也可以做。但是要找到好的、关键的bug和找到很多bug,不是一件容易的事。而且的软件测试工程师不仅可以找到bug,而且可以帮助团队预防bug的产生,从源头杜绝bug。此外的软件测试工程师不仅是一个人在找bug,它还可以通过开发工具来提高自己和别人找bug的效率。上面是普通QA和QA的区别,所以QA是入门容易进步难。

  另外做QA的也要以身作则,不断提高自己的技术能力。举个例子:在国内培训的时候经常遇到这样一个说法:“(比如测试自动化、工具或流程)的确好处很多,但是它对测试的要求太高了”。刚开始的时候我很惊讶,因为第一次听到对测试要求太高的说法,后来听多了才慢慢意识到问题的所在。如果说国内的测试比国外落后N年的话,我觉得“对测试的要求太高”的观念是导致落后的根本原因。我一直在观察和对比国内外测试的区别,这有技术、工具、和流程上的区别,但是这些差别都只是表象,根本的差别是观念上的差别,也是测试在研发中的真正角色。这个不是找到多少个bug的问题,也不是采用什么测试方法的问题,而是是否把测试作为支撑研发两条腿中一条腿的问题。测试是一个专门的职业,和开发一样有不同级别,初级人员解决简单的问题,高级人员必须负责解决复杂,高难度的问题,这样才形成一个完善的测试人员职业发展体系。

  也有很多测试经理很困惑地表示,他们加大了在测试上的投资,包括参加很多技术、流程、管理培训,但是效果都不好。原因其实很简单,是我们学习的某个技术,或某个工具,是无法解决观念上的问题,这当然没效果,也容易跟风。刚学会手工测试,又要测试自动化;刚学会测试自动化,又要ET;刚学会ET,又要敏捷……,没有观念没有主见。如果QA自己都觉得测试没有难度,没有前途或者对测试要求太高的话,不可能指望别人对QA价值的认可。

  敏捷测试的第一步是不要敏捷

  提问:自从敏捷概念从国外引进国内后,敏捷开发和敏捷测试很火,但有人认为敏捷测试是一个大忽悠,你是怎么看待这个问题的?你认为如何做好敏捷测试?

  Bill Liu:任何东西都有一定的适用范围和使用条件。比如我们看飞机极大地缩短了人们的旅行时间,但是我们不能只看到飞机本身的优势,更应该看到它需要飞行员、跑道和航站楼等配套软硬件设施,这些缺少一个都会把飞机变成一个毫无用处的摆设,成为一个忽悠。敏捷开发和测试也是一样,我们不能只看到国外团队挤在一间大屋子里面,没有文档,没有计划,没有设计,以为那是敏捷。

  其实他们工作的背后有很成熟稳定的工具和基础设施来保障团队的高速运作。我在和许多公司培训做交流时,告诉他们做敏捷测试的第一步是不要敏捷,先一步步把自动化做好,把持续集成做起来,创建更多的测试工具来提高测试效率,同时也要把质量反馈系统做起来,把dev提交代码前的质量检查做起来,把在产品中测试做起来,把测试工程师的素质提高上去……,等到这些都建立起来后,你会发现自己已经很敏捷。

  提问:随着云计算发展,你认为软件测试工程师如何适应时代的发展?未来软件测试路在何方?

  Bill Liu:云计算的快速发展,不仅给软件测试工程师带来新机会,同时也带来许多挑战。要想适应云计算所带来的挑战,软件测试工程师必须不断学习和了解云计算关键技术特点,才能在云计算应用测试中使用更加有效的测试技术和手段,才能提高团队工作效率,才能用有效的手段提高软件质量。比如在传统测试中为了找到bug的原因,我们经常会在测试环境下重现bug或者使用调试器现场调试,这种调试和诊断策略在云计算应用中很难实现,因为云计算应用的真实运行环境很难复制,也无法安装使用调试器。所以开发和测试必须使用其它策略来实现现场调试和诊断。再比如,云计算的应用各个模块通常使用异步通信松耦合架构,这使得功能测试单个模块成为可能而且比较容易。测试团队可以考虑重点测试单个模块以保证单个模块的高质量,然后优化系统集成测试。另外随着云计算的普及和成熟,云计算技也可以更好地服务于软件测试。比如我们花很多时间来搭建和维护测试环境,而使用云计算的产品和技术,我们可以把测试环境移到云里,利用云计算弹性伸缩、按需使用和按使用量付费的特点,甚至可以直接使用第三方更为成熟稳定的云测试环境,从而极大提高团队工作效率的同时,也为企业节省大量研发成本。

  未来的软件测试必然向系统化、自动化和用户化方向发展。系统化是指软件测试是个系统工程,它在软件整个生命周期中每个阶段,多种测试手段、测试技术、质量衡量等互相结合使用的综合过程。自动化是指软件测试需要自动化,需要指出的是测试自动化不是的,但是没有测试自动化却是万万不能。测试工程师需要从反复,繁琐和易错的测试执行中解脱出来,从而专注于对测试的思考、设计和提高。用户化是指把软件测试延伸到用户使用环境中,让用户也参与到软件测试中,因为用户才是软件质量的终评判者。测试一方面和开发间的界线越来越模糊,另一方面又保持特有的思维方式和技能,未来的软件测试将会和开发、产品经理以及整个团队共同努力创建高质量的软件产品。

  写在后

  记者在和Bill Liu的交流中发现,他具有非常高的技术分享意识。在近的两年时间里,Bill Liu一直专注于中美技术交流活动,经常回国参加国内的软件和测试会议,经常和国内的企业做技术交流以及提供培训和咨询。

  Bill Liu对记者称,他愿化身中美技术交流的沟通之桥,希望为中美两国在软件测试或云计算技术的交流中出一份力,把美国公司的软件测试理念、方法和实践带回国内,让国内的软件公司在交流中以借鉴和启发。

  此外,Bill Liu还对记者表示,他目前也在带动一些在国外工作的其他工程师回国做技术交流,借此希望能给羸弱的中国软件业带来些新气象,同时他也在挖掘和组织国内特别的工程师和好的企业技术案例介绍到国外的技术会议中,让中国的软件技术不仅引进来而且也走出去。