整合测试与质量的关系,建设高效测试团队

上一篇 / 下一篇  2008-09-10 16:24:20 / 个人分类:日志

 

整合测试与质量的关系,建设高效测试团队

(沈雪芳、谢敏、戴金龙)

本文版权归计算机世界,著作权归作者所有。任何转载和大幅引用,请务必征得作者同意。

1整合测试与质量的关系

在目前的软件行业氛围下,一提到软件质量,肯定有不少业内人士的第一反应是ISO、CMM、6σ之类的标准,进而反应出的词汇就是SQA [Software Quality Assurance(软件质量保证)]。在这样的氛围下,不少软件企业和机构都纷纷组建了自己SQA部门,并把提高质量的希望全部都寄托在SQA身上。这当然是好事,至少说明了质量意识的普遍觉醒;但要高层管理者清醒认识到“质量工作是由多个部门各司其职共同完成的”这似乎就很困难了。

这样的大环境造成不少企业和机构的软件质量保证部门与软件测试部门关系尴尬:究竟是让测试部门下属于质量保证部门,还是应该单列测试部门使其以独立、中立的姿态出现?另外,测试部门与质量保证部门的权力和职责分配如何把握,谁更有权在必要的时候对某个开发项目、某个开发人员出示“红牌”、“黄牌”,谁更应该对用户投诉的产品技术问题负更多不可推卸的责任?这表面看来是个权力之争,实质上反映出的是人们对于质量的认识存在着误区。为此,笔者打算从源头上来理顺这些关系。

质量,产品的内在品质;对于软件产品而言,质量还应包括软件过程的品质。那么,如何判断某软件产品是否是高质量的?目前广泛认可的标准是“软件产品能否较好地满足用户相关的各类需求”。然而,用户对软件的需求的往往包罗万象:如功能需求、性能需求、约束性需求、潜在需求、甚至包括相互冲突的需求以及技术上不可实现的需求等等,这就导致等软件产品生产出来再验证“产品是否满足用户需求” 容易成为一件引发供需双方争执的麻烦事,而且对于软件企业而言这种质量工作未免代价过高、风险太大,一旦查出严重问题,毫无补救措施。鉴于此,有必要进一步细化、具体化这项工作,并尽可能早地把这项工作融入到具体工程实践中来。目前业内解决这个问题的核心策略是控制软件工程的品质以及软件产品(包括中间产品)本身的品质。前者主要涉及企业在工程过程中选用什么样的质量体系以及如何监督标准的执行,后者主要涉及验证产品在各个阶段具体品质如何、有无偏离用户需求等等。或者更专业一些,前者称为SQA,后者称为SQC。(关于SQA以及SQC更清晰、规范的定义可以参考相应的标准化文件。本文考虑到通俗性暂略。)由此,我们可以看出,SQA、SQC这二者都是质量工作的范畴,甚至在某种意义上后者更贴近于质量工作本来的要义。那么,软件测试在软件质量工作中处应于一个什么样的位置呢?笔者认为软件测试应是SQC的核心内容和重要组成部分。缺少了软件测试,SQC余下的工作就成为无魂之躯,所谓“皮之不存,毛将焉附”。由此看来,目前沸沸扬扬、闪亮登场的CMM、6σ等等标准和体系,虽然被部分管理者顶礼膜拜,但充其量也只是SQA的一个组成部分,它们不能囊括质量工作的全部。相反,软件测试是SQC的核心,它更贴近质量工作本来的要义,理应受到更多的关注。

如果把软件质量工作范畴的全部外延定义为软件质量管理(SQM),那么,它天然具有两个基本要义,即软件质量保证(SQA)和软件质量控制(SQC)。SQA和SQC各司其职,相辅相成,统一于软件质量管理(SQM)。拿一部汽车来做比喻吧,质量控制(QC)就是所有那些告诉你汽车当前运动状态的仪器仪表;质量保证(QA),包括各类标准,是告诉你所有部件工作原理的用户手册;而质量管理(QM)则是你要追求的目标,比如你希望能平安、高速地驾驶汽车。可以看出,为了实现质量管理(QM)的目标,质量保证(QA)和质量控制(QC)都是不可或缺的部分。

2建设高效测试团队

既然测试工作是这么的重要,那么我们怎么来做好这件事情呢?俗话说“工欲善其事,必先利其器”。我们在具体深入实施测试技术之前,首先需要建立并维护一个高效的测试团队。在一个企业或机构内部,如果没有一个稳定的测试团队,要想测试活动不流于形式也难。然而即使是这么一个浅显的道理也并不是广为管理层所接受的。为数不少小型软件企业将测试作为产品面临发布时的一个小“插曲”,往往临时抽调几名程序员对产品的功能粗略测试一下即交付客户(甚至在进度和成本不足时首先砍掉这一块)。这种仓促完成的产品通常质量问题很多,企业的信誉度自然也很难上得去。他们进行着这样的“怪圈”循环:年复一年做着小项目,周而复始地做着这类有名无实的“软件测试”。企业效益却不见稳步增长,甚至在严峻的市场竞争中一蹶不振。为了规避这种情况的发生,我们首先应抛弃小企业惯常的思维模式,不计较一时一地之利益,立足长远,着手组建高效测试团队。

2.1招募测试人员

人是测试工作中最有价值也是最重要的资源,没有一个合格的、积极的测试小组,测试就不可能实现。然而,在软件开发产业中有一种非常普遍习惯,那就是让那些经验最少的新手、没有效率的开发者或不适合干其他工作的人去做测试工作。这绝对是一种目光短浅的行为,对一个系统进行有效的测试所需要的技能绝对不比进行软件开发需要的少,事实上,测试者将从职业生涯中获得极其广泛的经验,他们将遇到许多开发者不可能遇到的问题。特别地,测试团队负责人应该尽量谨慎地把其他团队淘汰的人吸收到测试团队中。一般,这类成员给整个团队带来负反馈。当然,有些没有在其他团队中做出成绩的人在测试团队中做出很大成绩,但是这样的人总是个别,并不多见。

那么,测试团队需要招募什么样的成员呢?这里,笔者总结了以下几点:

首先,测试人员最好能具有如下部分品质:沟通能力、移情能力、自信心、外交能力、迁移能力以及怀疑精神。

沟通能力:一名理想的测试者必须能够同测试涉及到的所有人进行沟通,具有与技术(开发者)和非技术人员(客户,管理人员)的进行交流的能力。

移情能力:和系统开发有关的所有人员都处在一种既关心又担心的状态之中。用户担心将来使用一个不符合自己要求的系统,开发者则担心由于系统要求不正确而使他不得不重新开发整个系统,管理部门则担心这个系统突然崩溃而使它的声誉受损。测试者必须和每一类人打交道,因此需要测试小组的成员对他们每个人都具有足够的理解和同情,将测试人员与相关人员之间的冲突和对抗减少到最低程度。

自信心: 开发者指责测试者测试结果有误甚至反唇相讥是常有的事,测试者必须对自己的劳动成果有足够的自信心。如果对开发者的言语太过刻意的话,就不能完成什么更多的事情了。

外交能力:机智老练的外交手法有助于维护企业内部人与人之间的关系,测试者在告诉开发者他的软件有错误时,也同样需要一定的外交手腕。如果采取的方法过于强硬或过于软弱,都会让测试工作的意义受损。

迁移能力:一个理想的测试者应该有能力将以前曾经遇到过的类似的错误从记忆深处挖掘出来,并迁移到当前测试活动中。这一能力在测试过程中的价值是无法衡量的。因为许多新出现的问题和我们已经发现的问题相差无几。

怀疑精神:对任何可能出错的地方都亲自测试一番。不听信开发人员毫无意义的保证。坚持以事实说法的工作作风。

需要说明的是并不是测试人员需要具备以上列出的全部品质。笔者认为,能具备两到三项就很不错了。人无完人,关键是用其所长,避其所短。测试团队应该造就这样的氛围,测试组成员应自发地相互学习,相互交流,日积月累达到相互提高的境界。

其次,测试组成员应具备良好的技术能力或技术学习能力。由于测试组各个岗位需要的技能各有差异,所要掌握的测试技术也就千差万别。比如测试管理人员需要对测试管理工作的内容及相关辅助工具的使用胸有成竹;自动化测试人员需要对相关自动化测试工具炉火纯青;测试脚本撰写人员需要对脚本语言的领悟了然于胸;手工测试人员应对相关测试中最易发现问题的地方如数家珍;而测试团队负责人则必须既熟悉被测软件系统的概念模型、设计模型又要掌握开发过程中涉及到的相关开发工具,除此之外,测试经理还必须深度掌握测试流程的裁剪、测试计划的撰写、测试活动的组织与开展以及测试效果的评价等等必备的技能。

当然,新招募的测试人员不可能像上面说的那么理想。关键是他们是否热爱测试这项工作,对相关的工作内容是否感兴趣以及他们的学习能力如何。俗话说:“天才的第一声啼哭和白痴没有两样。”怎么做一个好的伯乐,发现卧槽的千里马,是一门很深的学问和艺术。

2.2测试团队制度建设

创建测试团队的第二步,就是搭建测试团队的制度。一个运作良好的部门,需要有完备的制度支撑。俗话说“没有规矩,不成方圆。”制度的建设可以规范测试团队的工作开展,以形成一个共同的工作目标。一颗好的树苗,如果没有外界的干涉、约束、引导,任其发展,可能长到后面树干都歪了。一个测试团队如果没有良好的制度约束,很有可能导致人心涣散,滋长负面的风气,团队成员情绪消极。测试团队制度的制定,需要团队成员的共同讨论,而不是测试团队负责人自己决定。测试团队的制度,可以考虑以下几个方面:

n        汇报制度 团队成员汇报本周工作情况及下周工作计划、遇到的问题以及需要提供的帮助,培养团队成员的汇报及计划习惯。

n        工作总结制度 成员每个阶段汇报上阶段工作经验和教训,并在部门例会上交流、分享经验及教训,避免同样的问题重复出现。

n        奖惩制度 对于贡献突出的成员予以奖励,对于业绩差的提出批评,有效的保持测试团队的工作热情。

n        测试件审核制度 对测试件进行审核,去粗存精,鼓励使用和提出改进,保证提交客户及公司领导的测试件质量。

n        会议制度 定期召开部门例会,讨论、解决工作中的问题,并提供部门内的学习平台。

制度的制定要体现公正客观的精神,同时要尽量做到人性化,务求实效,以正面鼓励为主,并且制度应该是可执行的。在制度执行过程中出现问题时,团队负责人要主动检讨,分析问题,主动承担责任。这样方能凝聚人心,使测试团队负责人具有领导魅力、感召力及威信。

关于成员业绩的考评,目前,已有不少软件企业推行给测试人员定级别的制度。对优秀的成员给予提升加薪的机会,对无所作为的成员不予以提升,对长期以来能力上不能胜任的或习惯性无视团队制度的予以降级或淘汰。这无疑是一个好的做法,但成员业绩的具体考评办法,建议尽量做到公正客观。切忌主观好恶导致的毫无理由的级别升迁。

2.3测试团队的分工

创建测试团队的第三步,就是进行测试团队的分工,明确工作职责。优秀的员工就像大雁,高效的测试团队好比雁群。

雁群是由多支有共同目标的大雁组成,在队伍中它们有明确的分工当队伍停下休息时它们中有负责觅食﹑照顾年幼或老龄的大雁﹑有负责雁群安全警戒的大雁﹑有的大雁则安静休息﹑调整体力。在飞行过程中它们大声嘶叫以相互鼓励从而通过共同扇动翅膀来形成气流,使队伍快速前飞。在雁群中有任何一只大雁受伤或生病而不能继续前飞,雁群中自动有两只大雁留下来守护照看受伤或生病的大雁直至它恢复或死亡然后它们再加入到新的队伍继续南飞直至目的地,这就是我们所说的真正团队精神。

因此,职责要按照便于执行和操作的原则来设计,分工要根据岗位和人员的特点来安排,对不同能力的成员进行分工,以求最大程度的发挥成员的特长。否则,团队合作的基本前提就会变得十分薄弱,必将耗费过多的沟通和协调的精力,事倍功半。

另外,对职责的明确,可以避免其他团队成员滥用测试团队成员。有时别人不能善待测试员,或者让测试员做其他严重超出职责的事情。如果测试团队负责人发现测试员遇到这样的困难或受到这样的对待时,应该为员工提供精神支持,告诉员工如何应对这类问题,并解决各种不公正待遇。

