一、项目实践中的测试实施实践
制定测试计划阶段
1、要测试什么,不要测试什么
- 内容、目标
- 要达到的质量要求尽量明确
- 让利益相关方都能理解并达成共识
2、如何测试
- 设计测试
- 确定目标、选取合适的测试设计技术
- 执行测试
- 明确测试工具、确定测试环境、确定测试轮次
3、测试实施资源安排
- 各种资源
- 说服项目利益相关方进行足够的测试投入
二、基于风险的测试计划制定
特点:
- 风险更容易被各方理解和接受
- 发现和缓解风险能更好地完成测试任务
- 减少风险符合相关方的自身利益
三、基于风险测试的相关概念
(一)风险
- 概念:未来变化偏离预期的可能性及其对目标产生影响的大小。(中性词)
- 特征:不确定性、损失
(二)风险识别
(三)风险分析
1、风险定性分析
- 会生成风险优先级
2、风险定量分析
- 量化指标生成
(四)风险控制
1、风险管理计划
2、风险降低
3、风险化解
四、基于风险的测试计划
(一)测试计划内容
- 测什么
- 如何测
- 什么时候测
- 谁来测
(二)测试计划制订步骤
- 分析
- 选项、估算、平衡
- 形成决策
(三)基于风险的测试应用领域
- 商业产品
- 非安全攸关的产品或服务
五、风险分析和缓解措施设计
(一)风险识别
(二)风险定性分析
1、风险影响和发生概率评估
2、风险优先级
(三)风险定量分析
(四)风险与缓解措施
(五)风险识别的方法
- 专家访谈
- 头脑风暴
- 采用风险框架、检查表
(六)风险识别:其他获取风险的来源
- 各种规格说明
- 实现的细节
- 销售、市场资料
- 竞争对手的研究
- 独立评估机构
- 过去历史项目
- 个人的历史经验
(七)风险识别:通用的风险识别检查表
(八)风险的影响和发生概率评估
1、风险的影响
- 产品固有
- 与产品使用场景有关
2、风险发生概率和影响分析的基本框架
3、实际上基于风险的测试计划中的风险分析
4、对产品开发测试中遇到风险发生概率的处理原则
(九)风险的优先级
1、基于风险的测试的基本思想
2、风险优先级
- 风险优先级(R)、发生概率(P)和影响(I)
- 测试活动解决的是当前的开发测试活动中遇到风险的概率(C)与期望产品上市后发生风险的可能性(P)之间的差距。
(十)风险与缓解措施:测试策略
1、测试级别的划分,能对应解决软件开发的复杂性问题
2、测试类型的设计和安排,将测试类型安排在最适合对应的测试级别中来识别和缓解产品风险
- 单元测试:擅长发现代码级别的缺陷,擅长识别详细设计和编码错误
- 集成测试:擅长发现模块间交换的缺陷,擅长识别功能设计或架构设计的错误造成
- 系统测试:擅长发现软件需求的缺陷,识别需求的风险,包括各种非功能的风险
- 验收测试:擅长发现软件需求的缺陷,重点在于识别软件行为是否符合客户的使用场景
3、测试设计方法,在每个测试级别和类型中,都需要进行测试设计和执行的工作
4、测试执行方法,对每个测试级别和测试类型都具体地设计安排对应的测试执行手段
(十一)一般性的缓解措施指南(系统复杂性非常强)
1、主测试计划
2、分级别的测试计划
- 各团队指定的测试负责人来分别制订各自测试级别的测试计划
(十二)设计风险缓解措施的基本步骤
- 安排测试级别来对应软件系统的复杂度风险
- 根据各个测试级别的特点和资源情况安排,通过特定的测试类型在本级别内对应特定的质量特性风险
- 在安排测试类型后,考虑采用哪些测试设计方法设计测试用例
- 根据与被测试对象的交互方式、可能的测试环境、测试工具的情况来设计测试执行的方法
六、测试级别与测试实施
(一)测试设计和实施的一般性指南
1、各测试设计技术对应的测试条件描述
2、测试执行方法的设计和指导的内容
- 测试执行的环境设计
- 测试执行的方法定义
- 测试执行的周期和回归策略
(二)单元测试设计与实施
- 对单元的明确功能选择基于规格说明的测试设计技术
- 对于单元输入的各项参数可以采用等价类划分、边界值、组合测试技术
- 对于有着明确的状态和转移定义的模块,应采用状态转移测试进行覆盖
- 对于有着明确逻辑判定的规格要求的,应采用判定表技术
- 通过代码覆盖度量工具可对执行以上测试用例时达到基于结构的测试设计技术覆盖进行度量;未能达到覆盖目标的部分代码,通过基于结构的测试设计技术来补充测试用例进行覆盖
一般对生命攸关系统中关键模块、核心算法模块,有法规或行业标准要求必须达成某种代码覆盖
(三)集成测试设计与实施
- 以场景测试为主要测试设计技术
- 为了在场景中找出异常或极端的情况,可对通信消息的内容参数或调用的接口参数及返回值,应用等价类和边界值方法
- 对于通过异步通信来进行的模块间交互协调,还应考虑异步通信带来的固有风险
- 对于有状态转移的模块间交互协调,可采用状态转移测试,测试多个状态机间同步的情况
- 语句测试,设计测试用例覆盖序列图、活动图、流程图的每个交互和处理
- 分支测试、判定测试等可用于设计测试用例来覆盖序列图、活动图、流程图里的条件判定
(四)集成测试工具应具备的功能
- 获取模块间调用的信息
- 根据测试要求匹配模块间调用(响应)
- 根据测试要求修改模块间调用(响应),包括修改调用的方法和参数内容
- 根据测试要求重复模块间调用(响应)
- 根据测试要求丢弃模块间调用(响应)
- 根据测试要求延迟发生模块间调用(响应)
(五)系统测试设计与实施
- 主要应用基于规格说明的各种测试技术
(六)验收测试设计与实施
- 从系统测试用例中随机抽取一些基本使用场景
- 从用户实际的使用环境中,能够正常使用功能,没有基本功能的异常
- 通常以手工测试为主
七、测试估算与平衡策略
1、测试估算的方法指南
- 宽带德尔菲法(专家法)
- 基于历史数据法
- 根据测试级别、测试类型和测试技术进行测试估算
2、测试估算的步骤
- 测试设计、测试执行、测试报告