中国软件行业协会将在8月22日召开“软件测试和产业发展研讨会”,郑人杰与陈宏刚两位专家会前发表了独到的见解。

“如果你把软件测试完全放在后阶段,错过了发现构架设计和业务逻辑设计中存在严重问题的时机,到那时,要修复这些缺陷将很不方便,因为缺陷已经扩散到系统中去了,所以这样的错误将很难寻找和修复,代价更高,因为错误已经扩散了!”清华大学郑人杰教授指出。

郑人杰教授介绍说:“我在清华大学首次接触软件测试和软件外包是在20世纪80年代初期,项目的具体内容是一个通用的软件测试工具。那是一个基于FORTRAN的动态测试工具。”郑教授怀着强烈的责任感,和其他三位专家一道承担了这个项目。该项目后来圆满通过验收,被日本《读卖新闻》在头版高度评价为“富士通公司从中国清华大学进口了高质量的软件”。这应该是中国早期IT工作者在软件测试技术方面进行的软件外包的尝试,这份报纸也成为了郑人杰教授的“家珍”。

软件测试是软件质量保证

广义的软件测试和检验包括了软件生产全过程的测试,包括对用户需求、概要设计的测试,例如产品是否符合用户需求,是否符合用户的使用习惯;而不仅仅是一些人认为的从代码阶段才开始进行测试。所以,需求指标等等都需要进行检验,以确保在各个环节上产品质量都有一个体系作保证,俗称“一步三回头”。如同制造业企业有专门的质量检验部门,需要在各个工序和阶段使用各种手段、按照规格进行检验,这些都是发现问题的过程,正是这些手段保证了不合格的产品被降级使用,或者根本不能转到下一道工序。

郑人杰教授说:“我们还发现,一个产品是否在市场上成功,还和产品开始的市场定位、用户需求分析相关。任何一个环节出现问题,都会严重损害整个产品质量。所以,我们谈软件测试,应该在更高的高度认识这个问题。我们是在讨论如何在整个产品开发周期控制和保证产品的质量。”

在产品开发过程中每个环节都要采取相关的检测、控制手段(QC),这是软件检测例行的工作。检测管理负责人需要回答下列问题:软件测试人员所采用的检测手段是否充分、步骤是否合理、是否必要和高效、检验人员技术是否达标,质量管理者终要向企业高管理者负责,这保证了企业的测试手段是充分必要的,这是我们经常说的质量保证(QA)。

第三方评测和软件测试的区别

可以看到,软件测试是在企业内部的质量控制和保证体系,而不是第三方软件评测。

评测是公正的机构对软件产品功能和性能等的证实,为了评价产品功能而测试,目的不是为了发现和定位软件内部的问题,对软件进行压力考验。郑人杰教授认为,我们不能把软件企业的质量控制寄托在成品的一次评审上面。

而软件测试正是为了检验开发过程中的错误而检测,它可能延续到用户购买试用,或者买软件之后,用户使用过程中发现问题以后反馈到开发商,这些都属于软件测试范畴,由此可见它与评测的区别。

软件测试的V模型

 

根据图示的V模型,测试一般采用两种方法:

第一,在代码完成后,对单元进行测试,然后有集成测试、验收测试等等,相当于对零件、部件和整机都分别进行检测。

第二种方法是,在概要设计、详细设计和编码每个步骤都要进行检测。尽量把问题及时发现、及时消灭。

如果问题不能及时被发现,这些隐含的问题也被带到下一个工序,正确的设计被编码,错误的设计也同时被编码。

郑人杰教授给开发人员的一个建议是:在工作的每个步骤都要考虑测试,千万不要认为,反正后有人测,后有人修正,形象地说,病情严重再去医院晚了。不断地意识到可能存在的问题,及时发现。自始至终开发人员都要有这个观念,才能成为成熟的软件工程师。

目前,作为计算机本科学生,可能没有选修软件测试课程,这样容易造成从业人员对于软件测试问题没有足够重视,或者没有足够的背景知识。但是由于IT技术发展迅猛,不能指望学校课程能够提供学生毕业以后五年十年的劳动技能。在软件测试、质量控制方面同样需要各方面人的关注,特别是企业界的关注。

CMM和ISO精髓

软件的质量标准比其他产品具有更多的复杂性,标准的量化、测试结果的取得、标准值范围等等都需要业内人士共同努力,加以完善。