【软件构造】第七章第五节 测试与测试优先编程

第七章第五节 测试与测试优先编程

  • 确保程序正确性/健壮性的最普遍的手段:测试
    • 设计测试用例
    • 用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:忽略测试方法

猜你喜欢

转载自www.cnblogs.com/hithongming/p/9195179.html