前言
软件测试发展到今天,已经逐渐形成一门学科,但是还不够系统。
初学者面对铺天盖地的资料应该如何选取?应该从哪里入手?如何迅速的掌握各种业务各项测试技能以便开展工作?在保证测试质量的前提下,一日内编写或执行1000个测试用例是不是梦想?
入行多年者面对复杂的业务逻辑,海量的测试需求,如何在最短的时间内进行测试?如何尽可能更早的开展测试?如何对系统架构进行测试?如何全面提高测试质量与测试效率?如何百尺竿头更进一步?
本文将针对这些问题进行初步解答,主要阐述解决这些问题应该具备哪些能力及如何锻炼这些能力,至于实际工作中解决问题的具体操作步骤本文不做表述,可关注后续文章。前两章主要探讨一名合格的测试工程师应该具备哪些能力,对列举的能力将会做简要说明。第三章重点说明应该如何锻炼这些能力,此为本文的重点。最后一章是笔者对软件测试虚无缥缈杂乱无章的一些想法。
本文的读者群涵盖所有对软件测试感兴趣的朋友。
下面,我们开始。
第一章 综合素质
笔者以为,作为一名合格的测试工程师,综合素质是最重要的,综合素质也就是我们常说的软技能,它代表着一个人的潜力有多大,未来发展有多宽广。核心素质有以下五点:沟通、分析、组织、学习、心态,下面将会分别阐述。
沟通
作为一名软件测试工程师,优先加强的应该是哪方面的沟通能力?是文字沟通能力。试想,如果连缺陷描述都无法准确清晰的用文字表达出来,还有开发愿意和你合作吗?特别是随着异地开发的项目越来越多,文字沟通的场景也会越来越多。
当然,口头沟通也很重要,通过面对面或者电话语音交流是很直接的方式,这也是为什么许多鼓吹敏捷开发的团队喜欢坐在一起的原因,认为这样会降低沟通成本。但事实上,真的在任何时刻都能降低成本吗?无效冗长的会议大家都参与过,这里不做深入讨论。
不知道其他人有没有这种体验,笔者偶尔在查阅测试用例库或阅读工作邮件的时候会忍不住哈哈大笑,语句不通错别字也就罢了,写的像聊天记录一样尽是口头语就让人很无奈了。
所以,这里首先强调的是提高文字表达能力,其次才是口头沟通能力。
另外要特别注意的是,沟通能力包含两方面,一方面是说(写),一方面是听(读),表达与聆听同等重要。笔者发现很多测试工程师表达能力不错,但聆听能力很差,有时候甚至忽略聆听。对方话没讲完就急匆匆的打断,即使听了两句也马上反驳对方,这是恶习,比抽烟喝酒打老婆还要恶虐。
分析
早期我们认为测试的唯一工作就是发现问题,在很多文献资料上均有类似描述。但笔者以为,测试发展到今天,单纯的发现问题已不再是测试工作的全部,测试工作应包含发现问题、分析问题、解决问题三个方面。发现问题以测试人员为主开发人员为辅,分析问题开发测试共同完成,解决问题以开发人员为主测试人员为辅。
在测试工作中每时每刻都需要用到分析能力,同时,分析能力是评估一名测试工程师是否优秀最重要的考核点。就像我们常说的缺陷预防一样,怎么预防?对已发生问题的产生原因能准确定位并把类似问题进行归类,对未发生问题能充分预知风险并准备应对方案,这就是我们追求的零缺陷,这些工作有不需要高度分析能力的吗?
再例如测试计划,我们做计划是拍脑袋乱猜吗?是掐指算命吗?肯定很多人回答不是,但实际上往往很多人就是这么做的。测试计划的制定过程是首先收集大量相关信息,然后抽丝剥茧在杂乱无章的信息中寻找到关键点并梳理清脉络,最终据此定出计划。我们说部分未来是可以推测出来的,就是这个道理。在做计划时会用到许许多多辅助分析的理论方法,这里就不一一阐述了。
艾森豪威尔有句名言:“A plan is nothing,planning is everything.” Planning就是分析的过程。
组织
刘备自己不会带兵打仗,为什么他下面的五虎将会死心塌地的服从他?因为五虎将会将兵,刘备会将将。“运筹帷幄之中,决胜千里之外”,这是帅才;“三军中取敌上将之首级如探囊取物”,这是将才。帅才也好将才也好,都离不开组织能力。这里说的是广义上的组织能力,不仅仅指团队管理、跨部门协调这些内容。
不少人认为开发与测试的工作是对立的,经常会有冲突,没错,的确会有。出现冲突怎么办?这时候需要通过高度的组织能力对双方的合作关系进行充分的调整。人与人之间本来就会不断的有磨擦,有人的地方就有恩怨,有恩怨就有江湖,人就是江湖。那为什么有的人能左右逢源,让人感觉与他合作如沐春风呢?这就是组织能力的表现。
再比方说,在真正的敏捷团队中,无论工作有多苦多累,无论团队成员构成有多复杂,整个团队都会有一个共同的表象,那就是“开心”,真正的敏捷团队一定是个开心的团队。所以笔者常说,敏捷团队的领导者一定要有非常强烈的人格魅力,能牢牢的把整个团队凝聚在一起,这种人格魅力往往就体现在组织能力上。
有人也许会问,举办大型活动算不算组织能力的体现?算,当然算。但现在很多人白白浪费了这样的机会,在筹备过程中仅仅起到工作分解或传声筒的作用,可惜。
学习
“一目十行过目不忘”,这种天才是有的,笔者非常羡慕有时甚至是嫉恨他们。普通人需要花费一两年才能掌握的知识,这些天资纵横的人只用一两天就可以了,并且很多技能仿佛天生就会,根本不用后天的学习。幸好这种人非常少,否则根据社会达尔文主义的观点,我们普通人没有任何生存空间。
软件测试从业人员有个明显特点——复合型。“知己知彼百战百胜”,当我们要对某项产品进行测试,那么必然要先了解此产品的各种背景,这导致测试人员需要学习各种各样的知识,并且要不断的学习,快速的学习。入行几年后或许我们会感到掌握的技能杂而不精,此时需要深入的学习,全面的学习。
学习能力往往被看作是一个人有无潜力的重要标志,针对软件测试工程师而言,“快速学习”尤为重要。笔者一直想寻找一种方法,能让测试人员不了解行业背景不懂测试技术也能正常开展测试工作,但可惜的是一直没找到。那么变通下,通过“快速学习”是否也能达到类似的效果呢?应该是可以的。
学习最核心的是什么?知之者不如好之者,好之者不如乐之者。
心态
多年前笔者读过一篇文章——《写给浮躁的IT同仁》,读后深有同感。一个浮躁的社会造就了众多浮躁的人,软件测试本该是个做学问的领域,可惜啊可惜。
人往往是自私的,荀子曰:“人之初,性本恶。”笔者深以为然。绝大多数人都认为自己是最可怜最委屈最被不公正对待的,扪心自问真是这样吗?佛教有个观点“明心见性”,这是笔者孜孜不倦所追求的精神境界,与大家共勉。
大家应该都明白,没有绝对的公平社会,从来就没有,纵观古今中外历朝历代什么时候绝对公平过?我们不要一味的怨天尤人,如果改变不了环境就努力的去适应它,这是升斗小民应该具备的心态。
先做人后做事,不论是综合素质还是专业技能,在所有能力中,心态是最重要的。但要特别说明下,心态和态度不是一码事。此外,有人认为工作态度高于工作能力,笔者并不赞同这种观点,更有甚者把工作态度与是否听话混为一谈这就更扯淡了。
国人讲究“君以国士待我,我必国士报之”,一颗平常心加上一颗感恩心,足够了。