UML软件工程组织


软件测试经验谈(1)
作者:肖睿 本文选自:51CMM 2002年12月19日

 

测试的目的和原则


测试概念的范畴

广义上讲,测试是指软件产品生存周期内所有的检查、评审和确认活动。如:设计评审、系统测试。

狭义上讲,测试是对软件产品质量的检验和评价。它一方面检查软件产品质量中存在的质量问题,同时对产品质量进行客观的评价。

测试的目的

简单地说,就是替用户受过,测试的最终目的是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给用户之前发现并改正。

具体地讲,测试一般要达到下列目标:

(1)确保产品完成了它所承诺或公布的功能,并且所有用户可以访问到的功能都有明确的书面说明——在某种意义上与ISO9001是同一种思想。

产品缺少明确的书面文档,是厂商一种短期行为的表现,也是一种不负责任的表现。所谓短期行为,是指缺少明确的书面文档既不利于产品最后的顺利交付,容易与用户发生矛盾,影响厂商的声誉和将来与用户的合作关系;同时也不利于产品的后期维护,也使厂商支出超额的用户培训和技术支持费用。从长期利益看,这是很不划算的。

当然,书面文档的编写和维护工作对于使用快速原型法(RAD)开发的项目是最为重要的、最为困难,也是最容易被忽略的。

最后,书面文档的不健全甚至不正确,也是测试工作中遇到的最大和最头痛的问题,它的直接后果是测试效率低下、测试目标不明确、测试范围不充分,从而导致最终测试的作用不能充分发挥、测试效果不理想。

(2)确保产品满足性能和效率的要求。使用起来系统运行效率低(性能低)、或用户界面不友好、用户操作不方便(效率低)的产品不能说是一个有竞争力的产品。

用户最关心的不是你的技术有多先进、功能有多强大,而是他能从这些技术、这些功能中得到多少好处。也就是说,用户关心的是他能从中取出多少,而不是你已经放进去多少。

(3)确保产品是健壮的和适应用户环境的。健壮性即稳定性,是产品质量的基本要求,尤其对于一个用于事务关键或时间关键的工作环境中。

另外就是不能假设用户的环境(某些项目可能除外)。

测试的原则---Good Enough

对于相对复杂的产品或系统来说,zero-bug是一种理想,good-enough是我们的原则。

Good-enough原则就是一种权衡投入/产出比的原则:不充分的测试是不负责任的;过分的测试是一种资源的浪费,同样也是一种不负责任的表现。我们的操作困难在于:如何界定什么样的测试是不充分的,什么样的测试是过分的。目前状况唯一可用的答案是:制定最低测试通过标准和测试内容,然后具体问题具体分析。

测试的规律——木桶原理和80-20原则

(1)木桶原理

在软件产品生产方面就是全面质量管理(TQM)的概念。产品质量的关键因素是分析、设计和实现,测试应该是融于其中的补充检查手段,其他管理、支持、甚至文化因素也会影响最终产品的质量。应该说,测试是提高产品质量的必要条件,也是提高产品质量最直接、最快捷的手段,但决不是一种根本手段。反过来说,如果将提高产品质量的砝码全部押在测试上,那将是一个恐怖而漫长的灾难。

(2)Bug的80-20原则。

一般情况下,在分析、设计、实现阶段的复审和测试工作能够发现和避免80%的Bug,而系统测试又能找出其余Bug中的80%,最后的5%的Bug可能只有在用户的大范围、长时间使用后才会曝露出来。因为测试只能够保证尽可能多地发现错误,无法保证能够发现所有的错误。


测试组织、测试实施


测试的任务和发展目标——质量

参与到监控产品生命周期中一切影响到质量的因素的工作中去。

目前测试的主要任务是负责产品的系统测试。

但实际上,因为单独的系统测试不能保证产品最终的质量,所以测试在部分项目中也应参与到集成测试和用户测试中。

另外,测试也承担了部分系统评测的任务和用户技术支持的任务。

测试将来的发展目标应是产品的质量保证中心,我们的任务只有两个字:"质量",测试也只对这两个字负责,并且将参与到监控产品生命周期中一切影响到质量的因素的工作中去。

测试的组织方式——小组

测试内部的个体分为测试人员和支持人员(管理人员属于支持人员)。

测试的工作实体(最小组织单位)是测试小组和支持小组,分别由小组长全权负责。小组长向测试主管负责。

测试小组根据测试项目或评测项目的需要临时组建,小组长也是临时指定。与项目组的最大区别是生命周期短,一般是2周到4个月。在系统测试期间或系统评测期间,测试组长是测试对外(主要是项目组)的唯一接口,对内完全负责组员的工作安排、工作检查和进度管理。

支持小组按照内部相关条例负责测试的后勤保障和日常管理工作,机构设置一般相对比较稳定。主要负责网络管理、数据备份、文档管理、设备管理和维护、员工内部培训、测试理论和技术应用、日常事务管理和检查等。

另外,测试对于每一个重要的产品方向,均设置1-3个人长期研究和跟踪竞争对手的产品特征、性能、优缺点等。在有产品测试时,指导或参加测试(但不一定作为测试组长),在没有产品测试时,进行产品研究,并负责维护和完善测试设计。目前希望在需求分析阶段多多参与。

测试的运作方式——制度化并形成应用

主要介绍一下项目组关心的系统测试流程:

1、项目组提交系统测试申请给测试指定帐号。由专人检查文档格式和完备性。

2、检查合格后交给该产品对应方向的研究人员,评价其内容的有效性和真实性。

3、检查合格后由测试主管审查并通过,成立测试组,指定测试组长(但暂时没有组员)。

4、测试组长根据该产品的申请报告、测试设计和以往测试数据,制定测试方案。

5、测试主管审核通过测试方案后,根据测试方案指定测试组成员,并由支持组完成其他支持任务(如:设备的配备、测试数据库的建立、网络权限的修改…)。



版权所有:UML软件工程组织