过程决定质量——清华郑人杰教授谈软件测试
来自:赛迪网-中国计算机报 作者:王宇
中国软件行业协会将在8月22日召开“软件测试和产业发展研讨会”,郑人杰与陈宏刚两位专家会前发表了独到的见解。
“如果你把软件测试完全放在最后阶段,就错过了发现构架设计和业务逻辑设计中存在严重问题的时机,到那时,要修复这些缺陷将很不方便,因为缺陷已经扩散到系统中去了,所以这样的错误将很难寻找和修复,代价更高,因为错误已经扩散了!”清华大学郑人杰教授指出。
郑人杰教授介绍说:“我在清华大学首次接触软件测试和软件外包是在20世纪80年代初期,项目的具体内容就是一个通用的软件测试工具。那是一个基于FORTRAN的动态测试工具。”郑教授怀着强烈的责任感,和其他三位专家一道承担了这个项目。该项目后来圆满通过验收,被日本《读卖新闻》在头版高度评价为“富士通公司从中国清华大学进口了高质量的软件”。这应该是中国早期IT工作者在软件测试技术方面进行的软件外包的尝试,这份报纸也成为了郑人杰教授的“家珍”。
软件测试就是软件质量保证
广义的软件测试和检验包括了软件生产全过程的测试,包括对用户需求、概要设计的测试,例如产品是否符合用户需求,是否符合用户的使用习惯;而不仅仅是一些人认为的从代码阶段才开始进行测试。所以,需求指标等等都需要进行检验,以确保在各个环节上产品质量都有一个体系作保证,俗称“一步三回头”。如同制造业企业有专门的质量检验部门,需要在各个工序和阶段使用各种手段、按照规格进行检验,这些都是发现问题的过程,正是这些手段保证了不合格的产品被降级使用,或者根本不能转到下一道工序。
郑人杰教授说:“我们还发现,一个产品是否在市场上成功,还和产品最开始的市场定位、用户需求分析相关。任何一个环节出现问题,都会严重损害整个产品质量。所以,我们谈软件测试,应该在更高的高度认识这个问题。我们是在讨论如何在整个产品开发周期控制和保证产品的质量。”
在产品开发过程中每个环节都要采取相关的检测、控制手段(QC),这是软件检测例行的工作。检测管理负责人需要回答下列问题:软件测试人员所采用的检测手段是否充分、步骤是否合理、是否必要和高效、检验人员技术是否达标,质量管理者最终要向企业最高管理者负责,这保证了企业的测试手段是充分必要的,这就是我们经常说的质量保证(QA)。
第三方评测和软件测试的区别
可以看到,软件测试是在企业内部的质量控制和保证体系,而不是第三方软件评测。
评测是公正的机构对软件产品功能和性能等的证实,为了评价产品功能而测试,目的不是为了发现和定位软件内部的问题,对软件进行压力考验。郑人杰教授认为,我们不能把软件企业的质量控制寄托在成品的一次评审上面。
而软件测试正是为了检验开发过程中的错误而检测,它可能延续到用户购买试用,或者买软件之后,用户使用过程中发现问题以后反馈到开发商,这些都属于软件测试范畴,由此可见它与评测的区别。
软件测试的V模型
根据图示的V模型,测试一般采用两种方法:
第一,在代码完成后,就对单元进行测试,然后有集成测试、验收测试等等,相当于对零件、部件和整机都分别进行检测。
第二种方法是,在概要设计、详细设计和编码每个步骤都要进行检测。尽量把问题及时发现、及时消灭。
如果问题不能及时被发现,这些隐含的问题也被带到下一个工序,正确的设计被编码,错误的设计也同时被编码。
郑人杰教授给开发人员的一个建议是:在工作的每个步骤都要考虑测试,千万不要认为,反正最后有人测,最后有人修正,形象地说,病情严重再去医院就晚了。不断地意识到可能存在的问题,及时发现。自始至终开发人员都要有这个观念,才能成为成熟的软件工程师。
目前,作为计算机本科学生,可能没有选修软件测试课程,这样容易造成从业人员对于软件测试问题没有足够重视,或者没有足够的背景知识。但是由于IT技术发展迅猛,不能指望学校课程能够提供学生毕业以后五年十年的劳动技能。在软件测试、质量控制方面同样需要各方面人的关注,特别是企业界的关注。
CMM和ISO精髓
软件的质量标准比其他产品具有更多的复杂性,标准的量化、测试结果的取得、标准值范围等等都需要业内人士共同努力,加以完善。
软件开发V模型示意图
但是软件产品质量标准的量化是一个世界性难题,标准不全面,难于量化,但是,它丝毫不损害这门应用学科的实际应用价值和企业为解决这个问题投入资金和精力的热情。为了解决这个问题,人们可以利用另外的办法来解决这个问题:从过程上解决,企业在开发产品的过程中要满足各种量化的质量保证手段,保证企业开发过程符合标准、有能力保证产品的质量(企业是成熟的,过程的合理性保证产品质量)。
所以,我们有ISO9000、CMM等等,都是从过程角度保证消费者利益得到保护。