
1.4 不同软件开发模式下的软件测试
软件测试作为软件工程中的重要一环,是项目成败的一个不可忽略的内容。
但是不同的软件企业采用不一样的开发模式,不同的项目采用不同的开发过程,不同的产品适合采用不同的软件工程方法。那么对于不同的软件开发模式或开发过程,测试人员如何找准自己的位置,如何更好地配合这个过程进行工作呢?
按照软件工程的两大流派,可以分成“流程派”和“个体派”。“流程派”以CMMI和ISO为代表,强调按既定的流程工作。“个体派”以新兴的敏捷开发为代表,强调人在过程中发挥的价值。
1.4.1 CMMI和ISO中的软件测试
“流程派”强调形成文档的制度、规范和模板,严格按照制度办事,按照要求形成必要的记录,检查、监督和持续改善。因此,测试人员在实施这样的流程改进方式的组织中工作,需要注意按照测试流程定义的模板进行工作,填写必要的测试记录和报告,度量测试的各个方面是否符合要求。
1.4.2 CMMI与软件测试
CMMI全称是Capability Maturity Model Integration,即能力成熟度模型集成(也有称为:软件能力成熟度集成模型),是美国国防部的一个设想,1994年由美国国防部与卡内基-梅隆大学下的软件工程研究中心以及美国国防工业协会共同开发和研制的。其目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力,从而能按时地、不超预算地开发出高质量的软件。其所依据的想法是:只要集中精力持续努力去建立有效的软件工程过程的基础结构,不断进行管理的实践和过程的改进,就可以克服软件开发中的困难。
CMMI为改进一个组织的各种过程提供了一个单一的集成化框架,新的集成模型框架消除了各个模型的不一致性,减少了模型间的重复,增加透明度和可理解性,建立了一个自动的、可扩展的框架。因而能够从总体上改进组织的质量和效率。CMMI主要关注点就是成本效益、明确重点、过程集中和灵活性四个方面。
CMMI把软件企业的过程管理能力划分成5个等级,如图1.17所示。

图1.17 CMMI的5级能力成熟度模型
每一个级别的过程特征可概括如下。
(1)初始级:个别的、混乱无序的过程,软件过程缺乏定义,项目的成功严重依赖于某几个关键人员的努力。软件质量由个人的开发经验来保证。
(2)可重复级:建立了基本的项目管理过程来跟踪费用、进度和功能特性。制定了必要的过程纪律,能重复早先类似应用项目取得的成功经验。
(3)已定义级:已将软件管理和工程两方面的过程文档化、标准化,并综合成该组织的标准软件过程。所有项目均使用经批准、剪裁的标准软件过程来开发和维护软件,软件产品的生产在整个软件过程是可见的。
(4)量化管理级:分析对软件过程和产品质量的详细度量数据,对软件过程和产品都有定量的理解与控制。管理有一个作出结论的客观依据,管理能够在定量的范围内预测性能。
(5)优化管理级:过程的量化反馈和先进的新思想、新技术促使过程持续不断改进。关注改进的持续性,融入了技术改革、缺陷预防等理念。软件组织可从自己的过程控制和管理中得到反馈信息,用于进一步指导过程的改进。
CMMI的二级关键域包括软件质量保证,主要需要解决的问题是培训、测试、技术评审等。这是任何一个想从混乱的初始级别上升到可重复级别的软件组织需要关注和解决的问题。
对于软件测试,在这个阶段需要考虑的是测试是否有规范的流程,与开发人员如何协作, Bug 如何记录和跟踪。还需要关注测试人员的技能水平是否达到一定的要求,是否建立起培训机制。
注意
测试的管理是否完善直接关系到测试执行的效果。因此,测试组织必须确保形成了完善的测试策略和测试计划,测试完成的标准,以及测试报告的形式和内容。
1.4.3 ISO与软件测试
ISO 9000质量标准体系是在20世纪70年代由欧洲首先采用的,其后来在美国和世界各地迅速发展起来。很多企业都热衷于 ISO 认证,ISO 9000的质量环如图1.18所示。

图1.18 ISO 9000质量环
ISO基于PDCA的循环提出了测量、分析和改进的重要性,使用测试作为软件测量的重要手段。它要求测试人员需要得到有关授权才能进行测试活动,应该得到充分的培训和指导,确保测试人员有足够的能力对软件产品进行测试。
ISO 非常强调缺陷的控制,包括对缺陷的修改进行回归测试和验证,对缺陷进行分析和评审,确保缺陷在交付使用前得到控制,并确保对缺陷制定了纠正预防措施,形成预防机制,防止缺陷的再次出现。
软件企业使用ISO进行过程管理和改进应该参考ISO 9000-3标准。ISO 9000-3标准是ISO在软件开发、供应和维护中的使用指南,是针对软件行业的特点而制定的。ISO 9000-3的主要内容如下。
●合同评审。
●需求规格说明。
●开发计划。
●质量计划。
●设计和实现。
●测试和确认。
●验收。
●复制、交付和安装。
●维护。
上述内容基本上覆盖了软件生命周期的全部阶段,并且比ISO 9001更贴近软件企业的实际需求。但是需要注意的是ISO 9000-3是指南,而不是认证的准则。
1.4.4 敏捷开发中的软件测试
在敏捷开发中,测试是整个项目组的“车头灯”,它告诉大家现在到哪了,正在往哪个方向走。测试员为项目组提供丰富的信息,使得项目组基于这些可靠的信息做出正确的决定,如图1.19所示。

图1.19 敏捷项目中的软件测试
在敏捷项目中,测试人员不再做出发布的决定。不只是由测试员来保证质量,而是由整个项目组中的每一个人都要对质量负责。测试员不再跟开发人员纠缠错误,而是帮助开发人员找到目标。
对于测试员来说,如果是在一个敏捷的团队,采用完全的 XP 方法,则应该按照敏捷测试的原则,调整自己的角色,让自己成为一名真正的敏捷测试员。
在敏捷的团队中,测试工作的核心内容是没有变的,就是不断地找Bug,只是要调整好自己的心态,一切以敏捷的原则为主。敏捷测试需要更多地考虑以下方面的内容。
●更多地采用探索性测试方法。
●更多地采用上下文驱动的测试方法论。
●更多地采用敏捷自动化测试原则。
在敏捷项目中,测试人员不能依赖文档,而是看是否能自动地寻找和挖掘更多关于软件的信息来指导测试。探索性测试,这种强调同时设计、测试和学习被测试系统的测试方式是可以被充分借鉴和应用的。
敏捷讲求合作,在敏捷项目组中,测试人员应该更主动点,多向开发人员了解需求、讨论设计、一起研究Bug出现的原因。
技巧
敏捷测试认为要持续地测试,不断地回归测试,快速地测试。测试人员需要多点借鉴上下文驱动测试的方法,适当采用自动化的方式加快测试的速度。