我和“测试”的不解之缘

上一篇 / 下一篇  2014-02-11 11:36:32

 

本文来源:http://www.51testing.com/html/85/n-81385.html

感谢原文作者,收藏学习

   在进入北航读研究生之前,我不知道还有软件测试这个专业的存在,当初报考它只是慕名而往,没有想到自己从此就跟“测试”结了不解之缘,并且在两年半的研究生生活结束之后,软件测试成为了我人生的第一份工作


1. 陌路“测试”
        读本科的我,脑子里基本就没有软件测试这个概念,试想,那时候完成课后作业,就是一些计算机大程序的时候,比如汉诺塔,八皇后,迷宫啊。哪个不要在写好程序后测验一下的,比如输入一些取值情况,然后运行这个程序,看所得结果是否和预期的一样。如果出现了实验结果和预期结果不同的情况,最常用的就是单步调试,输入实验数据,然后跟踪程序的运行过程,判断出现异常的断点在哪里,进行错误定位,便于以后对程序的修改。这个每位程序开发者都最熟悉不过的过程,来的就那么自然,似乎每次我们开发完程序,就去自己先检测一下,但我从不知道这就是软件测试,或者更确切地说,这里蕴涵了软件测试的思想。所以,那时候的我,认为计算机专业毕业的学生所从事的工作就是“软件工程师”,去给公司或企业开发代码,做应用程序或开发游戏等。也就是说,我当时并不知道软件测试可以被独立出来成为一个职业。
        我就读的本科学校也是一所名牌学校,属于全国仅有的四所部级学校之一。但不得不说,那里确实是学文的好去处,对于我们学计算机专业的,如果学生自己不努力学习知识,单是靠学校安排的老师和课程来“喂养”自己的话,那毕业之后就会发现自己跟北理、北航等工科院校出来的学生有着巨大的差距,计算机基础不是那么扎实,在学校里也没那么多项目实践的机会,要知道,这对于计算机这类实践性极强的学科可是致命的。待毕业时,挤入大型人才招聘会场地后,就会“望职位而兴叹”。
        中国各个高校的本科课程基本都是相同的,无非是数据结构,数据库,编译原理,操作系统,软件工程等计算机核心课程再配以该高校的一些特色选修课程。而其中,唯一能让我有机会接触软件测试基础理论的课程就是软件工程,因为那教材里介绍了一些软件测试的重要性和一些基本术语,比如白盒测试黑盒测试,ß测试等。然而,当时学习没主动性,就靠老师“喂”知识的我确实也什么都没学到,直到现在,我也不理解,为什么那门课程让那位老师来教,为什么这么想呢?那位老师硕士毕业于计算机专业,但却博士毕业于中文专业。难道学校认为软件工程是唐诗宋词?课程效果可想而知,老师每节课都花费大量时间给我们灌输文学思想,谈谈东坡,论论李白,虽然从某种程度来说,宣传了我大中华的博大精深的古代文学吧,但就本课程而言是失败的,换言之,我那唯一的接触软件测试的机会被毁灭了。如果不是我研究生时期学的是软件测试方向的话,也许至今,我也不懂何为边界值测试,何为兼容性测试。当然,这都是后话了。
        学校是顶呱呱的名牌学校,但在里面学计算机实在是不受重视,学校的计算机系也太“年轻”,在此严峻形式下,系里80%的人都选择读研,20%保送本校的,5%保送外校的,也有很多人放弃保送本校本专业的机会加入考研大军中。最后的结果还不错,基本每个人都圆了自己的梦,而我呢,也以高过录取分数线30分的微弱优势被北航录取,经过几轮面试,被北航比较有名的计算机软件与理论方向录取,成为了一名主攻软件工程、软件测试、软件度量的硕士研究生。也就是从那天开始,我开始了与软件测试的不解之缘。


