软件测试
由于项目需要进行测试,先来学习一下软件测试中的基本概念, 测试的内容很多,这里就简单介绍一下白盒测试/黑盒测试/灰盒测试.
动态测试
首先介绍一下动态测试 动态测试基本流程:
- 运行被测程序
- 检查运行结果与预期结果的差异
- 分析运行效率和健壮性等性能
动态测试由三部分组成: 测试实例的构造, 被测程序的执行,输出结果分析 从是否了解软件内部结构 (程序源代码) 的角度划分, 我们可以将动态测试分为白盒/黑盒/灰盒测试三类.
白盒测试
白盒测试按照程序内部逻辑结构和编码结构来设计测试数据并完成测试,是一种典型的动态测试方法。白盒测试又称为结构测试或逻辑驱动测试. 白盒测试的主要特点:
- 可以构造测试数据以测试特定程序部分
- 有一定的充分性度量手段
- 可以获得较多工具支持
- 通常只用于单元测试
白盒测试采用的测试方法:
逻辑覆盖
逻辑覆盖是以程序内部的逻辑结构为测试基础的一种白盒测试方法 主要分类:
语句覆盖
语句覆盖要求设计足够多的测试用例,使得被测程序的每一条语句至少被执行一次。
判定覆盖
判定覆盖要求设计足够多的测试用例,使得被测程序中的每一个 (判定) 分支至少通过一次。
条件覆盖
条件覆盖要求设计足够多的测试用例,使得程序中的每一个判定中的每个条件获得所有各种可能结果 判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是逻辑复合的判定表达式中每个条件各种取值的结果.
判定-条件覆盖
判定-条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次。
条件组合覆盖
条件组合覆盖要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次。
路径覆盖
路径覆盖要求设计足够多的测试用例,使得程序中所有的路径都至少执行一次
路径测试
路径测试是根据程序的逻辑控制结构所产生的执行路径进行测试用例设计的方法
基本路径测试
基本路径测试是 McCabe 提出的一种白盒测试方法.
根据过程设计画出程序控制流图 (CFG);
- 计算程序控制流图的 McCabe 环路复杂度;
- 确定一个线性独立路径 (数量由环路复杂度确定) 的基本集合;
- 为上述每条独立路径设计可强制执行该路径的测试用例;
- 测试用例总体保证了语句覆盖和 (单条件判定情况下的) 条件覆盖
数据流测试
数据流测试也称“定义/引用”测试,其目的是发现定义/引用的异常缺陷。
数据流测试重点关注变量的定义与使用.
信息流分析
信息流测试通过分析输入数据、输出数据和语句之间的关系来检查程序错误
覆盖率分析
代码覆盖率
代码覆盖率是指进行白盒测试时测试用例对程序内部逻辑的覆盖程度.
黑盒测试
黑盒测试把测试对象当作看不见内部细节的“黑盒”,在完全不考虑被测程序内部结构和处理过程的情况下,仅仅依据程序功能的需求规格设计测试用例,并推断测试结果的正确性。 黑盒测试也称为功能测试或数据驱动测试。
常用的黑盒测试方法:
等价类划分法
等价类划分方法完全不考虑被测程序的内部结构,只依据程序的规格说明来设计测试用例。
等价类的划分有两种不同的情况:
- 有效等价类 对于程序规格说明来说是合理的、有意义的输入数据构成的集合。
- 无效等价类 对于程序规格说明来说是不合理的、无意义的输入数据构成的集合。
边界值分析法
边界值分析法是对等价类划分方法的补充。 经验显示,大量的错误发生在输入或输出范围的边界上,而不是在输入范围的内部。如果能够针对各种边界情况设计测试用例,则有可能查出更多的错误。
错误推测法
错误推测法依靠测试人员的经验和直觉对被测程序中可能存在的各种错误进行推测,从而有针对性地编写测试用例
因果图方法
因果图方法考虑被测程序输入条件之间的联系和组合关系,描述由多种条件的组合产生多个动作的结构形式,最终生成判定表 (Decision Table),方便设计测试用例
灰盒测试
灰盒测试是一种将黑盒测试、白盒测试、回归测试和变异测试结合在一起的综合测试方法,也是一种软件全生命周期测试方法。