其实对bug的敏感度也是建立在以上三个方面的能力:产品、技术和经验。另外分享一个小技巧,测试人员可以经常把以前的bug拿过来分析和学习,比如当时是如何发现的?找出共性特征,及时做总结,时间长了自然就会提高发现bug的能力。在我带的一个团队中就经常让团队的人找一个自认为最好的bug,轮流在团队会议上和大家分享他发现该bug的过程,从而给团队其他人以启发和学习。club.mypm.net
提问:可以说微软、谷歌、亚马逊等公司代表着测试软件发展方向,他们是如何做软件测试的?他们在软件质量控制理念和实践方面,哪些地方值得我们借鉴?PgMp.mypm.net
Bill Liu:有很多因素决定一个公司如何做软件测试,其中最为重要的就是产品的特点,换句话说就是什么样的产品决定什么样的测试策略。即使在同一个公司,不同的产品也不是使用一成不变的测试方式。微软是传统桌面型产品的代表,由于桌面型产品的特点,使得微软在软件开发过程中做大量的测试,来保证软件发布时候的高质量。而对于谷歌亚马逊等互联网公司,他们的产品以网站和服务为主,于是他们采用不同的测试策略来保证网站和服务的高可用性。虽然不同公司团队具体测试实践或手段有所不同,但仔细分析他们在软件质量控制理念上有很多共性值得我们去借鉴,比如强调把质量提前,开发对代码质量负责,整个团队对产品质量负责,产品质量是从一开始就建立起来的而不是后天测试出来的等。bbs.mypm.net
国内软件测试落后的根本原因在观念项目管理者联盟
提问:软件测试工程师就是软件企业中的QA,他对如何写出一个好代码有得天独厚的认识,你认为该如何提高软件质量?又该采取哪些质量控制手段来保证软件质量?pmp.mypm.net
Bill Liu:软件质量的提高是个系统工程,需要整个开发团队共同努力。以前认为软件质量是QA的事情,与开发和项目经理无关。经过多年的实践,现在业界普遍认为,光靠QA在软件发布前的几天几周或几个月突击找bug的方式,提高不了软件质量。QA不仅要在软件开发过程中做质量控制,也要在开发前做需求分析的时候就着手做质量控制,甚至在软件发布之后还需要继续做质量控制。软件的质量不是工程团队闭门造车,而是把客户参与进来,不断使用,不断反馈,不断提高的一个持续的过程。项目管理论坛
提问:现在国内软件测试有个误区,很多人认为软件测试技术低于软件开发技术,软件测试要求不高,随便找个人做就可以了,对于这个,你是怎么看的?club.mypm.net
Bill Liu:造成这样的客观原因很多。简单的测试的确不需要太多技术,把产品给你,你随便用一用,也会找到一些bug,所以看起来非常简单,不要说人了,就是猴子也可以做。但是要找到好的、关键的bug和找到很多bug,不是一件容易的事。而且优秀的软件测试工程师不仅可以找到bug,而且可以帮助团队预防bug的产生,从源头杜绝bug。此外优秀的软件测试工程师不仅是一个人在找bug,它还可以通过开发工具来提高自己和别人找bug的效率。上面就是普通QA和优秀QA的区别,所以QA是入门容易进步难。项目管理者联盟
另外做QA的也要以身作则,不断提高自己的技术能力。举个例子:在国内培训的时候经常遇到这样一个说法:“(比如测试自动化、工具或流程)的确好处很多,但是它对测试的要求太高了”。刚开始的时候我很惊讶,因为第一次听到对测试要求太高的说法,后来听多了才慢慢意识到问题的所在。如果说国内的测试比国外落后N年的话,我觉得“对测试的要求太高”的观念就是导致落后的根本原因。我一直在观察和对比国内外测试的区别,这有技术、工具、和流程上的区别,但是这些差别都只是表象,根本的差别是观念上的差别,也就是测试在研发中的真正角色。这个不是找到多少个bug的问题,也不是采用什么测试方法的问题,而是是否把测试作为支撑研发两条腿中一条腿的问题。测试是一个专门的职业,和开发一样有不同级别,初级人员解决简单的问题,高级人员必须负责解决复杂,高难度的问题,这样才形成一个完善的测试人员职业发展体系。项目管理者联盟文章
也有很多测试经理很困惑地表示,他们加大了在测试上的投资,包括参加很多技术、流程、管理培训,但是效果都不好。原因其实很简单,就是我们学习的某个技术,或某个工具,是无法解决观念上的问题,这当然没效果,也容易跟风。刚学会手工测试,又要测试自动化;刚学会测试自动化,又要ET;刚学会ET,又要敏捷……,没有观念就没有主见。如果QA自己都觉得测试没有难度,没有前途或者对测试要求太高的话,不可能指望别人对QA价值的认可。项目管理者联盟文章
敏捷测试的第一步就是不要敏捷www.mypm.net
提问:自从敏捷概念从国外引进国内后,敏捷开发和敏捷测试就很火,但有人认为敏捷测试就是一个大忽悠,你是怎么看待这个问题的?你认为如何做好敏捷测试?项目管理者联盟
Bill Liu:任何东西都有一定的适用范围和使用条件。比如我们看飞机极大地缩短了人们的旅行时间,但是我们不能只看到飞机本身的优势,更应该看到它需要飞行员、跑道和航站楼等配套软硬件设施,这些缺少一个都会把飞机变成一个毫无用处的摆设,成为一个忽悠。敏捷开发和测试也是一样,我们不能只看到国外团队挤在一间大屋子里面,没有文档,没有计划,没有设计,以为那就是敏捷。项目管理者联盟文章
其实他们工作的背后有很成熟稳定的工具和基础设施来保障团队的高速运作。我在和许多公司培训做交流时,就告诉他们做敏捷测试的第一步就是不要敏捷,先一步步把自动化做好,把持续集成做起来,创建更多的测试工具来提高测试效率,同时也要把质量反馈系统做起来,把dev提交代码前的质量检查做起来,把在产品中测试做起来,把测试工程师的素质提高上去……,等到这些都建立起来后,你会发现自己已经很敏捷。项目管理者联盟
提问:随着云计算发展,你认为软件测试工程师如何适应时代的发展?未来软件测试路在何方?项目管理者联盟
Bill Liu:云计算的快速发展,不仅给软件测试工程师带来新机会,同时也带来许多挑战。要想适应云计算所带来的挑战,软件测试工程师必须不断学习和了解云计算关键技术特点,才能在云计算应用测试中使用更加有效的测试技术和手段,才能提高团队工作效率,才能用最有效的手段提高软件质量。比如在传统测试中为了找到bug的原因,我们经常会在测试环境下重现bug或者使用调试器现场调试,这种调试和诊断策略在云计算应用中很难实现,因为云计算应用的真实运行环境很难复制,也无法安装使用调试器。所以开发和测试必须使用其它策略来实现现场调试和诊断。再比如,云计算的应用各个模块通常使用异步通信松耦合架构,这使得功能测试单个模块成为可能而且比较容易。测试团队可以考虑重点测试单个模块以保证单个模块的高质量,然后优化系统集成测试。另外随着云计算的普及和成熟,云计算技也可以更好地服务于软件测试。比如我们花很多时间来搭建和维护测试环境,而使用云计算的产品和技术,我们可以把测试环境移到云里,利用云计算弹性伸缩、按需使用和按使用量付费的特点,甚至可以直接使用第三方更为成熟稳定的云测试环境,从而极大提高团队工作效率的同时,也为企业节省大量研发成本。training.mypm.net
未来的软件测试必然向系统化、自动化和用户化方向发展。系统化是指软件测试是个系统工程,它在软件整个生命周期中每个阶段,多种测试手段、测试技术、质量衡量等互相结合使用的综合过程。自动化是指软件测试需要自动化,需要指出的是测试自动化不是万能的,但是没有测试自动化却是万万不能。测试工程师需要从反复,繁琐和易错的测试执行中解脱出来,从而专注于对测试的思考、设计和提高。用户化是指把软件测试延伸到用户使用环境中,让用户也参与到软件测试中,因为用户才是软件质量的最终评判者。测试一方面和开发间的界线越来越模糊,另一方面又保持特有的思维方式和技能,未来的软件测试将会和开发、产品经理以及整个团队共同努力创建高质量的软件产品。项目管理者联盟
写在最后项目管理培训
记者在和Bill Liu的交流中发现,他具有非常高的技术分享意识。在最近的两年时间里,Bill Liu一直专注于中美技术交流活动,经常回国参加国内的软件和测试会议,经常和国内的企业做技术交流以及提供培训和咨询。项目管理者联盟
Bill Liu对记者称,他愿化身中美技术交流的沟通之桥,希望为中美两国在软件测试或云计算技术的交流中出一份力,把美国一流公司的软件测试理念、方法和实践带回国内,让国内的软件公司在交流中以借鉴和启发。项目管理者联盟
此外,Bill Liu还对记者表示,他目前也在带动一些在国外工作的其他优秀工程师回国做技术交流,借此希望能给羸弱的中国软件业带来些新气象,同时他也在挖掘和组织国内特别优秀的工程师和好的企业技术案例介绍到国外的技术会议中,让中国的软件技术不仅引进来而且也走出去。项目管理者联盟 项目管理者联盟文章
|