Software Construction Note 7.5
1. 概述
重点:测试的价值和意义;白盒和黑盒的选择;
目的:增强正确的信心,验证包括形式化推理、代码评审和测试;
测试是一项调查,评估属性,提供质量信息,
正确性和健壮性
特点:目标是发现错误,不完全/彻底测试不可行,不能改进质量,
单元、集成、系统测试
静态和动态测试:
静态不执行程序,在源码上进行;强调过程
动态通过给定用例执行程序,可能用到到桩模块和驱动模块技术??强调结果
白盒和黑盒:
白盒针对内部结构,查看源码;
黑盒测试功能/结果,不检查内部源码;
测试和调试:
测试-检查错误;
调试-诊断、纠正已检测到的错误
2. 测试用例
输入+执行条件+期望结果(+先决条件状态或步骤及说明)
原则:代表性、可判定行、可再现性
test suite
3. test-first
边开发边测试
specification/规格说明=方法签名+注释(输入输出)
4. 单元测试
关注最基本组件、模块,如类;
针对内部逻辑和数据结构;
considerations:接口(测试输入输出),数据的一致性,所有语句被执行,boundary,异常处理
5. 自动测试with Junit
@Test关键字
assertEquals/True/False
参数顺序:expected, actual
各个test module独立
@Before/AfterClass/All
@Before/After
【tip: 测试时需要将src和test目录均指定为source folder
6. 黑盒测试(choose case by partitioning;include boundaries in partition)
围绕规范和需求
包括等价类划分、边界值分析、
等价类表示输入条件的一组有效或无效状态??
边界可能在不连续点
7. 白盒测试
黑盒依据规格说明设计、白盒依据功能的具体实现
覆盖所有独立路径、逻辑判断t/f、循环边界及内部、数据结构
8. 代码覆盖度->用例的充分性
用来描述特定测试运行时程序的源代码执行程度(尽可能高
测量标准:子程序和被调用语句的百分
测量工具:EclEmma
9. 集成测试
模块间测试、接口
自上而下和自下而上【各自优点缺点
三明治integration方法
10. 自动测试和回归测试
auto:自动运行测试和检查结果
regression:每次更改代码后都要运行的测试
11. 测试策略
是ADT设计的补充
例如:如何划分等价类和选区边界
目标是进行代码审查时检查测试是否充分