第七章第五节 测试与测试优先编程
- 确保程序正确性/健壮性的最普遍的手段:测试
- 设计测试用例
- 用JUnit写测试程序
- 自动化测试过程
Outline
- 测试和测试优先编程
- 黑盒测试
- 等价类划分、边界值分析
- 代码覆盖度
- 用注释形式撰写测试策略
- JUnit测试用例写法
Notes
## 测试和测试优先编程
【测试的定义】
- 测试:发现程序中的错误 提高程序正确性的信心
- 程序正确确认的基本方法:
- 形式化推理
- 代码评审
- 测试
- 测试是提高软件质量的重要手段
- 确认是否可达到可用的级别
- 关注系统某一侧面的质量特性
- 是否满足需求
- 是否正确响应所有需求
- 性能是否可接受
- 是否可用
- 可否正确部署安装
- 是否达到期望
【测试的分类】
- 单元测试
- 集成测试
- 系统测试
- 回归测试
- 验收测试
## 黑盒测试
- 白盒测试:对程序内部代码结构的测试 只关注代码内部的问题
- 黑盒测试:对程序外部表现出来的行为的测试 采用两个方法
- 测试困难
- 软件行为在离散输入空间中差异巨大
- 大多数正确 少数错误
- bug出现不遵循特定概率分布
- 无统计规律可循
- 软件行为在离散输入空间中差异巨大
- 代码覆盖度
- 通常无法完全覆盖,因此只需尽量提高
- 代码覆盖率高的程序在测试期间执行了更多的源代码,与低代码覆盖率的程序相比,包含未检测到的软件错误的可能性较低
- 基本覆盖标准:函数、语句、决策或分支、条件或谓词、路径
- 覆盖强度:路径 > 分支 > 语句
转自 长安蒹葭的博客
9. 以注释的形式撰写测试策略
(1)在测试类的顶端写策略
(2)在每个测试方法前说明测试用例是如何选择的
10. JUnit 测试用例写法
(1)@Before:每个测试方法前执行一次
(2)@After:每个测试方法后执行一次
(3)@Test:表明测试方法,内含Assert语句
·@Test(expected=*.class):对错误的测试,expected的属性值是一个异常
·@Test(timeout=xxx):测试方法在制定的时间之内没有运行完则失败
(4)@ignore:忽略测试方法