1、测试需求的定义
测试需求就是指:什么是我们所要测试的
测试需求关注于What
测试需求说明了在一个软件测试项目中:
项目的测试范围
在测试项目中,我们需要进行开发生命周期中哪些阶段测试
- 单元测试
- 集成测试
- 系统测试
- 验收测试
项目的测试目标
- 系统的哪些特性需要被测试以保证这些特性的质量。
- 系统特性包括:功能、性能、易用性、安全性、兼容性……
- 测试目标要根据系统的特点进行分解细化,分解到一个可测试的粒度,即单项具体的特性。
- 未经分解细化,笼统的、整体或者概括性的特性不利于测试工作的开展。
2、测试需求的重要性
- 保证测试人员、项目经理、客户的测试目标一致
- 在有限的时间内做更有效的测试
- 有效估计项目所需资源
- 合理资源分配
- 避免出现测试逃逸现象
- 测试进度跟踪
- 有效计算测试覆盖
- 功能性测试需求:功能性需求描述了系统的特征或系统提供的服务。主要包括:系统功能、业务流程、界面功能和风格、系统安装等
- 非功能性测试需求:非功能性需求描述了施加于系统操作上的约束。主要包括:性能要求、安全性要求、兼容性要求、移植性要求等
4、测试需求的组成
需求标识、需求名称、需求描述、优先级、类型、状态、创建信息、关联测试用例、其它根据项目特点和要求而定制的内容
5、测试需求结构
测试需求的制订按级别进行分解
完成的测试需求是树形的结构,用纵向的树形结构表示(类似于资源管理器的文档结构)
枝干节点一般用于表达需求的分类或高阶的系统特性(如同计算机中的分类目录 )
叶子节点则用于表达具体需要测试的特性(如同计算机中目录下的具体文件)
6、测试需求分析过程
第一步,描绘轮廓:就是要将整个应用程序要进行测试的范围描绘出来,包括测试目标、对象和策略等。(可通过阅读文档和钻研系统、确定系统特性及风险因素来确定)
第二步,分解单元:对测试范围进行分解,根据其结构分解成不同级别的单元,形成树形测试需求。如:子系统、模块、业务类型等。(考虑单元的粒度)
第三步,单元细化:对这些单元进行最终的细化,分解成具体的功能和处理条件、业务和不同场景等。细述每项测试需求,设定优先级
阅读文档和钻研系统:
- 学会阅读文档和钻研业务
- 索要文档、同类系统、系统原型
- 积极参加培训和讨论
- 各团队之间的沟通交流
- 积极主动去询问——向测试经理、客户、开发经理等
- 确定系统特性——从特性中考虑重点、需求
在软件测试需求分析中,我们可以从被测试系统的一些基本特征,来确定系统的一些需求、重点等。可以考虑的特征包括:
- 架构
- 开发平台
- 运行环境架构
- 根据业务特点,推测系统的测试重点、难点……
- 优先级
- 可测与不可测
- 测试的代价
- ……
8、测试需求的粒度
测试需求的粒度,要根据实际情况来确定
- 测试类型和阶段
- 不同的测试阶段
- 不同的测试类型
- 测试资源情况
- 人力
- 时间
- 水平
9、测试需求分析方法和原则
1)原则:
功能性需求
- 系统功能需求:
根据系统架构,从高到低逐级细分关注具体的系统功能及功能的不同处理情形粒度以到不同的处理情形为宜正常与异常处理情形都要考虑
- 界面需求:
界面功能根据界面划分考虑控件对各种输入的响应界面元素考虑元素各种属性(位置、大小、颜色、显示等)先整体后局部局部按界面划分考虑内容正确性
- 安装需求:
缺省安装配置优先按照安装配置结构划分考虑所有安装配置考虑安装过程中的异常行为
- 业务需求:
根据业务结构和分类,从上至下逐级细分关注具体业务粒度以到不同业务场景为宜考虑正常与异常业务场景
非功能性需求
- 性能/压力需求:
先结构后类型先列举后细分细述指标和要求
- 安全性需求:
先列举后细分详述各项内容
- 兼容性需求:
先硬件后软件先系统后应用详述环境组合
作为测试项目的基础,测试需求有5个需要依据的准则:
- 完整性
- 无歧义性
- 一致性
- 可跟踪性
- 可测试性