1. 测试的价值
应该体现在- 测试工作或技术对项目流程的渗透,以及在整体产品生命周期中主动质量控制以及对生产流程的改进和完善应该是测试终极价值的体现,这并非是一两个测试技术高手,或引入几个测试技术能解决的事情。从整个产品的链条来看,测试和其他环节一样重要,是整个产品不可或缺的关键节点。
2. 软件开发生命周期大致分为 -
需求计划(产品部门)–> 概要设计(研发部门、产品部门)–>详细设计(研发部门)–>编码实现/Coding(研发部门)–> 测试(测试部门) –> 验收(产品部门)
- 该过程是产品生命周期的必然体现。无论采取哪种开发模式(瀑布式,敏捷模式)都应该遵行该过程,开发模式的不同主要体现在开发效率上,而并非要违反产品的生命周期。
3. 测试体现建设的整体思路
测试管理体系是一个系统工程,要建设测试管理体系要从构成该系统的过程加以识别和管理,以实现设定的系统目标,同时要确保各个过程协同作用相互促进。从而使它们的总体作用大于各个作用之和。 建设测试体现的宗旨就是让测试渗透到软件生命周期的各个环境,从而更早的发现和排除缺陷。
测试体系的建设可以从如下几个方面/过程来考量:
测试规划(Test Strategy)- 确定各测试阶段的目标和策略,明确各测试阶段的活动安排,时间节点和资源配置(如人员安排,设备安排,技术及其他安排等)以及跟踪
和控制测试过程的活动等内容;该过程输出测试计划(Test Plan)。如需求阶段要完成验收计划(UAT 计划),概要设计阶段要完成系统测试计划,详细设计阶段要完成集成测试计划(SIT 计划),编码阶段要完成单元测试计划(Unit Test 计划)任何对计划的修改都要提交评审组评审(评审组通常由项目的各个相关方组成,如产品人员,开发人员,测试以及QA人员等)测试设计 - 即根据测试计划设计测试方案,该过程输出测试用例(Test Case),此过程与软件开发活动同步进行,其结果可作为各阶段测试计划的附件进行提交审核。
测试实施 - 就是根据测试用例来执行测试,并对结果进行对比,记录,缺陷跟踪和管理等活动,最终得到测试报告(Test Report)
配置管理 - 是软件管理的子集,作用于测试的各个阶段(即需求阶段,概要阶段,详细设计阶段,编码阶段,验收阶段等), 管理对象包括测试计划,测试用例,测试版 本,测试结果,测试工具以及环境等内容。
资源管理 - 包括对人力资源和工作场所,以及相关设施和技术支持的管理。如果有专用实验室,还有其他管理等内容覆盖。
测试管理 - 即采取使用的方法对上述过程及结果进行监视,并在适用时进行测量,以保证过程的有效性,如果发现过程没有达到预期的效果,还可进行适当的调整或纠
正。
- 以上六个过程可作为建设软件管理体系的实施步骤,首先要确定软件测试所需的过程和应用(根据公司实际情况从六大步骤中选择确定);然后就是要确定这些过程的顺序和相互作用;确定这些过程所需的准则和方法,一般应制定这些过程形成文件的程序,以及监视,测量和控制的标准和方法(这一步可参考TMMI标准来进行制定)。从以上六个过程中可以看出,测试阶段要产出的文件有: Test Strategy, Test Plan, Test Case, Test Report (test Bug tracking)
4. 建立测试管理体系的理论依据
CMM(Capability Maturity Model)- 能力成熟度模型,是软件界的广泛使用的过程度量模型,旨在提升软件各个环节的作业标准,推动整个行业朝着更加规范,更加科学,也更加可控的方向发展。CMM是软件发展的必然产物,是被反复证明确实能帮助企业和产品提升自身竞争力的事实依据。也得到了国际上绝大多数软件厂商的认可和积极参与,获得CMM国际认证也成了各大软件公司的追求目标。既然如此,测试作为软件生产必不可少的一环,制定和CMM标准相匹配的测试管理体系就显得尤为重要了。事实上在测试界也有与之对称的标准,称之为TMM。废话少说,下面我简要介绍下TMMi和CMMi的相关规范和等级定义,了解和熟悉这些规则是管理测试团队的重要理论依据。
CMMi的五级定义:
- Initial (初始级)- 处于这个级别的组织,基本没有健全的软件工程管理制度。每件事情都是以
特殊的方法来做,事情的成败取决于团队成员的个人能力,具有很大的偶然性,人员变动,则一切都跟着改变,处处充满危机,软件生产随意性很大,基本无法可依,无章可循。
- Repeatable (可重复级) - 在这一级别的团队,有些基本的软件项目管理行为,主要是参考之
前项目经验,借鉴一些具体措施,可以预防一些危机的发生。 - Defined (已定义级)- 在这一级别的团队,已为软件的生产编制了完整的文档,软件过程管理
和技术方面都有明确的定义,也采取了评审的办法来保证软件的质量。对生产过程的管理具有随意性,并不能严格的管理过程。 - Manage(已管理级) - 一个处于第4级的公司对每个项目都设定质量和生产目标。这两个量将被不断地测量,当
偏离目标太多时,就采取行动来修正。利用统计质量控制,管理部门能区分出随机偏离和有深刻含义的质量或生产目标的偏离 - Optimizing (已优化级)—个第5级组织的目标是连续地改进软件过程。这样的组织使用统计质量和过程控制技术作为指导。从各个方面中获得的知识将被运用在以后的项目中,从而使软件过程融入了正反馈循环,使生产率和质量得到稳步的改进。达到该级的公司可自发的不断改进,防止同类缺陷二次出现。
TMMi的五级定义:
- 和CMMi类似,TMMi也分五个等级进行定义,其大意和CMMi相当,这是在软件测试白皮书上摘抄的定义 -
- Initia –Similar CMM, no plan and system to test activities. Random and no document tracing
- Phase Definition - Establish basic techniques and methods, develop testing and debugging goals
- Integration - Establish test organization, integration testing into the project lifecycle, establish technical training
programmer and control and monitor testing - Management and Measurement - Establish organizational review programmer; Establish test measurement programmer; software quality evaluation
- Optimization, defect prevention and quality control - use process data for defect prevention; quality control; Test process optimization
- Tmm 和 CMM类似,有些书上对他们的定义完全相同,他是在CMM的基础上发展而来的,目的是提高软件生产团队的效率,它只是一种形式测试,并不代表软件本身的质量,它是检验你的软件生产是否遵循了一定的程序,是否有相应的管理措施和监管措施,不涉及软件本身内容。只是检测程序的形式,是否有各种会议,步骤等,至于会议开了什么内容,没有任何关系。CMMi-5是最高水平,取得CMMi5的最多的国家是印度,但是印度的软件质量很差,这折射了这种形式测试的局限性. 作为测试管理者,不应该只局限于这些规范和标准,要根据各自公司的实际,制定符合自身阶段的测试体系。一味追求高等级的认证标准,很容易让测试流于形式,适得其反。
5. 如何开展敏捷软件测试活动
上面介绍了如何建立软件测试体系和遵行的理论依据,这里我就自身经验,结合网上大咖的梳理,介绍下敏捷软件测试活动展开的具体步骤,仅供大家参考。
- 测试需求
收集和整理本迭代中的所有需求(主要体现为新增功能和原有功能的修改),建议以在线文档(例如google的google docs, Tencent的协同办公软件)的方式管理每个迭代中的需求变化。通常需要对来自产品的需求进行一定程度的细化,细化到本产品的测试工程师能够清楚理解需要验证的点即可,同时测试需求通常需要与产品负责人和开发组确认(非正式评审)。 - 测试计划
“一页纸(One Page)”的测试计划是一个很好的实践。测试计划中只需要包含本次迭代的目标,以及简单的时间和资源计划即可。 - 测试设计与执行
敏捷测试中的测试设计与执行通常是交织在一起的,对于新功能,测试工程师通常通过对新功能的使用和尝试来了解之,然后为其设计测试用例并用脚本(手工测试用例或自动化脚本)的方式将其固定下来;而对于原有功能的测试主要依靠自动化测试来进行。在测试设计阶段,测试工程师需要维护验收测试,以保证其准确地反映了每个迭代的目标。推荐使用在线表格或是轻量的用例管理软件对用例进行管理,在自动化程度比较高的情况下,甚至可以直接依赖测试需求列表和自动化测试脚本,而无需创建手工用例集合。 - 测试评估总结
测试评估总结意味着对每个迭代中进行的测试进行评估与总结。与传统的测试相同,敏捷测试中评估的主要目的同样是获得被测产品质量与测试质量的度量。
总之,敏捷的软件测试工作不要拘泥于形式和文档,要将TMM精神体现在测试思维和执行力上,最大限度的确保测试完整性和覆盖率。在此基础上再进一步完善测试流程和归档整理。