回忆之城
生命在于折腾
posts - 575,comments - 9,trackbacks - 0

Bug“指挥棒”
        一个优秀软件产品的成功,除了其先进的技术含量之外,产品开发过程的有序和有效科学的管理也是另一个不可或缺的重要因素。微软的产品开发基本上遵循一个完整的开发周期,其间包括规划阶段、开发阶段、测试阶段(也叫稳定化阶段)和产品发送/出品四个阶段。

        在软件开发过程中,开发人员的作用不言而喻,其实,真正保证软件项目高质量地如期完成的不仅有开发人员,而且还有测试人员。在一切都不确定的软件开发过程中,测试人员的“Bug指挥棒”来让大家什么时候知道该表现,什么时候知道该退后一点,正是微软将软件开发过程带向高潮的不二法则!

测试组与开发组并驾齐驱
        对于一个具体的软件产品的开发过程来说,测试与软件成本的关系是,发现产品中存在的问题越早,开发费用越低,产品质量越高,软件发布后维护费用越低。 
        具体来说,测试的具体任务包括五个方面:首先,试图在产品开发过程中找出所有的BUG;其次,系统、深入、广泛的测试以保证质量;第三,既测代码,也测设计;第四,关心产品的规格、进度、资源以及产品开发后期的任何变化;最后,负责最终的发布认可。

        在开发过程中,开发人员很可能会偶尔偏离了事实的需要,暂时忘记了什么才是产品最该有的功能,把他们拉回原定轨道的正是测试工程师。测试人员的职责是配合整个项目组,保证按照预定的时间表完成预定设计目标;独立地完成测试任务;定期给出测试报告,包括BUG趋势、测试的覆盖面等等。测试人员的工作是一项具有整体性、持续性的软件开发活动中的一环,它是产品质量的重要保证。

软件测试的阶段性
        在微软产品开发的规划阶段,测试人员应当研究规格说明,编写测试计划;在开发阶段,测试人员则开始设计测试用例,开发自动测试工具和程序,熟悉必需的环境、工具、软件和硬件,不断地丰富测试用例,直到达到CC(代码完成)里程碑。此时的软件可以进行一个整体测试,用户界面虽不完美但能工作,还可能有很多明显的BUG。

        进入开发周期的第三阶段,测试人员大显身手,展开大规模的测试,如系统级整体测试,交互性和深层测试,这个事后的测试人员应当对新增的功能说“不”,直到达到Bata测试里程碑,达到这个里程碑,意味者所有的Beta致命问题已经被修正和关闭,所有计划的功能都已经在软件中并能工作,产品稳定,可以供用户试用,大部分界面还可以,尽管可能只是一部分,但已经有了在线帮助,可能还有用户手册,即使是发布了也不会引起负面的影响。

秘密武器:测试用例和测试计划
        总之,微软测试的精髓是:基于产品规划、产品设计规格的测试计划;系统可重用的测试用例;以问题(BUG)发现和跟踪为核心的测试活动;独立的测试人员;与整个项目配合的基于里程碑的软件测试周期。而基于产品规划、产品设计规格的测试计划和系统可重用的测试用例则是微软的“秘密武器”。

        在微软,测试计划是帮助测试人员管理测试项目和发现BUG的重要工具,是纲领性文件。测试计划明确了项目的测试任务、测试内容清单,这些内容不能只存在于测试人员的脑海里,而必须被项目经理、开发经理所了解,测试计划必须增强测试任务和测试实施过程的沟通,具有指导性。测试计划还必须提供组织管理测试项目的框架结构,帮助控制进度。测试计划涉及的范围应当有产品概述、测试策略、测试的方法学、测试区域、测试的配置(软件环境、硬件环境、网络环境)、测试周期(与项目的里程碑配合)、测试资源的规划、风险分析和案例等。

        测试人员设计测试用例时应当遵循以下原则:在人员变化和新项目中能够重用;能够分类; 测试的内容不重复;保存在测试用例的数据库中;在项目进行过程中可不断增强。

        设计测试用例时的一些通常考虑“点”是:根据产品规格测试基本功能;设计普通用户的使用方案;设计稀有或特殊的使用方案;与系统其他组成部分的配合(如FAX和上网可能都要用到调制解调器,测试中要考虑对设备的共享);考虑特殊情况(比如内存和硬件的冲突等);设计极端情况(比如内存泄漏、破坏性测试等)。

BUG的发现和管理
        微软把软件中常见的BUG分为以下几种类型:功能错误;用户界面错误;边界值相关错误;初始化错误;计算错误;内存相关错误;硬件相关错误和文档错误。

        测试工程师发现BUG之后,首先应验证是不是自己的偶然失误造成BUG出现,如不是则立即建立每一个新的BUG记录;尽可能地分析产生BUG的原因;设计合适的优先级和严重级别。测试人员的目标不是找出更多的BUG,而是改进产品的质量;依据BUG的优先级和严重级别分派给某一个相应的人;BUG记录要清楚、明白。

        一般来说,BUG在数据库中有三种状态:活跃(Active)、被解(Resolved)、关闭(Closed)。活跃状态指的是测试人员新建一个BUG时的状态,必须分派给相应的设计人员、开发人员或者是用户教育人员,表明BUG的状态是等待纠正的。被解状态指的是设计人员、开发人员或者用户教育人员修正BUG后的状态,必须重新分派给报告BUG的测试人员,表明BUG已经得到修正,但等待较验。关闭状态指的是测试人员较验完成并关掉之后的状态,表明BUG已经得到修正,并完成了较验,如果再次出现同样的问题,还可以重新激活成活跃状态,此时又开始了另一轮的状态循环。活跃BUG数量的趋势,一般在代码完成前很少,代码完成后增长很快,接近Beta测试时会下降,接近RC时奔向零。因此由此亦可判断产品质量和里程碑的信号——每天新建的BUG数量与修正的BUG数量相比较;活跃状态的BUG数量。

        永远有缺憾是所有智力活动的特征。软件一定有数不清的缺点,问题不在在于判断这个产品好与不好,而是决定修改哪一部分使产品比较能被用户接受或喜爱。微软有“BUG法庭”,审查每一个BUG,选择和修改产品中最重要的错误,决定相应解决方案,尽量使大部分的用户在大部分的时间内都能够使用愉快。

微软研发的交响乐章
        软件研发需要先进的技术和科学的管理。纵观微软对软件开发周期过程的管理,其精髓的做法一是是将大项目划分成若干个子项目的里程碑式的开发模式;其次,通过对产品组各人员角色对职责的承诺来控制产品的开发过程,保证产品的进度和质量。经过多年的积累,团队合作一直是微软软件开发的基础。

        在微软,既鼓励创造性,又最大限度地实现科学管理;同时,每个员工都能互相分享自己的经验和教训,彼此合作。 而这,正是微软的文化(最大的成功)。

posted on 2008-03-19 09:41 回忆之城 阅读(128) 评论(0)  编辑 收藏 引用 所属分类: 测试技术相关
只有注册用户登录后才能发表评论。