2. 初识“测试”
        我的研究生生活确实是我人生的转折点,北航的计算机专业还是不错的,这里有全国知名的计算机专家,有数目很多的国家计算机重点实验室,有很多国内外合作的计算机大型项目,研究生可以在导师的指导下参与到论文的编写,项目的需求设计与实现中,可以很好地锻炼个人的专业技能。
        在两年半的研究生学习中,我修了《软件测试》等课程,阅读了国内外大量关于软件测试的论文和书籍,学习了软件测试的基础知识,测试的基本流程,测试的过程模型等,也自己琢磨着如何将一些分析方法引入到软件测试中,更好地规范软件测试流程。我把自己的学习和研究成果总结为两篇论文,发表于《计算机工程与设计》和《计算机应用研究》杂志上。
        读研二的时候,我加入了一个课题组来参与软件测试过程管理工具的开发,通过这个项目的开发我了解了在企业内部的测试流程是什么样子的,了解了测试项目的启动、测试人员的分工、测试用例的编写、测试任务的定制、软件问题报告(SPR)的产生、SPR的分配、SPR的reopen ,close ,cancel状态转移等背景知识。
        在我自己看来,我对测试知道的只是皮毛,但对于很多不研究软件测试的同学来说,他们就会觉得我对测试已经很了解很熟悉了,毕竟接触了两年测试方面的书籍和测试项目的磨练。那时候,我并不知道我所掌握的测试知识将在我以后求职的过程中发挥很大的作用,直到后来,当我很顺利地进行着测试工程师职位的面试时,确实发现,两年的测试相关知识的积累使我应聘测试工程师时具有很大的优势,因为同等条件下,用人单位还是希望招进来一些已经具有一定测试背景和知识体系的人。的确,对于一个在此领域里是“零”的应聘者,你很难信誓旦旦地将你的潜力展现给面试官。

3. 熟识“测试”
        有一段时间,学校的课程不紧,我去一家世界500强企业的医疗软件部门面试实习生,他们看中了我的测试背景和我略懂一点CMM知识,我很顺利地成为了该部门测试组的实习生,这段实习经历虽然只有3个月,我却必须说受益匪浅。
        这个部门的结构很简单,也就是典型的那种软件开发部门的组织架构—开发组、测试组和文档组。作为一名测试组的实习生,我的日常工作就是对他们开发组开发的医疗软件进行黑盒测试,它们的系统是用java语言开发的,系统架构是基于J2EE的。这个医疗系统划分为好几个组件,有的组件结构是B/S的,有的组件结构是C/S的,我们这几个实习生就跟他们测试组的正式员工一起对这些组件执行功能测试。因为是名企,测试流程还是很规范的。在一个测试项目启动的时候,测试经理将制订出相应的测试计划,比如整个测试项目分哪些测试阶段进行,在每个测试阶段中,哪个软件模块由谁来执行,大概是多少测试用例,哪些比较容易哪些比较复杂,大概要花费多少时间来完成这项任务。当然,测试经理会和所有参与测试的人员举行一个会议来面对面地讨论一下这个测试计划,征求一下意见,看这个测试计划是否合理,然后可以根据会议上讨论的结果做相应的修改等。在随后的测试过程中,我们这些实习生和正式员工执行这些测试用例,当发现预期程序执行结果和实际执行结果不一致的时候,就在问题报告库中提一些具有恰当的严重级别的defect。
        因为是世界500强,经济实力还算雄厚,他们的测试工具是IBMRational系列产品,记录和管理测试用例的是Rational test manager,问题库的管理是用Rational ClearQuest,测试人员还可以通过Rational Soda for Word 来导入导出测试用例,这个工具提供了word或txt文件与test manager中template的转换,可以为测试人员创建和执行测试用例的操作提供便捷。工具中还提供了一些图形来度量开发人员修改defect的效率,以方便管理人员衡量和监督每个员工的工作情况。这里要说到的是,每个公司使用的测试工具都是不同的,很多小公司用excel表管理测试用例,这样就对测试用例的所属组件分类等操作造成一定难度,也容易造成测试用例的冗余等,不利于管理。但是一些功能强大,集成性好的测试工具又是十分昂贵的,一些公司是不愿意为此投入成本的。
        任何实习过程都不可能是没有收获的,在这个部门实习的几个月里,我懂得了测试的基本流程,并且参与了一部分测试用例的攥写工作,当然这是在我熟悉了整个系统的工作流程的前提下,能够设计出一些边界值检查、异常检测以及程序逻辑错误方面的测试用例。在设计新的测试用例的同时,我还会同时阅读和理解旧的测试用例,对一些不合理的地方进行修改,并去除冗余部分,保持测试用例的高质量性。
        测试工作是一项对交流能力要求很高的工作,经常需要和开发人员进行有效和及时的交流,测试人员这一特定的“找茬”工作性质,也是考验开发人员能力和素质的“武器”。
        有些开发人员对测试人员表现的有些不耐烦,不是很愿意承认自己的错误,除非你坚持地跟他面对面将问题重现;有的开发人员修改defect的速度很慢,可能会影响到测试进度;也有的开发人员不愿意测试人员提严重级别比较高的defect,因为这就代表着他开发的代码质量不高。当然,我列举出的情况是对测试人员心目中比较“难缠”的开发人员,至于一些积极配合测试人员迅速结束defect生命周期的开发人员,还是占多数的,呵呵。
        在这实习的过程中,我是不单单想学一些功能测试的,本想借此机会学一些压力测试性能测试知识,学会运用一些自动化测试工具,不过我的这个愿望没有实现。因为经理需要实习生就是让你来做一些正式员工觉得繁琐和简单重复的事情的,对于你这个“流水的兵”,人家是不愿意花时间和精力培养你,把主干工作托付给你这个呆不了太长时间的人的。当然,我们这几个实习生都也理解和明白。所以,我就利用在那的学习资源自己学了一丁点皮毛。
