Skip to content

Instantly share code, notes, and snippets.

@Cee
Last active April 2, 2020 12:36
Show Gist options
  • Save Cee/69a8437a59a60e949282 to your computer and use it in GitHub Desktop.
Save Cee/69a8437a59a60e949282 to your computer and use it in GitHub Desktop.
ST

了解测试的基本概念

  • 测试的概念
    • 软件测试由一系列的测试活动组成
  • 测试的目的
  • 测试的步骤
    • 软件测试的过程包括以下阶段
      • 测试需求:Checklist
      • 测试设计:输入值,环境和预期输出
      • 测试执行:基本软件使用
      • 测试评估:分析
      • 测试自动化
    • V Model
      • 需求 / 验收测试
      • 系统设计 / 系统测试
      • 细节设计 / 功能测试(集成测试)
      • 编码 / 单元测试
  • 测试术语
    • 测试用例(Test Case)
      • 测试数据(输入)
      • 执行环境(条件)
      • 预期结果(评估)
    • 软件可测试性
    • 静态和动态测试
    • 白盒和黑盒测试
      • 白盒测试:通过程序的源代码而不需要界面,用于判断算法、溢出、路径等问题
      • 黑盒测试:输入数据观察结果
    • 测试和调试
      • 测试在于显示存在故障
      • 调试在于发现故障所在并修复
    • 验证和确认
      • 验证(Verification):检查是否符合之前的标准
      • 确认(Validation):检查软件是否达到预期的目标

Bug

  • Grace Hopper
    • 发现第一个 Bug
    • 实现了第一个编译语言和编译器

PIE 模型

  • 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment