51Testing专题采访:如何改进软件测试流程
茹炳晟

个人简介

茹炳晟,男,毕业于上海交通大学,获硕士学位,现任惠普软件上海研发中心测试架构师,具有7年软件测试经验和3年开发经验,历任测试技术主管、高级测试工程师等职位,具有丰富的测试框架设计与自动化测试经验。曾负责无线路由产品的整体自动化测试方案、金融平台产品SDK测试框架设计、系统开发平台的白盒测试方案、DSP平台自动化测试方案、轨道交通安全软件平台测试、大规模产品链的自动化部署和多个大型Web项目的自动化功能测试与性能测试。

了解测试流程

51Testing:最近主要在从事哪方面的工作?

茹炳晟:目前我在HP主要负责软件产品的GUI自动化测试方案设计、产品链的全自动化部署方案设计和API层面灰盒测试框架的设计与开发,同时为HP软件性能测试中心提供自动化测试相关的技术支持并负责两个新产品的性能测试工作。

51Testing:测试工作从产品立项后开始介入,贯穿于软件产品的整个生命周期。那么在整个软件测试过程中,需要关注哪些要素呢?结合一个具体例子说明

茹炳晟:这个问题非常大,可以说几乎涉及了软件测试的方方面面。同时对于不同类型的被测软件或系统,在生命周期的不同阶段,需要关注的点又都不尽相同。显然,对于一个嵌入式应用、一个WEB应用和一个开发平台SDK,虽说三者的整个生命周期阶段相类似,但是具体的测试方法和技术、管理关注点差别非常大。这里只能以一个相对正规并且具有一定规模的软件项目为例,简单笼统地罗列一下。[查看原文]

51Testing:软件测试的一般流程是什么?各阶段的任务和目标分别是什么?

茹炳晟:正如前面提到的测试将从产品立项后开始介入,贯穿于软件产品的整个生命周期,我们首先必须明确地认识到软件测试是一个持续进行的过程,而不是一个阶段。通常来讲软件测试一般会经历以下几个主要过程:

需求分析:主要包括软件功能需求分析、软件测试需求分析,测试技术需求分析,测试环境需求分析、测试资源需求分析等。可以说成功的需求分析是整个项目成败的关键因素。站在测试人员的角度,软件功能需求分析是要让测试工程师们搞清楚软件具有哪些功能,最终用户将以什么样的行为来使用被测软件,这是后面开展系统测试活动的基础......

测试计划:是指导整个测试项目的纲领性文件,是成功测试的前提和必要条件,测试计划一般由测试项目经理和测试架构师一起编写,属于项目的正式文档,需要通过多部门评审以及需要纳入版本管理......[查看原文]

51Testing:是否大公司的测试流程都是好的、完善的测试流程?如何合理的制定软件测试流程?

茹炳晟:在讨论这个问题前,想先谈论一下我对流程的理解。流程是在某个特定上下文环境下固化下来的行事规则与经验,因为曾经已经取得过成功,并且也吸取了一定的经验教训以规避失败,因此在相同的情况下,流程会带来更大的成功概率,并形成权威,使后来者有效应用先前的成功经验,少走弯路提高效率。适合的流程能够指导人们正确地完成各种开发活动;而不合适的流程,则会把软件项目推入无底深渊。但是,就流程本身而言,我个人认为并没无好坏优劣之分,或者说衡量流程的度量指标不应该是好与不好,而应该是流程对当前组织或者项目的适用程度,只有真正适合自己团队的测试流程才是好的测试流程。有些重量级的流程固然有其权威和周全的考虑,但是对于小规模团队或者敏捷团队却完全不适用,靠行政手段强行推广只会适得其反,而有些看似很粗超简陋的流程却非常适合一些极具创新的研究型团队。所以说流程不能被神话,更不能被滥用。世界上不存在放之四海而皆准的流程,而只有因地制宜、因人制宜地选择合适的流程,并在执行过程中不断地加以改进和完善,才有可能取得成功。具体到测试流程的制定和完善,我想这也是一个非常庞大的话题,这里我就想简单提几条我个人认为比较好的最佳实践吧。

1、切记,不要盲目拷贝大公司的测试流程,而是要吸取他们的经验教训,取其精华去其糟粕,这样的测试流程对于我们来说才是有价值的,有改进意义的。

2、测试流程需要尽可能使得被测系统尽早地,频繁地进行测试,使问题在项目的早期尽可能多的暴露。

3、流程需要能够有效加强各个团队间的交流与沟通,让每个项目干系人都有明确的渠道了解项目的测试状态和完成情况。

4、流程上保证整个测试活动必须被计划,被控制,并且必须提供必要的时间与资源......[查看原文]

改进测试流程

51Testing:你们团队是如何进行软件测试的?请介绍下你们公司的测试流程。

茹炳晟:HP的软件部门比较庞大,涉及的产品线也极其丰富,做测试的同学可能最熟悉的要属HP的Quick Test Professional、LoadRunner、Unified FunctionalTesting和Application Lifecycle Management(前身是Quality Center/Test Director)。其实这些仅仅是HP软件产品线的一部分。其他还有Service Anywhere,Business Service Management,IT Service Management,Autonomy等等,而且很多软件产品之间可以相互集成以形成一整套行业解决方案。另外,绝大多数产品的研发团队都是跨国分布的,比如需求和设计在美国,架构设计在以色列,开发在中国,测试在印度,所以要想完整介绍整个软件研发团队的流程好像不太现实,这里只想重点聊一下我们在测试方法和流程上的最佳实践。[查看原文]

51Testing:针对这一流程,您觉得还有哪些地方是需要改进的呢?