人嘛,总是要给自己创造学习的机会和环境。


4. 牵手“测试”
        我结束了几个月的实习生活,回到学校专心于毕业设计和论文,同时开展了“如火如荼”的“job hunting”生活。我了解自己的长处和劣势,鉴于自己的兴趣,我投递的计算机类职位全是“测试工程师”类别,在经历了一轮轮的笔试、面试以及漫长的等待煎熬,经历了对心理、体力、知识、耐性的反复考验和折磨后,我在2个月后拿到了我心仪的offer。下面叙述下我面试测试职位时的一些经历,希望能和大家一起分享下这类职位的面试过程,为大家更顺利地通过此类职位的面试关提供点讯息。
        从开始找工作以来,在chinahr,51job等人才招聘网站上投了很多简历,在校园招聘专场上也投过一些简历,但是拥有的笔试机会并不多,听人说,那些笔试名单结果的最后生成是那些网站对所投简历进行一些关键字筛选而得的。虽然有点不服气,也只好无奈地和自己喜欢的很多公司擦肩而过。所以,我觉得从某些程度上来说,找工作也是看缘分,有的时候并不是你不符合要求,而是你连和它接触的缘分都没有,大型校园招聘尤其如此。
        我没为找工作做太多准备,加之那些数据结构啊经典算法啊都差不多忘光了,在很短时间的临阵磨刀之后,我通过了几家国内知名IT业的笔试进入了face-to-face-interview的赛程中。因为想着我所求的职位都是技术岗位,应该对个人的技术方面或职业道德方面有所要求,其他方面,诸如衣着,应该不是最受关注的面试角度。因此,我就要求自己穿着大方利索,没在这方面上花费心思。
        我第一家面试的公司是国内知名的门户网站公司,第一轮的面试是一对一的,就是一个类似项目经理或leader的人单独面试一个求职者。在我被叫到名字后,我被带到了一个block的工作位上,面试我的人似乎是测试部门的一个经理,他看起来很nice,我在跟他打过招呼后,坐在他旁边的椅子上,他递给我一张纸,让我写回文数的算法,这个简单!我几下就写好了,递给他,他大略地看了下,继续第2个问题,他给出了在他们网站服务器上记录用户访问信息的文件格式,比如用户的访问时间,用户的下载歌曲信息等,让我统计某段时间内的用户访问情况。这个问题主要是考察如何在海量数据里根据数据的格式提炼出所需的数据信息并进行相关统计的。在我回答完这2个问题后,他问了我几个测试用例和场景设计的问题,问题一:你如何设计测试用例来测试qq视频?问题二:这有一支笔,你设计一下测试用例。我就自己能考虑到的范围和角度做了回答。他似乎对我整个过程的表现还比较满意,起身跟我握手后,告诉我将过几天给予答复,让我耐心等待。
        大概3天后,我接到了这家公司的电话,通知我参加第二轮面试,第二轮的面试形势估计是比较罕见的,简直就象超女的PK台,两个面试官同时面试两个应聘者,同样的问题让两人分别回答,无形中就造成一种对比的气氛,我认为他们采取这种形式是想考察应聘者的心理素质,想考察应聘者在面对竞争,面对压力时候的表现。他们基本问的都是一些开放性问题,基本就是那种“你的朋友怎么评价你啊?”“你觉得你在竞争这个职位时候的优势是什么”等问题。跟我同一轮面试的是一个清华的女硕士,我能感觉到那些面试官对她的简历就格外感兴趣,似乎也流露出对清华的学生刮目相看的感觉,确实从一定程度上也给我造成了一定的压力。而当听到我介绍说自己有测试项目的经验时,那女生也感觉到一定压力,所以她在回答面试官问题时,就专门强调自己虽然没有测试经验,但是有快速学习知识的能力。那种气氛让你感觉就象二选一的面试场合,所以,他们似乎就在观察我们在面对竞争,面对淘汰时如何来表现自我,挽救自我。不过,后来我在另一家公司的笔试考场遇见了那个女生,我们聊了会,发现我俩都拿到了那家公司的offer,看来我们当时猜测的二选一是错误的,可能有的组同时“晋级”了,有的组同时“全军覆没”了。
        后来,我又陆续接到了几家公司的面试通知,拿到了几个测试工程师职位的offer。在面试过程中,基本都会被问到自己的项目经验以及在简历上列出的skill,甚至一个很小的,可能自己在些简历的时候都没有经过深思熟虑的单词,都会被面试官“打破沙锅问到底”,一直问到你“无应以对”为止,彻底在短时间内将你有几斤几两看得透透的。除了就你的简历问问题外,他们也会就自己公司的实际工作情况问你一些问题,或者面试官自己准备一些别的问题旨在考察你如何思考和解决问题。比如当我面一家名企面到第3轮的时候,面我的部门经理就问过以下这样的问题“如果你是测试经理,你会如何规划你所管部门的测试流程并使之行之有效?”“现在有一个小区,里面种了很多树,你分配几个人去替你统计树的总数量,你如何做?”随之,我的答案大概就是划分区域,指定人去数,最后向我汇报结果等。她随之问道“那你这么做的风险有哪些,如何避免?”我的答案大概就是存在着人员数错的情况,存在“边界值”错误或冲突或遗漏等风险(她在间接考察测试思想)。其实大家都知道,作为一名测试人员,谨慎而周密的考虑是很重要的,这样你才能发现别人发现不了的问题。我个人认为这个测试经理就在间接考察我考虑问题的思维和周密度。
        其他公司的面试过程我就不一一列举了。总之,通过找工作的过程,我还有一点感悟,面试后你不必去想结果,因为你的感觉未必准,有的时候你侃侃而谈,未必能拿到offer;有时候你自我感觉表现的特不好,却可以意外被录取。不必去猜测面试官的心理并去特意迎合他来表现自己,依我的看法,就表现出你自己的本色,能被录取,说明你就是他们要找的合适人选,你就是那找对了“坑”的萝卜;被拒绝,说明你有某些特点和他们公司的工作性质啊,企业文化啊并不吻合,即使你通过伪装混进去了,以后也未必能工作的顺利和开心。
[续]
        我现在是一名测试工程师,我和“软件测试”的缘分还在继续,还会有更多的故事和大家分享,也祝所有有志从事软件测试行业的朋友都能圆梦。

        作者简介:薛丽,女,硕士毕业于北京航空航天大学计算机专业,研究方向为软件测试、软件过程度量、软件工程。毕业后加入IBM从事软件测试工作。

 


TAG:

 

评分:0

我来说两句

日历

« 2024-05-07  
   1234
567891011
12131415161718
19202122232425
262728293031 

数据统计

  • 访问量: 6421
  • 日志数: 14
  • 图片数: 1
  • 建立时间: 2012-07-13
  • 更新时间: 2015-02-13

RSS订阅

Open Toolbar