测试计划
5.1 测试计划
子曰:凡事预则立,不预则废,预即是计划。要想成功完成软件测试这项工作,必须首先建立测试计划。软件测试是一个有组织有计划的活动,应当给予充分的时间和资源进行测试计划,这样软件测试才能在合理的控制下正常进行。
《GB/T 9386 软件的测试文件编制标准》将测试计划(Test Planning)定义为:“用来描述测试活动的范围、方法、资源及进度的文档。它确认了测试项、被测特征、测试任务、人员安排,以及与该计划相关的风险。”
测试计划是:
- 项目计划的组成部分
- 依赖于软件组织过程、质量文化和方针
- 指导今后一系列测试活动的文件
- 是一个过程,是动态的,随着项目的进展不断更新
测试计划的制定可以帮助预见将会出现的问题,明确意图,软件测试内容、方法和过程,为有组织地完成测试任务提供保障。
测试计划的两种制定方式
第一种方式:主计划 + 详细计划
制定一个主计划和若干个详细计划,详细计划是对瀑布式开发生命周期中某个特定阶段的测试计划,包括:
- 单元测试计划
- 集成测试计划
- 系统测试计划
- 验收测试计划等
第二种方式:单一测试计划
只有一个测试计划,这种方式在一个测试计划中包含了所有的测试类型。
测试计划的内容
根据需求分析文档,了解项目需要解决的实际问题,制定相应的测试计划,测试计划的内容应包括:
- 确认测试目标、范围和需求
- 识别测试风险,制订相应的测试策略
- 对测试任务和工作量进行估算
- 测试用例和资源配置
- 进度安排和资源分派,包括团队角色、责任和培训
- 测试阶段划分,包括阶段性任务和成果
- 测试结果分析和度量以及测试风险评估
- 跟踪和控制机制
借助软件测试计划,参与测试的项目成员,尤其是测试管理人员,可以明确测试任务和测试方法,保持测试实施过程的顺畅沟通,跟踪和控制测试进度,应对测试过程中的各种变更。因此一份好的测试计划需要综合考虑各种影响测试的因素。
测试计划模板
一个正规的测试计划应该包含以下项目:
| 项目 | 内容 |
|---|---|
| 测试的基本信息 | 包括测试目的、背景、测试范围等 |
| 测试的具体目标 | 列出软件需要进行的测试部分和不需要进行的测试部分 |
| 测试的策略 | 测试人员采用的测试方法,如回归测试、功能测试、自动测试等 |
| 测试的通过标准 | 测试是否通过的界定标准以及没有通过情况的处理方法 |
| 停测标准 | 给出每个测试阶段停止测试的标准 |
| 测试用例 | 详细描述测试用例,包括测试值、测试操作过程、测试期待值等 |
| 测试的基本支持 | 测试所需硬件支持、自动测试软件等 |
| 部门责任分工 | 明确所有参与软件管理、开发、测试、技术支持等部门的责任细则 |
| 测试人力资源分配 | 列出测试所需人力资源以及软件测试人员的培训计划 |
| 测试进度安排 | 制定每一个阶段的详细测试进度安排表 |
| 风险估计和危机处理 | 估计测试过程中潜在的风险以及面临危机时的解决办法 |
测试策略
测试策略描述当前测试项目的目标和所采用的测试方法,描述不同测试阶段的测试对象、范围和方法以及每个阶段内所要进行的测试类型,或者说是在一定的软件测试标准、测试规范的指导下,依据测试项目的特定环境约束而规定的软件测试的原则、方式、方法的集合。
测试策略的主要任务
- 针对风险(工作量、时间等压力)采取对策
- 包括遵照的标准取舍、测试任务的优先级等
- 如何更好地执行测试用例以及如何执行后续的回归测试
- 选定使用测试技术和工具
- 考虑影响资源分配的特殊情况等
测试策略的基本要素
- 输入:作为制定测试策略的依据,包括限制条件和已具有的资源
- 输出:制定策略的成果,即最终对所制定策略的定义或说明
- 制定策略的过程:测试组分析需求,参与设计的讨论,要求开发、编写针对所有测试级别的测试策略,并和项目组一起复审测试策略和计划
测试策略的实施
测试策略的实施是通过测试的执行满足测试需求,这就需要分析测试的范围、任务和其他条件,从而估算工作量和测试时间,安排测试进度和配置资源。
- 功能测试范围:可以借助流程图和框图按功能层次分解,也可以按功能区域、功能逻辑进行分解
- 非功能性测试范围:可以分别从性能测试、兼容性测试、适用性测试和安全性测试等各个方面进行分析
测试工作量估算
测试工作量是根据测试范围、策划任务和开发阶段来确定的,测试范围和测试任务是测试工作量估算的主要依据。
影响因素
- 质量需求:代码质量越低,测试越要充分,回归测试次数与频率加大
- 开发阶段:处在不同的开发阶段测试工作量不同
- 自动化程度:自动化程度高,测试工作量就越低
估算方法
测试工作量的估算依赖于测试任务的细化,对每项测试任务进行分解,然后根据分解的子任务进行估算。通常分解粒度越小,估算精度越高。
工作分解结构表(WBS)
- 列出本项目需要完成的各项任务:测试计划、需求和设计评审、测试设计、脚本开发、测试执行等
- 对每个任务进一步细分,可进行多层次的细分,直到不能细分为止
- 列出需要完成的所有任务之后,根据任务的层次进行编号,形成完整的工作分解结构表
- 根据工作分解结构表逐项估算工作量,一般以人月为单位
功能点估算法
功能点估算法是一个比较可靠的工作量估算方法之一,它先估算每个功能点所需要的工作量,然后进行累加获得总的工作量。
功能点的主要参数有:
- 外部输入数
- 外部输出数
- 内部逻辑文件
- 外部接口文件
- 外部查询数
测试用例估算法
还可以采用测试用例估算法,依据测试用例数来估算测试工作量,例如用功能模块所有要执行的测试用例总数,除以每个人日所能执行的测试用例平均数,就得出人日数工作量估算。
估算假设
- 效率假设:即测试队伍的工作效率
- 测试假设:为了验证一个测试需求所需测试动作的数目,可能包括每个测试用例的估算时间
- 风险假定:考虑增加10%~20%的工作量来处理风险产生的不确定性
相对比例估算法
如果确实没有任何可行的办法,就可以按照测试人员和开发人员的比例来确定。大致可以分为3类,其比例分别是:
- 1:2
- 1:1
- 2:1
总工作量计算公式
其中:
- W为总工作量
- 为一轮测试所需的工作量
- 表示每轮的递减系数
受代码质量、开发流程和测试周期等影响,的值是不同的。
总结
制定一份有效的软件测试计划,需要:
- 在确定测试项目的任务之前,应清楚测试的范围和目标
- 让所有合适的相关人员参与测试项目的计划制定,特别是在测试计划早期
- 对测试的各阶段所需要的时间、人力及其它资源进行预估
- 测试范围能分解应尽量分解,针对每个测试任务仔细分析到位,尽量做到客观、准确、留有余地
- 制定人员要确保制定测试项目的输入、输出和质量标准,并和有关方面达成一致
- 建立变化处理的流程规则,识别出在整个测试阶段中哪些是内在的、不可避免的变化因素,如何进行控制