n        测试团队的职责描述的例子如下:

u      系统测试组织 包括,项目测试组的组建、测试任务分配等。

u      进行测试计划/设计/开发/执行工作

u      建立测试体系,完善测试方法论 包括,测试体系的搭建,研究测试方法、测试理论,并对研究成果进行沉淀、推广。

u      研究和实施测试工具 包括,研究测试工具的使用,跟踪业界流行的测试工具,并尝试使用测试工具来提高测试效率。

u      项目组测试工作指导,记录改进意见

u      软件开发质量抽检与评定 包括,通过各种手段对各个里程碑的产品质量进行抽检,并对抽检结果进行分析、评价。

n        测试团队的分工及对应的职责例子如下:

角色

职责

测试管理员

n      负责测试项目的管理;

n      测试过程问题的处理与反馈;

n      测试组织/计划;(含性能测试

n      测试过程状态报告。

测试设计员

n      描述测试需求,设计测试用例;

n      性能测试方案的设计;

n      测试环境搭建情况的检查;

n      测试脚本的审核。

测试执行员

n      根据需要开发测试脚本;

n      按照测试用例、测试脚本执行测试;

n      创建并维护测试工具环境;

n      项目测试工作指导。

测试监督与测量员

n      测试测量;

n      测试过程问题的汇总与反馈;

n      开发产品的质量抽检与评定。

2.4测试工作的流程建设

创建测试团队的第四步,就是进行测试团队工作流程的建设。测试团队工作流程,包括:测试过程、日常工作流程、团队内培训流程、突发任务处理流程等。部门职责的明确,团队成员的分工,它们着眼于局部,而测试团队工作流程,则着眼于团队全局。团队的工作流程的每个环节之间既要紧密,又要能够便于执行。因为日常工作流程、团队内培训流程、突发任务处理流程相对测试过程来说较简单,故不赘述。

通常来说,测试过程可以包括以下几方面:

计划测试-〉设计测试-〉执行测试-〉分析测试

注:“计划测试”环节中,包含对测试需求的描述。

 计划测试

 设计测试

 执行测试

 分析测试

注:在“计划测试”环节中,包含对测试需求的描述。

我们可以通过以下步骤来建立测试过程。

1.根据对公司现有测试状况的了解,及个人的测试经验,起草测试流程及相关的模板;

2.通过一到二个项目的实践,记录测试流程草稿中的问题及不足之处;

3.根据实施经验,完善测试测试流程,得到测试流程初稿,并起草相关的实施指南;

4.根据一个项目的实践,记录此次实践过程中的问题;

5.根据第二次实践记录,完善测试流程及相关的模板、指南、表格等

6.发布测试过程(含测试流程、模板、表格、指南)第一个版本。

通过上述方式,可以在公司内初步建立测试过程,并在实践中不断改进、完善。对于测试工作比较完善的公司,可以引进测试外包的机制。该测试外包,指测试团队独立于项目组运作,项目组将测试任务外包给测试团队进行。这样做的目的,可以充分发挥测试成员的技能、业务优势,并可对测试成员进行复用。因为在一般公司中,测试团队成员的工作任务很多,工作压力很大,如果每个项目都投入2个测试成员,一个6人的测试团队,最多就只能同时进行3个测试项目。而如果进行测试外包,那么可以根据项目测试工作量、进度要求、测试内容要求,对人员进行合理分配,可最大限度的对测试人员进行复用。

2.5团队成员的能力提升

创建测试团队的第五步,就是提高员工的能力。有了明确、合理的分工后,需要针对这些分工对团队成员进行有意识的指引,提升团队成员的技能。测试团队负责人需要负起提高员工能力的责任。只有一个懂得不断充实自我、提高自我能力的学习型团队,才能在发展的社会创造出更多的“奇迹”。因此,高效的测试团队,要不断学习,提高团队成员自身的能力,从而提高测试团队整体的能力。

测试团队成员能力的提高,包括三方面:

1  积累测试人员的专业领域知识,提高业务能力

随着测试人员对制约产品设计的外部因素、用户如何使用(或将使用)类似产品、什么样的问题对他们很重要、竞争对手如何解决这些问题、这个行业的背景、这个行业的业务包括什么等了解的更多,他们工作的有效性会显著提高。

可以通过以下方式来积累测试人员真正的专业领域知识,提高他们的业务能力:

u      阅读该行业的杂志和书籍

u      与公司该行业的业务分析员都交流,尝试从业务的角度去看待系统

u      在客户现场工作。比如,可以参加客户的验收测试、参与对客户进行的培训等。

u      每周利用几小时的时间,解答公司客户提出的问题。通过这种办法,测试人员最终能够熟练解答问题,并且获得很多的信息,如客户的使用习惯等。

2  积累测试人员相关技术方面的专业知识,提高专业能力

由于技术不断变化,各种不同系统框架的流行,各平台间的交互越来越多。测试牵涉到的方方面面技术越来越多。系统软件与产品变得越来越复杂,为了能够适应这种变化,测试人员需要提高自身的技术技能,以便能够跟上技术更新的步伐。

3  综合能力提高

测试人员不仅仅需要提高自身的测试技能,掌握测试工具、开发工具、测试方法等,测试人员还需要提高自身各个方面的能力。例如对个人的管理能力、自我控制能力、沟通能力、协调能力、演讲能力、口头表达和文字表达能力。在这些能力中,写作能力尤为重要。测试人员的工作在很大程度上要撰写报告等以劝说他们做事情。报告写的越好,报告产生的作用越大。测试产生的效用就越大。

2.6测试团队的文化建设

创建测试团队的第六步,就是建设测试团队的文化。俗话说:态度决定人生的成功高度,而团队文化就像是个人的“态度”,它决定了团队效力是否1+1>2。如果测试团队没有一个很好的团队文化,测试团队内部必然会产生内耗,团队整体上成为一盘散沙。

世界上最伟大的橄榄球教练文斯·隆巴迪在谈起成功球队的特征时说:从基础教起,每个队员职责明确、球艺高超;懂得与别人配合,从整体出发打球,决不能出个人风头,违反纪律;全队拧成一股绳,相互关心,相互热爱,恪尽职守。这就是成功的团队文化。它具备了以下特征:目标明确、职责清晰、团结协作、密切配合、相互关心、有共同的价值观。

测试团队文化建设可以借鉴隆巴迪的经验,首先明确共同的目标。例如,在两年内,测试团队能够对外输出测试服务,成为公司的一个业务部门;或者保证本单位的产品质量能将客户满意度提升到一个档次;或者更具体些,将产品的错误、缺陷控制在某个水平上。其次,团队内部还要建立一个良好的沟通渠道与反馈机制。事实证明,顺畅、平等的沟通能及时规避团队内部的摩擦,收集到更好的测试建议和方案。再次,团队内不应有官僚作风存在,不搞小圈子。内部批评时尽量做到对事不对人;团队发生重大失误或错误时,团队负责人应主动承担责任,做自我检讨,不推脱责任。最后,测试团队内部应培养一定程度的友谊关系。适当开展一些集体活动:可以是每天一次短暂的下午茶(如Coffee Break),也可以是测试团队的一次户外远足或文娱活动等等。

以上我们讨论了测试团队的文化建设。文化是一种长期习惯的积淀。测试团队负责人需要首先清醒认识到测试团队需要哪些好的习惯,并且身体力行,持之以恒、潜移默化地将测试团队文化的精神传承给每位测试团队的成员,使得团队逐渐凝成一股强大的精神力量。

3结论与总结

以上我们对如何理顺测试与质量的关系、如何建设高效的测试团队这两个问题做了一些初步的探讨,澄清了业内对软件测试的一些模糊认识。然而,创建并维护一个高效的测试团队是一项长期的、艰苦的工作。这项工作对企业机构而言,虽然短期效益并不明显,但它对提高产品质量、提升单位信誉、促进企业长足发展而言,绝对是很有意义的事情,它也是目前软件企业走向规模化经营的必经途径。在众多的中长期投资中,建设和培养一支高效的团队将成为企业最佳的投资之一。



TAG: 日志

引用 删除 朱悠悠   /   2009-03-17 13:35:48
carry1986的个人空间 引用 删除 carry1986   /   2008-10-20 14:02:51
写的不错,学习管理方法.谢谢
 

评分:0

我来说两句

Open Toolbar