茹炳晟:虽然我们目前的流程大而全,可以说包含了软件项目的各个方面,但是其中的问题也是有很多的。

1、某些产品由于有将近10年的生命周期,对应的研发和发布流程极其繁琐,用俗话来讲就是很“重”,当然这其中难免有很多历史遗留的原因,其中包括CMMI,跨国开发的要求等等,但是我个人的观点是很有必要根据当前的组织架构与分布重构一些已经不再适用的流程。

2、某些未纳入管理信息系统的流程的执行力不足,缺乏对流程本身的监管机制。

3、某些流程全盘照搬公司的海外的版本,在国内明显水土不服,不仅没有起到期望的规范作用,反而引入了很多负面的东西。

4、流程的执行高度程序化,一线的工程师对已实施的流程提出改进建议到具体实施的时间周期很长,很大程度降低了流程干系人对流程改进的积极性。

51Testing:依据您的经历,您认为测试流程改进遇到的最大阻力是什么?您是如何克服的?

茹炳晟:其实在测试流程改进过程中会遇到的方方面面的阻碍相当多,但我个人认为归根到底的阻力还是来自人。人基于惯性思维往往都会不自觉地抵触变革。可能那些在企业中积极地推进过流程改进的人都可能遇到过下面的情形:公司大张旗鼓地进行流程改进,但最终的结果只是管理人员费尽心力的进行了一番流程的梳理,然后被束之高阁,根本没有机会顺利推行,即使使用了行政手段强制推行,最后也会发现没有带来任何实际效果。所以我始终坚持不要为了流程改进而去改进,而是要从现行流程的实际情况出发,识别出现行流程执行过程中的不足之处以及大家在流程执行中的痛苦点,抱着解决现有问题的态度,有针对性地改进现有流程,并做好新流程的积极宣传和推广,才能使流程的使用者,也就是人从主观上接受这些变更带来更大便利和价值,这样流程的改进才可能真正发挥作用。忽略问题的本质,忽略人,忽略他们可能带来的阻力,流程改进注定会以失败告终。当然在流程改进的过程中,我们也要避免唯流程论的思想,避免过程至上,奉流程为教条的极端思想,理想的状态应该是以流程为指导,重视流程,但不拘于流程,让流程服从于软件质量、效率以及业务目标。另外还多说一点,我看到过一些企业在流程改进过程中,将新流程的执行与个人的年度考评等挂钩,采用关乎个人切身利益的行政手段强行推广新流程,固然流程的执行力提高了,但我认为这是很危险的做法。

51Testing:结合实际,具体说说软件测试流程改进的方法。

茹炳晟:好大的话题,要以简短的几句话来归纳回答可能超出了我的能力范围。在这里我推荐大家可以抽空阅读Tim Koomen和Martin Pol的Test Process Improvement: A Step-by-step Guide to Structured Testing一书,相信必定受益匪浅。

51Testing:在系统开发和测试过程中,会有各种可能导致系统发布延迟的风险,结合具体案例说说您是处理的,提出相应的解决办法。

茹炳晟:具体案例讲起来长篇大论的,在这里就不展开了,只是罗列一些我在工作中积累的解决或缓解方法吧:

1、实时把握项目健康状态,对于可能延误的风险要由心理上的预期,并根据延误的具体原因,制订相关的应对措施。比如,如果项目延误是由于需求的增加或变更,那么作为测试部门必须同时做好新需求的理解和新测试用例的设计和实现。如果延误是由于发现了重大的缺陷需要修复,测试部门就需要参与到该重大缺陷原因分析和修改评审中,从而评估影响范围,确定是否需要增加或者修改原有的测试用例,同时需要确定回归测试的范围。如果由于开发的延误导致被测软件版本的延误,就需要与项目经理确认整个交付的时间是否顺延,如果不顺延就需要从新评估测试资源和调整测试计划。[查看原文]

51Testing:为什么说测试流程需要不断的改进?完善的测试流程对软件测试的价值体现在哪里?

茹炳晟:测试流程改进是为实现测试团队长期成功和发展而进行的投资。测试流程改进能帮助摆脱软件项目常见的进度滞后和交付质量低下组成的恶性循环。测试流程改进的主要价值在于加强了测试过程中那些创造价值的步骤,并将那些不能增加价值的非必要步骤去除。众所周知,软件的质量是在构建软件的过程中形成的,而驱动整个软件构建过程的正式我们的流程,好的流程将会给组织在相同的投入带来下更大的价值,这将体现在精益的质量文化,最佳实践的集中体现和组织能力的持续改进等多个方面。最后套用朱少民先生的一句话来结束这个话题:“制胜之道:三流员工、二流管理、一流流程”。

51Testing:给刚刚从测试工程师晋升为管理人员的测试管理者一些建议吧。

茹炳晟:建议谈不上,只是个人的一些看法:

1、测试管理者需要做到管理与技术并重。作为测试管理者,必须具备扎实的技术功底,同时具有良好的沟通协调能力。目前国内的很多小的测试团队技术实力偏弱,这就需要测试管理人员在测试策略等大方向的把握能力。

2、在团队相对成熟的情况下,测试管理者不要管的太细,大方向把握好了,大局观有了,剩下的就应该放手让大家去做。这样一方面表达了你对下属的信任,另一方面能够充分发挥下属的主观能动性。

3、作为测试管理者,必须勇于担当,敢于承担责任。如果做不到这一点,我个人认为就不是一个合格的管理者。

4、在软件质量等原则性问题上,能够做到坚持自己的主见,敢于坚持原则。

5、就测试项目而言,能够较好地把握软件质量和进度压力的平衡。

6、做好团队氛围建设,创建积极的、对测试工作充满激情的团队,保持团队的交流,关心下属,共享成长的机会。