如何招聘软件测试人员(1)
公司的招聘活动是否成功,很大程度上取决于面试官所采用的面试方式和考试题目。
每个经理最头疼的一项工作就是如何招聘优秀的员工。一个看似简单的招聘决定,也许会关系到一个小组或团队的命运,而从长远来说,项目或小组的命运也直接影响到公司的成败。
在招聘软件测试人员时,一些基本的要素。当最终的人员缺口确定后,主管经理必须列出符合该职位人选的必备条件,以此来考核那些希望进入软件测试领域的应聘者的资格和等级,并同时收集相关候选人资料。
从根本上说,聘任决定通常是一整套严格的面试程序运作之后的结果,但面试人员是如何进入测试领域的?他在此领域的学识有多深?是否具备项目管理的经验?他是如何谈论他的同事、主管和职员的?他提交的报告是全面且具洞察力,还是简单又不合语法?他是怎样完成专为面试人员所设计的测试题或谜题的?这些问题往往也很重要,它是从众多面试人员中选择最具资格的优秀人才的关键要素。
测试体系
通常,在常规性的面试问答(例如有关简历、教育及工作经历的基本问题)完成之后,我会着重考察他的测试知识和测试体系。对于管理层或其他高级职位,我还会提出下列问题:
- 什么是软件质量保证
- 测试组的价值在哪里?你是如何证明你的工作价值并且安排预算的?
- 和文档、技术支持等相比,测试组充当的是怎样的角色?
- 测试人员和用户之间应当具有怎样的交互性?为什么?
- 如何从本领域已发现的问题中学到教训?应当从中学些什么?
- 白盒和黑盒测试工具充当的是什么角色?
- 自动测试中会出现什么问题?如何处理这些问题?
- 测试程序员和测试组应当使用什么开发模块?
- 怎样使程序员对他们的代码建立易测性支持?
- 错误追踪系统有什么用?
对于如何进行测试,我并不希望得到唯一正确的答案。我只想知道这些面试者是否仔细考虑过这些问题,而且他的见解是否合公司的观点大体一致。
例如,上述问题就是专为那些将着眼点放在测试上、而非实施标准上的公司设计的。因此,通过上述问题的考核,成功面试者的答案应当让我确信,他将会非常适合于我们这个团队,决不只是抱着一些ISO 9000-3或者CMM之类的操作标准不放的人。
知识面的宽度
在考察完体系知识之后,还需要测评出面试者的知识面广度。尽管这些实践问题在一定程度上取决于应聘者所工作过的公司环境和应用领域,但下列问题仍然可以反映出面试者在某些方面的经验程度:
- 测试中最关键的问题是什么?
- 你是否完整地对某一个产品的某一部分作过测试?如何测试的?
- 进行过探索性的测试还是沿袭规范进行测试?
- 是否每个公司都应当用同一种方式来测试软件产品?
- 谈谈测试中自动操作的实用性以及规范的作用。
- 描述一个典型测试计划的各个部分,例如用于互动产品、数据库产品的工具,以及因果图表和数据流程图等等。
- 什么时候你应当将着重点放在数据的完整性上?
- 在过去的任务中,你遇到过有代表性的程序错误吗?
对于“是否每个公司都应当用同一种方式来测试软件产品”这一问题的回答,可以考察出面试者是否具有开明的态度,乐于接受新观点、新思维和其他人的不同意见,同时也能判断出他本人对此领域知识所了解的深度和广度。我个人认为,正确的答案应当是非常鲜明的——“不”,并且我希望能听到这样的声音:最关键的应用程序应该使用更严格的评测和流程管理,而不是像眼下盛行的那样,只满足于今天,明天再考虑升级的得过且过式应用程序。
此外,面试者也应该认识到,对待不同的应用程序问题,应当提倡使用不同的处理方法。例如,评测一个用COBOL编写、工作中需要用到大量数据库的财务软件时,就应该用一些不同的技巧。这些技巧绝对不会和测试字处理程序交互性大小的方法一样。同样,与众不同的面试者还应当谈论一些软件测试的不同范例,或者还可以谈谈业内人士对这些关键问题的不同观点。
例如,在黑盒问题上,James Bach定义了范围测试、重点测试、流程测试、用户测试、回归测试、基于风险的测试等7种不同的方法(Tripos: A Model to Support Heuristic Software Testing)。可是,根据我的测试经验,从帮助评测人员确定不同标准,以便查创建更有效的测试方法或方案为着眼点,在此目的下,我划分为下列9种方法: 范围测试、重点测试、基于风险的测试、随机测试、功能测试、用户测试以及安全测试。面试者不应当非常肯定回答说只有一个正确的分类法;而且应该表示认同: 殊途同归。测试中的不同的方法、不同的类别都是正确的。
在面试几位资深人士时,我非常希望听听他们对常见测试问题的看法,并且还想知道他们对自己说使用过的工具的看法和评价。我并不要寻求特别一致的意见,相反,我想确定这些面试者是否真正具有资深的、综合性的见解。例如,在测试数据库和说使用的测试工具时,面向数据的问题就非常适合于测试面试者的深浅程度。当然,还要根据面试者的技能类型和应用程序的类型,对测试题目做出适当的变动。比如,向非常专业的测试人员或测试经理,询问一些交互性的应用程序,例如与数据库和测试工具相关的游戏或字处理之类,是没有意义的。
项目管理
实践中,在面试管理层人员时,人们肯定会提出一些人员和项目管理方面的问题。同样,那些有可能录用的中高级测试人员,我也会使用同样的方法。因为随着工作资历的增长,测试人员会非常善于自我管理。分派了大型项目后,他们能够独立地规划出项目的规模、类型以及项目内多个任务的合理序列。有位名人曾经定义说:在某种程度上,任何知识工人都是主管,因为他们必须管理好自己的时间和资源。对于这一点,我深有体会。
下面是有关管理或者自我管理方面的问题:
- 在项目内部,你如何优化测试任务?
- 如何制订测试计划和日程安排?介绍几种自下而上、组织管理严密的方法。
- 应当在什么时候启动测试计划?
- 应当在什么时候开始测试?
- 对于能帮助你评估测试工作量大小的方法,你知道的有哪些?
- 如何粗略地估算出测试工作量的大小?
- 每位测试人员每周的工作量应当是多少小时?
- 如何管理你的员工?对加班,你有什么看法?
- 如何评估人员需求?
- 进度失败时,怎么办(如何处理项目任务)?
- 如何处理程序员之间的冲突?
- 如何判断产品测试到什么时候就算足够了?
人事管理
同样,下面这一部分主要内容也是针对管理层人员的。无论如何,我还要对测试组经理提出以下问题。我想,有意于管理层的面试者,或许能够从中得到些启示:
- 你希望的测试组经理应当具有什么样的性格?
- 你认为测试组经理应当扮演什么角色?和高层管理部门打交道时扮演什么角色?和公司其他技术组?和你的员工相处时?
- 同你刚才描述过的理想中的经理形象相比,你如何看待自己?
- 同你刚才描述过的理想中的测试组经理所应扮演的角色相比,你的工作风格怎样?你工作所采用的方式和你说描述的角色之间有什么不同?
- 你应当为测试组招聘哪些人?为什么?
- 在人力资源管理方面,考核和比较人员业绩的准绳是什么?
- 如何评定测试人员所应当具备的素质?
- 进度失败时,怎么办(如何处理相关项目人员)?
- 描述几例你曾处理过的人员冲突。
如果应聘者对理想中经理人的描述,和他本人或者他对自己的介绍所给我的印象差异太大,那就需要核实一下,这种差异究竟是一个危险的信号还是由于过于谦卑的原因。反之,如果两者没有什么差别,那么也不能立即判断说该人一向就很自负。因为面试过程中,应聘者肯定想竭力将自己放在显著的位置上,这不但是可能的,也很符合常理,只要他不是夸大其辞或者撒谎。最后要说的是,如果应聘者对于理想中经理人的描述根本不同于公司的期望,那我肯定怀疑他本人是否同本公司的企业文化相匹配,这样的人注定也很难入围。
No comments:
Post a Comment