黑盒测试
定义
这种方法是把测试对象看做一个黑盒,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和功能规格说明,检查程序的功能是否符合它的功能说明
黑盒测试叫做功能测试或数据驱动测试。
一种特殊的黑盒测试叫做接口测试,它不管程序的需求和实现细节,仅依据程序与其外部环境的接口来选择测试数据
检测对象
是否有不正确或遗漏了的功能?
在接口上,输入能否正确地接受? 能否输出正确的结果?
是否有数据结构错误或外部信息 (例如数据文件) 访问错误?
性能上是否能够满足要求?
是否有初始化或终止性错误?
白盒测试
定义
此方法把测试对象看做一个玻璃盒子,它允许测试人员利用程序内部的逻辑结构及有关信息,设
计或选择测试用例,对程序所有逻辑路径进行测试。
通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致·因此白盒测试又称为结构测试或逻辑驱动测试
覆盖测试
路径覆盖测试(对程序模块的所有独立的执行路径至少测试一次)
逻辑覆盖测试(对所有的逻辑判定,取“真”与取“假”的两种情况都至少测试一次)
控制流测试(在循环的边界和运行界限内执行循环体)
数据流测试、领域测试(测试内部数据结构的有效性)
基本路径测试法的主要步骤
基本路径测试法适用于模块的详细设计和源程序
- 以详细设计或源代码作为基础,导出程序的控制流图
- 计算得到的控制流 G的环路复杂性
- 确定线性无关的基本路径集
- 生成测试用例,确保基本路径集中每条路径的执行。
等价类划分
等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数代表性的数据做为测试用例。
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
边界值分析
边界值分析也是一种黑盒测试方法,是对等价类划分方法的补充。
大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错误。
因果图
定义
如果在测试时必须考虑输入条件的各种组合,可使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来设计测试用例,这就需要利用因果图。
因果图方法最终生成的就是判定表。它适合于检查程序输入条件的各种组合情况。
基本步骤
- 分析软件规格说明描述中,哪些是原因 (即输入条件或输入条件的等价类) ,哪些是结果(即输出条件),并给每个原因和结果赋予一个识符
- 分析软件规格说明描述的语义,找出原因与结果之间对应的关系 ? 根据这些关系,画出因果图
- 由于语法或环境限制,有些原因与原因之间,结果与结果之间的组合情况不可能出现。为表明这些特殊情况,在因果图上用一些记号标明约束或限制条件
- 把因果图转换成判定表
- 把判定表的每一列拿出来作为依据,设计测试用例
使用各种测试方法的综合策略
在任何信况下都必须使用边界值分析法。用这种方法设计出测试用例发现程序错误的能力最强。
必要时用等价类划分法补充一些测试用例。
用错误推测法再追加一些测试用例。
对照程序逻辑,检查己有测试用例的逻辑覆盖程度。如果未达到要求的覆盖标准,应再补充足够的测试用例。
如果程序的功能说明中含有输入条件的组合情况,一开始就可选用因果图法。
接口测试
当模块或子系统集成为更大的系统时就需要进行接口测试。
目的
检测那些由于接口有误或对接口做出了无效假设而造成的系统缺陷。
程序构件的接口类型
参数接口
共享内存接口
程序接口
消息传递接口
接口错误的种类
接口误用
接口误解
计时错误
一般准则
检查接口并明确地列出对外部构件的调用。设计一组测试用例,为传送给其他构件的参数选择紧靠取值范围边界的值,以暴露接口的不一致错误。
当有指针通过接口传递时,可用空指针参数来测试。
当通过程序接口来调用一个构件时,设计一些容易引起构件执行失效的假设进行测试,以检查接口误解的错误。
在有消息传递的系统中进行强度测试,即加大消息传递的量,增加系统的负荷。因此,设计测过用例,产生比平时多得多的消息,以暴露计时的错误。
当构件之间通过共享内存交互时,可以设计一种测试,改变正常的激活构件的顺序。通过这些测试用以暴露程序员暗自对共享数据的生产和消费顺字所做的假设。
在接口测试方面 ,利用程序静态分析的方法比动态测试更有效。
软件测试的策略
单元测试
集成测试
确认测试
系统测试
局部数据结构测试的内容
不正确或不一致的数据类型说明
使用尚未赋值或尚未初始化的变量
错误的初始值或错误的缺省值
变量名拼写错或书写错
不一致的数据类型
全局数据对模块的影响
集成测试
定义
组装测试 综合测试
内容
- 在把各个模块连接起来的时侯,穿越模块接口的数据是否会丢失
- 一个模块的功能是否会对另一个模块的功能产生不利的影响
- 全局数据结构是否有问题
- 各个子功能组合起来,能否达到预期要求的父功能
- 单个模块的误差累积起来 ,是否会放大,从而达到不能接受的程度。
在单元测试的同时可进行集成测试,发现并排除在模块连接中可能出现的问题,最终构成要求的软件系统。
子系统的集成测试特别称为部件测试,它所做的工作是要找出集成后的子系统与系统需求规格说明之间的不一致。
把模块组装成系统的方式
一次性集成方式
增量式集成方式
可用性测试内容
软件的特性是否与需求相符
所有的文档都是正确且便于使用
对其他软件需求 可移植性 兼容性 出错自动恢复 可维护性等也都要进行测试
系统测试
定义
系统测试,是将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设.某些支持软件、数据和人员等其他系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
目的
通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。
什么是furps
功能
可使用性
可靠性
性能和支持
a测试评价软件的furps
b测试衡量软件的furps
软件测试
种类
功能测试
可靠性测试
压力测试
性能测试
恢复测试
配置测试
启动/停止测试
安全性测试
可使用性测试
可支持性测试
安装测试
过程测试
互联测试
容量测试
兼容性测试
文档测试
静态测试
可靠性测试的内容
平均失效间隔时间MTBF
因故障而停机的时间MTTR
配置测试的内容
配置命令测试
循环配置测试
修复测试
程序的静态测试
定义
不要求在计算机上实例执行程序,以一些人工的模拟技术对软件进行分析测试
内容
生成各种引用表
静态错误分析
静态错误分析的内容
类型和单位分析
引用分析
表达式分析
接口分析
调试
内容
确定程序中可疑错误的确切性质和位置
对程序 设计 编码进行修改,排除这个错误
主要调试方法
强行排错
回溯法
归纳法
调试和测试的区别
软件调试是在进行了成功的测试之后才开始的工作。它与软件测试不同,调试的任务是进一步珍断和改正程序中潜在的错误。
3w1h
what when where how