- 什么是基于风险的测试
- 概述:风险是当前未发生而未来有可能会发生并造成负面影响的事件。
- 软件测试是通过各种各种测试活动来发现软件或服务中是否存在引起风险的缺陷,并反馈风险信息给开发团队,由开发团队修复缺陷从而减低风险的活动。
- 基于风险的测试计划制定:
-
基于风险的测试计划内容?
-
测什么——从风险出发,需要明确地列举出要测试哪些具体的功能和非功能的质量特性,这些也被称为测试范围 -
如何测——测试范围明确后,应用测试基础知识原则好的设计技术,结合非功能质量特性的风险情况,设计和安排测试阶段,结合测试类型等内容形成测试策略。???????? -
什么时候测——结合风险缓解措施和软件开发的生存周期安排测试活动。将测试范围内容测试策略的内容进一步分解为具体的测试任务。然后通过甘特图等项目管理工具将详细的计划安排落实。 -
谁来测——根据不同的测试阶段测试类型技术特长等要素确定测试团队。
-
基于风险的测试计划制定的步骤
-
分析——识别风险,将风险进一步分解,确定优先级,排序。然后通过质量特性为桥梁,将仅与业务相关的风险与软件的特性联系起来。通过质量特性的分解和联系,方便后续步骤中设计测试策略。 -
选项、估算、平衡——此阶段实际上是一个循环改进的过程。对测试阶段进行合理安排,确定每个测试阶段对应的测试范围和测试类型、设计技术和测试执行方法。以上所有内容形成一个整体测试策略,需要结合团队的情况、资源情况和时间安排等内容,落实测试策略。 -
形成决策——此阶段通常是与各个利益相关方进行沟通,形成决策,从最重要的利益相关方开始沟通,比如能决定测试预算和人员的利益相关方。
-
风险分析和缓解措施设计 -
风险识别
-
风险的影响和发生概率评估
-
风险发生的可能性(概率) -
风险一旦发生可能造成的影响(损失)
-
风险的优先级
-
概述:如果风险发生的概率确定,则风险造成的负面影响越大,一旦发生所造成的损失也越大,也应该优先处理。所以风险优先级(R)、发生概率(P)和影响(I)的关系,可以初步总结以下公式:R=P*I -
测试活动解决的是当前的开发测试活动中遭到风险的概率(C)与期望产品上市后发生的可能性(P)之间的差距。所以对于软件测试计划,其要对应的风险的优先级,应该修正为如下公式:R=(C-P)*I
-
风险与缓解措施
-
测试级别的划分,能对应解决软件开发的复杂性问题 -
测试类别和设计和安排,将测试类型安排在最适合对应的测试级别中来识别和缓解产品风险 -
测试设计方法,在每个测试级别和类型中,都需要进行测试设计和执行的工作 -
测试执行方法,对每个测试级别和测试类型都应具体地设计安排对应的测试执行手段
-
一般性的缓解措施指南
-
概述:某产品是一个历史产品线的沿袭,系统的整体架构、模块和功能基本与历史产品线相同。变化的是少量的非核心新功能和底层硬件的升级换代。这时可能的测试级别的划分是:
-
对于没有代码变更的已有软件模块,无需进行单元测试 -
根据单元测试最终的情况考虑是否安排一轮在模拟器环境中执行的预集成测试,包括新功能的所有集成测试和回归测试 -
对新添加的功能进行集成测试 -
在系统测试级别,对所有功能进行完整的三轮回归测试
-
设计风险缓解措施的步骤
-
首先安排测试级别来对应软件系统的复杂度风险 -
根据各个测试级别的特点和资源情况安排,通过特定的测试类型在本级别内对应特定的质量特性风险 -
在安排测试类型后,考虑采用哪些测试设计方法设计测试用例 -
根据与被测试对象的交互方式可能的测试环境、测试工具的情况来设计测试执行的方法
-
基于风险的原则
-
由风险导出相关质量特性,而非单纯考虑质量特性,避免扩大某些不必要的质量特性的测试,忽略应覆盖到的质量特性测试 -
由质量特性得到测试类型,避免安排无意义的测试活动来进行某些特定目标的测试 -
根据测试类型考虑测试设计方法,更有针对性 -
根据测试类型和测试级别设计测试执行的方法,而非相反。避免只安排那些能测试的测试类型。应根据需要去设计开发测试环境和测试工具
-
测试级别与测试实施
-
单元测试设计与实施 -
集成测试设计与实施 -
系统测试设计与实施 -
验收测试设计与实施
- 单元测试设计与实施
- 在单元测试测试级别,设计测试用例的根据是单元(模块、组件、函数)的详细设计书或代码。一般安排设计方法的参考规则如下:
- 对单元的明确功能,根据具体特性选择基于规格说明的测试设计技术
- 对于单元输入的各项参数可以采用等价类划分、边界值、组合测试技术
- 对于有着明确的状态和转移定义的模块,应该采用状态转移测试进行覆盖
- 对于有着明确逻辑判定规格要求的,应采用判定表技术
- 通过代码覆盖度量工具可对执行以上测试用例时达到的白盒测试覆盖进行度量。对于未能达到覆盖目标的部分代码,通过基于规格的测试设计技术来补充测试用例进行覆盖。
- 一般对生命攸关系统中关键模块、核心算法模块,有法规或行业标准要求必须达成某种代码覆盖。
- 集成测试设计与实施
- 集成测试的测试设计方法为“灰盒”测试设计,其具体的做法是综合运用基于规格说明的测试设计技术(黑盒技术)和基于结构的测试设计技术(白盒技术)来设计测试用例。通常的测试设计技术的参考规则如下:
- 以场景测试为主要测试设计技术
- 为了在场景中找出异常或极端的情况,可对通信消息的内容参数或调动的接口参数及返回值,应用等价类和边界值方法
- 对于通过异步通信来进行的模块间交互协同,还应考虑异步通信带来的固有风险:消息丢失、重复、内容错误、超时、响应延迟与请求的重发、消息流程的交叉。
- 对于有状态转移的模块间交互协同,可采用状态转移测试,测试多个状态机间同步的情况。
- 还可以应用基于结构的测试设计技术:语句测试、分支测试等
|