1.3 把握测试岗位
读者朋友,通过前面的介绍,如果你是一个业外人士,是不是已经跃跃欲试了,很想知道进入测试领域有哪些要求,自己是否合适从事软件测试工作,那么请读本章“1.3.1测试入门”。它将为你揭开“软件测试”大军基本装备的神秘面纱,告诉你合格的测试工程师是什么样的。如果你已经是一名软件测试工程师,首先,恭喜你!但是我们要对自己有更高的要求,才能取得更大的进步。成为一名优秀的测试工程师,是一个不错的选择,在测试的职业生涯中,无论日后是从事测试管理还是测试技术的工作,它绝对是一个含金量极高的砝码。优秀测试有哪些要求,如何才能成为一名优秀测试工程师,请看“1.3.2优秀测试”,它将为你支招。如果你已是一名能独当一面的业务测试骨干,或是某一方面测试技术的大师,再或是在测试项目管理上的佼佼者,如何超越自己,往更高处发展,成为某一测试领域的专家或带头人,建议看“1.3.3卓越测试”,相信会对你有所启发。
如果把对测试岗位能力的把握程度分为3个阶梯,根据其难易程度,其发展趋势可看成如图1-6所示的“金三角”。
图1-6 测试岗位能力把握程度“金三角”
图中每一个台阶都是一个跨越,每一个跨越都需付出代价,特别是要做到卓越测试,更需付出艰苦的努力,才能成就卓有成效的跨越。图中的人员比例是一个经验值,并不绝对。
事在人为,愿每一个从事软件测试工作的朋友都心有目标,不断攀登高峰,成就测试的未来。
1.3.1 测试入门
首先,软件测试是一项技术性工作,在跨入测试这个大门之前,需对软测的基本知识有所掌握,1.4节是单独为这方面知识进行的简要介绍,已熟悉这方面知识的朋友可跳过。当然,如果你足够幸运,不知道软件测试是做什么的,却有机会在软件测试岗位工作,在软测人才如此缺乏的今天,也不是不可能的。比如加入测试执行行列,做一个测试执行人员(运行软件,按他人已设计好的测试用例一条条执行,给出测试结果),但是你很快会发现,由于自己基础知识的缺乏,工作起来很困难,更不用说继续发展。正如古人所说“强扭的瓜不甜”,如何把苦瓜变成甜瓜,关键要看你自己(这个瓜就是你自己)。
在步入测试岗位后,对于任何新人都一样,首先需考虑的是如何做一个合格的测试工程师,这是最基本的,也是最重要的。俗话说“万事起头难”,初来乍到刚做测试时,有这种感受是正常的。下面就从测试技术和测试素质两方面进行总结分享,希望对迷茫中的你有所指引。
1.技术方面
● 测试设计能力:能够对项目的需求进行分析,提取测试需求、设计测试方案与用例。在不少公司里,测试执行与测试设计是分开的,做测试执行工作的人员只能算是测试员。测试工程师是一个通称,但戴上了“工程师”的帽子更显得专业,对于测试工程师的要求当然也更高。根据从事测试业务的领域不同,测试工程师也有不同的叫法,如性能测试工程师、自动化测试工程师、安全性测试工程师等。无论是哪方面的测试,对于工程师来说,“设计”两个字至关重要,测试工作的展开必须围绕这两个字打开思路,发挥潜能,向优秀测试迈进。测试设计能力,需要软件测试专业知识、行业产品业务知识及其他关联的系统知识做支撑。
小贴士:
“工程师”定义:工程师是把数学与自然科学知识用于实际目的,如设计、建造结构并加以操作的人(Someone who applies a knowledge of math and natural science to practical ends,such as the design,construction and operation of structures)。
● 代码分析:能理解设计文档,包括概要设计、详细设计,并读懂代码,适当的时候从设计原理出发,补充系统测试用例设计,或对测试程序设计进行必要的专项测试,如进行压力测试、负载测试、内存泄漏分析等。曾经有从事测试工作的朋友说:“目前测试界,采用黑盒功能测试方法的居多,两眼一摸黑,什么都不知道,有时被开发人员忽悠了还挺感激的”。我们要突破黑箱操作,就是要看代码。
● 文档编写:当今是电子信息化时代,我们工作的输出最后都以电子文档的形式体现,常见的包括测试计划、测试方案、测试用例、测试代码、测试报告、测试总结。一次,有一位软件研发总监说:“很多软件开发人员都怕写设计文档,这是一个不争的事实,但现在一些刚毕业不久的学生写的文档,简直让你大跌眼镜,连语句都不通顺,更不知如何断句,句子没有标点符号、错别字多,有些同音字出现在逻辑性及严谨性都要求很高的技术设计类文档中,真让人哭笑不得,却又苦不堪言”。无论是开发还是测试,文档的编写是必修的基本功之一,现在网上的学习资料很多,此处推荐一本可以系统学习的书籍《软件文档编写》(高等教育出版社出版)。
2.素质方面
关于软件测试工程师素质特点的文章,在测试专业网站,以及很多书籍上大家可能经常看到。作为一名合格的测试工程师,有哪些基本的关键要求呢?结合工作中常遇到的问题做如下总结。
● 热爱测试:俗话说“做一行爱一行,三百六十行,行行出状元”。这些道理大家都懂,可是在实际工作中,常听到的是“人在江湖,身不由己”,“身在曹营心在汉”。如果是这样认为的话,即使你的能力再好,也发挥不出来,更谈不上主动去想,去做测试方法的创新、改进,最终只好前功尽弃,悻悻离开。
● 诚实:这是所有素质中最基本、最重要、最需坚持的原则。用例的执行是测试工作的必做任务,测试的最终结果也需通过用例的执行来体现。用例的执行,就是按照用例的描述在软件上执行操作,判断实际输出与用例中的预期输出是否一致;测试通过写PASS,测试失败写FAIL,没有执行的用例记录为NT(No Test),好像简单得就像1+1=2。但事与愿违,工作中常会出现一些投机取巧的“不测分子”,想当然地认为程序的输出如预期,不去实际操作软件,就置该条用例的执行结果为PASS,后来其他测试人员发现这个用例其实是FAIL,“不测分子”却还狡辩在自己当时测试的版本上是通过的,这种“劣习”是绝对要不得的。
● 耐心与毅力:也可理解为不懈的努力、坚持,在对一轮又一轮成百上千条的测试用例进行版本回归测试时,测试人尤其需要具备这一素质。在版本不稳定时,需要人工手动执行,决定了测试工作是一个重复性很高的工作,没有足够的耐心与毅力会出现偷工减料,未执行的测试用例置为PA SS等情况,敷衍了事,应付工作,当然这也与一个人的责任心密切相关。
● 细心:不单指细心地发现软件的一些细节上的问题,如界面排版没对齐、字符串显示不全,这里更多是指在做测试计划的决策、测试设计等测试的核心设计工作时需特别考虑周密,细致、深入地理解需求与设计,考虑测试的充分性。很多从测试人员手中逃出去的Bug,是因为没有设计这样的用例。
● 善沟通:这是讲沟通能力,主要指专职测试人员与开发人员、需求人员之间的交流。测试人员发现的问题提交到Bug库后,常会出现开发人员不能重现或看不太明白,这个看似描述不清的Bug,也是一种交流的方式。沟通是双方的,当出现测试人员认为是问题,但开发人员认为不是时,测试人员需善于表达自己的观点,且立场坚定,最好说服开发人员修改,或启动需求人员参与进行三方讨论等。
● 学习能力:知其然,也要知其所以然,测试执行人员与测试设计人员的一个重要区别就在这里。测试执行人员只按用例执行,通常不清楚为什么要这样设计用例;而测试设计人员,如果做不到这一点,会只停留在软件表面上的应用,造成测试遗漏。
● 怀疑精神:指对软件中存在问题的敏感性,对于能否发现Bug显得很重要,这个敏感性说的就是对软件的一种怀疑精神。往往软件测试人员看到一个界面或一个数据输出不正确,但由于不能马上重现,被开发人员说一通不可能后,很多人就相信了开发人员,认为自己看错了,最后选择了放弃跟踪。很明显对自己没信心,没有足够的怀疑精神,一些Bug就这样在自己的眼皮底下悄悄地溜走了。
前面这些特点是对合格的测试工程师提出的要求。在做好一名合格的测试工程师后,很多人自然会想到如何做一名优秀的测试工程师,在技术或管理上要有哪些突破。下节就为大家介绍优秀测试的要求及特点。
1.3.2 优秀测试
上学时,对学习优秀的认识,就是每学期结束时被评上“三好学生”,参加工作后,公司每年年终总结时都会进行评优评先进的表彰大会。三好学生也好,优秀员工也罢,站在耀眼光环笼罩下的颁奖台上领奖的确是件让他人羡慕,也让自己倍感自豪的事。那么,优秀测试是指什么呢?评优时每个公司的衡量标准会不同,但有一点可以肯定,他或她一定在某些方面取得了突出的成绩。下面是在优秀测试人员身上常见到的闪光点。
● 精通业务:不仅能驾驭好测试流程中各环节的工作,还能超出岗位要求,发现隐含需求问题,并给需求提出有建设性的改进意见。在某个行业领域从事测试几年后,熟悉需求、精通业务,这样的测试人员常是需求设计部门求之不得的人才。
● 精通测试技术:测试技术上的高手,能够发现内存泄漏、软件性能方面的严重Bug,让开发人员折服。版本发布后需要指定由高手进行测试,只有经过他们的确认,版本才能发布。
● 创造性:有自己的思想,并能在工作中发挥出来;热衷于改进测试流程,主动在工作中不断尝试新方法,研究新技术。
● 富有探索精神:有强烈的求知欲,不耻下问,爱较真,常会抓住软件的不良迹象,发现一堆Bug给开发人员。
● 分析定位问题:发现问题后,还能分析问题,甚至告诉开发人员问题出在哪里,如何更改,有哪些影响。
优秀测试人员的这些素质,有些是可以通过一段时间的自身努力达到的,如业务知识、测试技术、分析定位问题的能力,而探索精神不可能通过一天两天,甚至通过一年两年的学习就可养成的,它是一个人对各方面知识、认知、习惯培养等多方面综合素质的表现。这类测试人员常常喜欢对问题刨根问底,爱质疑(甚至有时被某些开发人员鄙视为异类、变态),而正是由于这个被视为“毛病”的品质,使得很多设计上的缺陷都逃不掉他们的火眼金睛。探索,敢于探索,使他们更有自己的想法。对问题的日积月累,慢慢地形成了自己的一套想法、看法。量变带来质变,自然而然就会带来创造性的思维,创造性的成果也就体现在工作中了。探索精神是创造性思维的前身,下面的小故事,正好说明了这个道理。
【牛顿与苹果的故事】
传说1665年秋季的一个下午,牛顿坐在自家院中的苹果树下正冥思苦想行星绕日运动的原因,这时,一个苹果落下,正巧落在牛顿的脚边。这是一个发现的瞬间,其实这次苹果下落与以往无数次苹果下落并没有什么不同。几千年来谁都觉得是理所当然的事,但却引发了牛顿的一些疑问,为什么这个苹果要垂直向下落到地面上?为什么它不斜着下落或飞到天上,而是始终朝着地心的方向?为了释疑,他进行了深入的研究,后来提出了令世人惊叹的“万有引力”定律。正是刨根问底、热爱思考、敢于探索的精神引导了并最终成就了牛顿的伟大!
1.3.3 卓越测试
卓越,从字面理解就是杰出、非常优秀,比优秀做得更好,就像学校里跳级的学生一样出类拔萃。如何从优秀到卓越,借用美国知名作家勒纳夫妇合著的《从优秀到卓越》一书中的一段话:对优秀的跳高运动员来说,尽管他们的成绩已经非常出色,但他们还是需要不断提高自己面前的横杆,以求每次能跳得更高一点。这就是实现了“从优秀到卓越”。
那么,对于测试,如何从优秀测试到卓越测试呢?其实道理一样,就是“不断提高自己面前的横杆”。这样说好像很空,在实际操作时,这个“横杆”有时可能并不是有形的东西,比如当一个优秀的测试工程师,无论测试技术或业务知识都很突出,是不是已达到卓越,已没有发展的空间了?卓越测试确实那么难还有其他原因,为什么能达到卓越测试的人凤毛麟角?卓越测试人才,他们都有哪些特点?下面进行介绍。
● 测试事业:把测试当成自己的事业,对测试工作特别热情,富有激情,这种激情常能感染团队中的其他成员,一直朝着积极向上的方向前进。很多优秀的测试人员,在做了几年后,发觉前路已亮起了红灯,出现了发展的瓶颈。无论是从技术上还是管理上都难于进阶,于是有人选择了退出,转行做开发、做需求、做销售、做生意等。甚至还有不少测试人员,可能从来都没有想过把测试工作当成自己的事业来做,也没想过其实自己有潜力可以做得比现在更好。
● 测试指挥官:培养及带领一批测试精兵强将,上刀山,下火海,在软件问题的救火场景中常见到他们的身影,能高质量突出地完成一个个项目的测试。
● 分享与传递:卓越测试人员是可遇而不可求的,好像他们有测试DNA,除了他们自身有很好的问题敏感度,能找到真正的问题外,他们还乐于把资源、知识、经验分享并传递给团队中的其他成员,推动团队的共同成长。
● 专业技术的带头人:某一技术方面的专家、带头人,敢于尝试新方法、新技术,进行变革创新,突破瓶颈,取得认可。
● 引领未来:身处一角,眼观世界,把握市场,洞察未来,结合当下,前瞻思考,构建测试的未来,是测试团队中的指路明灯。
下面,我们来分享微软这个世界顶级软件开发公司的卓越测试团队的工作模式。
【微软卓越测试团队】
微软在2003年创造了卓越工程(EE)团队,团队的宗旨除了技术培训外,还有发现和分享整个公司的工程最佳做法。团队作为一个整体包含了所有的工程领域,卓越测试团队便是代表测试领域的其中一个团队。卓越测试团队认为微软的每一个测试人员(包括从新员工到副总裁)都是他们的客户,团队的主要任务可以概括为共享、帮助、交流。“共享”包括共享做法、工具和经验,他们每年举行20多场测试讲座,交流有效的测试方法。帮助是指帮助测试相关人员解决问题,或许有些问题他们本身不能解决,但他们可以通过与其他团队的联系来解决问题,卓越测试团队担任着促进者和专家的角色。“交流”指向所有测试成员,沟通交流他们所知道的和所发现的信息。他们还预测微软测试工程师未来的需求,并积极主动地确定关于未来软件测试的长远规划,给测试领域指引方向和指导需要做的工作。更详细的介绍参见《微软的软件测试之道》一书。