- 测试的概念
- 软件测试由一系列的测试活动组成
- 测试的目的
- 测试的步骤
- 软件测试的过程包括以下阶段
- 测试需求:Checklist
- 测试设计:输入值,环境和预期输出
- 测试执行:基本软件使用
- 测试评估:分析
- 测试自动化
- V Model
- 需求 / 验收测试
- 系统设计 / 系统测试
- 细节设计 / 功能测试(集成测试)
- 编码 / 单元测试
- 软件测试的过程包括以下阶段
- 测试术语
- 测试用例(Test Case)
- 测试数据(输入)
- 执行环境(条件)
- 预期结果(评估)
- 软件可测试性
- 静态和动态测试
- 白盒和黑盒测试
- 白盒测试:通过程序的源代码而不需要界面,用于判断算法、溢出、路径等问题
- 黑盒测试:输入数据观察结果
- 测试和调试
- 测试在于显示存在故障
- 调试在于发现故障所在并修复
- 验证和确认
- 验证(Verification):检查是否符合之前的标准
- 确认(Validation):检查软件是否达到预期的目标
- 测试用例(Test Case)
- Grace Hopper
- 发现第一个 Bug
- 实现了第一个编译语言和编译器
- Fault,Error,Failure
- Fault(故障):静态存在于软件代码中的缺陷
- Error(错误):由于故障造成的软件错误中间状态
- Failure(失效):跟预期输出(通常来自于需求说明)不符的异常行为
- 一个程序是否包含 Fault 是不可判定的
- 一行代码是否为 Fault 是不可判定的
- 一个修复是否正确是不可判定的
- PIE 模型
- Execution(执行):故障代码被执行到
- Infection(感染):产生错误的中间状态
- Propagation(传播):被感染的状态传播到系统外部被观察和发现
- 术语
- 路径:节点序列 [n1, n2, ..., nk]
- 子路径:路径 p 的子序列
- 可达(k):节点 k 的可达节点集合(包括自己)
- 测试路径:从初始节点开始到终结节点结束的路径
- 点覆盖
- 节点覆盖(NC):每个可达节点 n,path(T) 中总有一个路径 p 覆盖 n
- 节点覆盖准则(NCC):测试需求集 TR 包含图 G 中的每一个可达节点
- 边覆盖
- 边覆盖(EC):每个可达边 e,path(T) 中总有一个路径 p 覆盖 e
- 边覆盖准则(ECC):测试需求集 TR 包含图中所有长度不超过 1 的可达边
- 边覆盖一定是点覆盖,i <= j,i-EC <= j-EC,0-EC = NC
- 边对覆盖准则(EPCC): 测试需求集 TR 包含图中所有长度不超过 2 的可达边
- 完全路径覆盖准则(CPCC):测试需求集 TR 包含图中所有的可达路径
- 简单路径和主路径
- 简单路径:如果 p 除起始节点和结尾节点外不含重复节点
- 主路径:一个简单路径 p 称为主路径,如果 p 的任何真子路径均不是简单路径
- 主路径覆盖(PPCC):测试需求集 TR 包含图 G 中的所有主路径
- PPCC subsumes NC & EC
- 控制流图(CFG):怎么画 PPT
- 基本路径覆盖(Basic Path Coverage)
- CFG
- 圈复杂性:V(G) = e - n + 2 = d + 1
- 把平面划分几个区域
- 构造 n 条独立路径
- 设计测试用例
- 数据流覆盖
- 定义:将某个值存储进内存的代码点
- 程序输入值
- 赋值语句的左边变量(x = 44;)
- 实参调用过程中的值改变
- 实例化时方法参数的赋值
- 引用:变量值使用的代码点
- 程序输出值
- 赋值语句的右边变量(x = y;)
- 函数/方法返回值
- 实参调用
- 定义-引用对(DU 对):如果同一语句包含定义变量和引用变量,则定义在引用之前才构成有效的 DU 对
- All-defs coverage(ADC)
- All-uses coverage(AUC)
- All-du-paths coverage(ADUPC)
- 定义:将某个值存储进内存的代码点
- 判定覆盖(DC):判定的 true 和 false 至少各执行一次
- 条件覆盖(CC):每个条件的 true 和 false 各被执行一次
- DC >= SC
- CC not >= SC
- 条件判定覆盖(C/DC):满足 DC 和 CC
- 修订条件判定覆盖(MC/DC):各个条件独立影响判定 true 和 false 各一次
- 基于故障的测试方法
- 变异(Mutation):表达式单一语法改变
- 逻辑操作符故障:
- ORF:& → |
- ENF:(...) → ~(...)
- VNF:a → ~a
- ASF:(a | b) & c → a | (b & c)
- 操作数故障:
- SA0 + SA1 = MC/DC
- 有效等价类
- 取值范围
- 值
- 个数
- 规则
- 强弱等价类
- Min-,Min+,Min
- Max-,Max+,Max
- Nom
- 有限状态机
- 负载测试
- 压力测试
- 并发测试
- 配置测试
- 可靠性测试
- 向前兼容和向后兼容
- 平台兼容
- i18N
- L10N
- G11N = I18N + L10N
- 将各个子功能组合起来,检查能否达到预期要求的各项功能
- 检查误差是否会超过
- 驱动 Driver
- 桩 Stub