近些年来,深圳共创力研发咨询花了大量时间和精力来研究软件测试流程,包括IPD-PTM,CMMI和敏捷测试, 撰写有关测试的书籍和论文,以及举办各种公开课及培训班来教会人们如何进行测试,(共创力咨询已在国内累计测试公开课达到100场以上),而所有这些都基本集中在测试人员的能力上,即软件测试工作本身。但是,测试人员所面临的最棘手的问题看起来却来源于如何与周围的人和谐相处,而这正是测试人员的强项所在。通过与上百个软件测试人员的交流,大部分测试人员的绩效不高,并不是技术问题,而是需求、管理流程、开发的代码质量、管理者是否重视等等。因此,除了测试技术本身, 测试管理中的"人际挑战"也是非常让测试管理者疾首的问题, 归纳起来,主要有以下十大挑战:
l 挑战 1 学会如何说不(评价类别:信任测试人员的测试结果和意见)
软件测试人员面临的最大挑战是如何告诉开发人员和客户软件存在质量问题、问题的具体信息、软件的当前状态、以及他们关于如何解决问题的意见和建议。糟糕的是,在报告坏消息时,测试人员一般都会成为大家的“敌人”。解决这个问题的方法是事先明确定义测试人员的角色和责任,定义测试结果应该如何报告给开发人员和客户,以及如何描述系统缺陷,如何提出合理建议以改进系统性能等等。
l 挑战 2 解决两难问题(评价类别:对可接受的质量级别达成一致)
测试人员经常会在软件质量问题上面临两难问题,一方面,如果他们报告说软件的质量不符合要求,则会被指责拖延的产品的发展计划;另一方面,如果他们认为产品质量过关,可以投产,一旦产品在使用过程中出了问题,他们又会被指责没能及时发现问题——失职。解决这个问题的最佳方法是明确地定义和区分开发人员和测试人员对软件质量和系统可靠性各自应该承担的责任。
l 挑战 3 满足不断变化的需求(评价类别:建立测试标准)
这项挑战是有关变更管理的。多数情况下,我们无法保证在项目启动时就拿到完整而准确的产品需求,它会随着项目的进行而不断发生变化。这就意味着测试人员要尽力“打移动靶”来满足变化的需求。同时,软件测试本身的技术环境也可能随着项目的进展而发生变化,这就要求测试人员要不断修正测试标准来适应各种变化。除非测试标准和测试计划总能够随着需求的变化及时更新,否则测试人员就可能“瞄准错误的靶子”,用过时的标准来测试最新的系统,结果只能是白费时间
l 挑战 4 测试“扔过墙的”的软件(评价类别:开发人员与测试人员的沟通)
通常测试人员与开发人员之间几乎没有任何交流,开发人员完成开发以后,将软件“扔过墙去”,供测试人员进行测试;当测试结束时,测试人员又会将结果“扔回墙那边”,要求开发人员解决测试发现的问题。战胜挑战 4 就意味着测试人员必须与开发人员直接交流,而非“住在墙两边,老死不相往来”。从项目开始就建立起来的有效而持续的交流实际上对“墙”两边的开发人员和测试人员都有利。
l 挑战 5 分配测试时间(评价类别:为测试制定计划和预算)
软件测试人员经常会因为他们被定位于推迟软件投产和上市的位置而承受很大压力。在最初制定的项目计划中确实为测试分配了的时间,但开发人员总是为满足额外的需求而将这些时间用的所剩无几。而且测试工作也总是没有足够的人手来做。解决的方法是让测试人员也参与制定项目计划,同时要将需要测试的各个部分划分好优先级,以确保即使时间紧迫,那些针对最重要部分的测试也可以正常进行。
l 挑战 6 与客户保持交流(评价类别:与客户和用户的互动)
正确因对这个挑战需要首先确定客户和终端用户,并对他们进行区分。客户对软件测试的兴趣来源于他们是软件的购买者,是整个软件开发的资金来源;终端用户的兴趣则源于他们是软件的最终用户。出于不同的目的,他们的兴趣所在是大不相同的。客户着重于软件可以满足产品目标、支持所需的功能;而终端用户则对软件的可用性和易用性更为关心。软件测试人员应该尽可能了解客户和终端用户的情况,鼓励他们参与软件的开发和测试,并将这种交流很好地保持下去。
l 挑战 7 使管理人员了解测试(评价类别:管理介入软件测试)
信息系统的经理们对测试几乎从来不感兴趣,认为测试是那种不得不做、却没有任何创造性和不值得花精力去做的事情。在某些企业中,员工被派去做测试简直就是一种惩罚。花在开发和测试上的时间、以及测试人员与开发人员收入水平的差距都说明经理们的这种态度。但是,如果缺乏管理人员在时间和金钱上的投入,有效的管理测试是根本不可能实现的。一种最极端的情况是许多经理人将他们对测试的投入简化成一个字—钱,因为对他们而言任何没有投入的事情都只是说说 而已。
l 挑战 8 无工具测试(评价类别:测试工具)
从实践角度来看,测试不像是一个工程门类,倒更像一门手艺。人们对任何能想到的问题进行测试,大部分情况都会涉及大量的重复性劳动。有时候,即使软件测试工具是现成的,而且也被测试流程明确地要求使用,实际的测试工作仍然不使用这些工具。软件测试人员面临的挑战是在不使用工具的情况下,进行那些可能会涉及成千上万数据的测试。随着被测系统越来越庞大、越来越复杂、更新的速度越来越快,不使用测试工具就进行测试已经是不可能的了。
l 挑战 9 与开发人员保持良好关系(评价类别:建立开发人员和测试人员组成的项目团队)
在很多企业中,测试是一种“我们对他们“的精神斗争,而测试人员通常都会成的统一的项目团队,使成功和失败都不会只归咎于开发与测试之中的某一个,而是“有福同享,有难同当”。
l 挑战 10 获得软件测试培训(评价类别:软件测试培训)
测试人员通常没有接受过任何有关测试的培训。测试人员面临的挑战是在根本没学过如何测试的情况下进行测试。大部分测试人员都参加过软件开发流程的培训,而这里面涉及软件测试的通常只有开发流程结束时的一句话——“顺便提一下,完成开发以后就可以开始测试了”。从2010 年起深圳共创力咨询在国内为软件测试人员的通用技能建立了标准测试体系和相应的认证培训课程以前,我们甚至连一套基本的测试知识体系都没有,尽管有些个人对测试有些自然的想法,但测试工作需要系统的知识和技能。软件测试人员是培养出来的,绝不是天生的,因为测试的部训工作也是管理的挑战之一。
本文作者:杨学明介绍(转载请注明出处和作者)
杨学明,清华大学MBA,深圳市共创力企业管理咨询有限公司总经理,深圳市汇成研发管理咨询有限公司董事长,资深研发管理专家,国内首席研发管理专家,曾服务于华为,阿里巴巴等知名企业,杨老师先后在国内开设研发类公开课100多场,服务内训客户1000多家,为数百家企业提供了研发咨询服务,典型的客户如深圳迈瑞、华立仪表、步步高、英威腾、雷赛智能、埃斯顿、华工科技、中国科学院、电力科学研究院、中国工商银行、重邮信科、从兴电子、浙大网新、联迪商用等。近两年服务的客户如中电海康、网易、苏宁云商、烽火科技、29所、华为技术、中兴通讯、广联达、大唐电力、招商局、京信通信等,接受过杨学明老师咨询和培训的客户案例: