第十七章 软件测试策略
1.测试是一个执行程序的过程,其意图是在将产品交付给最终用户之前找到错误。
2.验证:我们在正确地构造产品吗?
3.确认:我们在构造正确地产品吗?
4.独立测试组的作用是为了避免开发人员进行测试所引发的固有问题
策略问题
(1)明确地陈述测试目标(2)了解软件的用户并为每类用户建立用户描述(3)制定强调“快速周期测试”的测试计划(4)建立能够测试自身的“健壮"软件(5)测试之前,利用有效的正式技术评审作为过滤器。(6)实施正式技术评审以评估测试策略和测试用例本身。(7)为测试过程建立一种持续的改进方法。
单元测试
单元测试集成测试
1.一步到位(大爆炸)测试
2.增量测试
自顶向下集成
自顶向下自底向上集成
自底向上测试三明治测试
回归测试
1.回归测试指在集成测试策略的环境下,重新执行已测试过的某些子集,以确保变更没有传播不期望的副作用。
2.回归测试套件包含:(1)能够测试软件所有功能的具有代表性的测试样本(2)额外测试,侧重于可能会受变更影响的软件功能(3)侧重于已发生变更的软件构件测试
冒烟测试
1.冒烟测试让软件团队频繁地对项目进行评估。
2.步骤:(1)将已经转换为代码的软件构件集成到构建(bulid)中(2)设计一系列测试已暴露影响构建正确地完成其功能的错误。其目的是为了发现极有可能造成项目延迟的业务阻塞错误(3)每天将构建与其他构建及整个软件产品集成起来进行冒烟测试。
3.好处:(1)降低了集成风险。(2)提高最终产品的质量。(3)简化错误的诊断和修正(4)易于评估进展状况
高阶测试
1.验证测试 2.Alpha/Beta测试 3.系统测试 4.恢复测试 5.安全测试 6.压力测试 7.性能测试
面向对象测试
1.测试策略的改变:(1)由于封装,”单元”的概念扩大了(2)集成侧重于类及其在“线程”或在使用场景环境中的执行(3)验证使用传统的黑匣子的方法
2.测试用例设计借鉴了传统的方法,但也包含了特殊的功能
3.策略:(1)类测试相当于单元测试,类的操作被测试,类的行为状态被测试(2)集成测试有三种策略,基于线程的测试,集成响应一个输入或事件所需的一组类;基于使用的测试,响应一个用例所需的类
调试
1.调试debugging出现在成功的测试之后。也就是说,当测试用例发现错误时,调试是使错误消除的过程
2.调试技术:(1)蛮干法(2)回溯法(3)原因排除法,是通过演绎或归纳并引入二分法的概念实现的
软件测试基础
1.可测试性:(1)可操作性(2)可观察性(3)可控制性(4)可分解性(5)简单性(6)稳定性(7)易理解性
2.什么是“好"测试?
(1)发现错误的概率很高(2)没有冗余(3)最好的品种,即最有可能发现所有类别错误的测试(4)不应该太简单也不应该太复杂
软件测试方法
白盒测试
(1)保证一个模块中的所有独立路径至少被执行一次(2)对所有的逻辑判定均需测试取真和取假两个方面(3)在上下边界及可操作的范围内执行所有的循环(4)检验内部数据结构以确保其有效性
2.逻辑覆盖:(1)语句覆盖(2)判定覆盖(3)条件覆盖(4)判定—条件覆盖(5)条件组合覆盖(6)路径覆盖
3.环路复杂度(1)封闭区域的数目(2)简单决策数目+1(3)V(g)=e - n + 2,e为流图边的数目,n为流图结点数。环路复杂度越大,程序越容易出错
控制结构测试
1.条件测试,通过检查程序模块中包含的逻辑条件进行测试用例设计
2.数据流测试,根据变量的定义和使用位置来选择程序测试路径的测试方法。
3.循环测试,完全侧重于循环构成的有效性。简单循环、嵌套循环(由内向外,外层循环设为最小值)、串接循环、非结构化循环
黑盒测试
1.等价类的划分
(1)若输入条件指定一个范围,则可以定义一个有效等价类和两个无效等价类
(2)若输入条件需要特定的值,则可以定义一个有效等价类和两个无效等价类
(3)若输入条件指定集合的某个元素,则可以定义一个有效等价类和一个无效等价类
(4)若输入条件为布尔值,则可以定义一个有效等价类和一个无效等价类
2.边界值分析
3.测试方法(1)基于故障的测试,测试最有可能发现并且可能出现的故障(2)测试用例与类层次(继承并不排除对派生类进行彻底测试的需要,实际上会导致测试过程复杂化)(3)基于场景的测试设计,该方法集中在用户做什么上,而不是产品做什么,这意味着捕捉用户必须执行的任务,然后将它们以及它们的变体作为测试应用。
4.类级可应用的测试方法:(1)随机测试(2)划分测试
5.类间测试用例设计
网友评论