• 1. 白盒测试第七章、单元测试
  • 2. 上一章内容回顾基本路径测试 绘制控制流图 计算圈复杂度 导出基本路径集 设计测试用例 执行测试2
  • 3. 本章学习目标单元测试 认识单元测试的一些概念 掌握单元测试的过程 通过一个例子掌握如何进行单元测试 了解单元测试规范3
  • 4. 内容进度单元测试的一些概念 单元测试的步骤 单元测试案例 了解单元测试规范4
  • 5. 单元测试-对象测试对象: 结构化编程-函数、过程 面向对象编程-类5
  • 6. 单元测试-目的和方法测试目的: 发现设计或实现中的逻辑错误,及早暴露代码中的缺陷,便于问题的定位和解决。 测试方法: 一般以白盒测试为主、结合黑盒测试的方法。允许多个测试单元的测试并行展开。6
  • 7. 单元测试-测试内容功能测试 语句和分支覆盖率 模块设计是否合理7
  • 8. 单元测试-测试内容输入和输出接口测试 1.所有的模块都要统一做数据流测试,即:数据不能在模块中正常输入和输出就不能进行其他测试 2.调用所测模块的输入参数与模块的形参,测试他们在个数、属性、顺序上是否匹配 3.所测模块调用子模块时,它输入给子模块的参数与子模块的形参在个数,属性,顺序上是否一致 4.是否修改了只做输入用的形参 5.输出标准函数的参数在个数、属性、顺序上是否正确 6.是否通过限制通过形参来传递 7.模块对于外部文件或者数据库进行读写操作时,必须对这些操作进行测试,比如:在读之前文件是否存在,在结束后是否关闭,缓冲区的大小等等 8.单元中包括的函数参数的输入,参数范围的判断等,输出的类型、值的合理性等 8
  • 9. 单元测试-测试内容内部数据流测试 1.不正确或不一致的数据类型说明 2.使用尚未赋值或尚未初始化的变量 3.错误的初始值或错误的缺省值 4.变量名拼写错误或书写错误 5.不一致的数据类型 6.异常/错误处理 其它要特定要求的测试 1.异常或出错的描述可否理解? 2.异常处理是否合理、出错后对错误定位是否准确 3.提示的错误与实际的错误是否一致 4.对错误条件的处理是否正确 9
  • 10. 内容进度单元测试的一些概念 单元测试的步骤 单元测试案例 了解单元测试规范10
  • 11. 单元测试的步骤理解设计 概览源代码 走读代码(设计测试用例 搭建测试环境 执行测试用例 重复进行设计测试用例和加载测试 分析判断,给出结论11
  • 12. 内容进度单元测试的一些概念 单元测试的步骤 单元测试案例 了解单元测试规范12
  • 13. 例子要求把科学计数法表示的数转换为实数 例如:1.45E+3,模块要将其转换为1450.000000 设计要求:对于不合法的输入报错 例如:含有除了e和E之外的其它字母 能够进行容错处理 例如:输入中有空格、tab键、回车键等; 其它一些科学计数法的基本要求13
  • 14. 测试过程-第一步理解需求和设计:被测试单元业务背景所在层次功能要求其它要求重要程度14
  • 15. 例子分析本模块被其它模块调用,完成数据转换。但是该模块需要调用一个公共模块-decision,该模块的作用主要是对输入的参数进行合法性检测 但是同时要求程序也有容错性设计,例如用户在输入时,前面加了空格、tab键或回车键则认为输入是正确的,但是在字符串中如果有这些字符则认为是不正确的。 如果是一个非科学计数法表示的实数输入后程序怎么样呢?15
  • 16. 测试过程-第二步粗略地看一看源代码: 编码是否符合规范,可以大致看出开发人员编写单元的情况; 以便针对这些薄弱环节设计测试用例。 通过经验,可以看出代码中哪里可能有潜在的缺陷; 大致了解模块的规模、复杂程度16
  • 17. 测试过程-第三步认真地走读代码 一遍或两遍,比较复杂的模块甚至要还要仔细推敲。 17
  • 18. 测试过程-第四步(设计测试用例)18
  • 19. 测试用例(二)19
  • 20. 测试用例(三)20
  • 21. 测试过程-第五步搭建测试环境 驱动模块 桩模块 21
  • 22. 测试环境22
  • 23. 测试过程-第六步执行测试用例23
  • 24. 用例执行结果24
  • 25. 测试过程-第七步根据上面测试用例执行的情况,对于没有覆盖的功能或分支、语句等重新设计测试用例,并进行加载测试,这个过程可能是一个反复的过程。直到最后满足单元测试的要求。25
  • 26. 测试过程-第八步分析判断,并给出结论 通过第三组测试用例可以看出,程序处理e或E后省略+的情况。第四组的第一个测试数据、第七组测试用例、第七组测试用例都可以验证这一点。 通过第九组测试用例可看出,程序不能处理符号与数据分开的情况。 26
  • 27. 单元测试是对软件基本组成单元进行测试。 基本单元可以是函数、类、过程,也可以是任何具有明确功能、规格定义、明确的接口定义 规模一般比较小 单元测试的重点在于发现程序设计或程序实现中的逻辑错误,使问题及早暴露,便于问题的定位解决。 基本属于白盒测试范畴,允许多个测试单元并行展开 27
  • 28. 总结-测试用例设计思路运行第一个测试用例 设计正向测试用例 设计反向测试用例 设计其它测试用例 加载测试用例运行程序、记录测试结果 补充测试用例继续测试,直到满足单元测试的要求28
  • 29. 单元测试整个过程计划设计实施评审29
  • 30. 单元测试整个过程对于单元测试不同的公司对待单元测试的认识不同,投入的各种资源也不尽相同,过程也不完全相同。 测试做的细致程度也不相同. 极限编程中要求为单元测试应该进行在开发之前,每次整合后都要运行单元测试;做任何的代码复核和修改,都要运行单元测试 采取的测试策略可能不同,进入准则也不同,出口也不一样 30
  • 31. 内容进度单元测试的一些概念 单元测试的步骤 单元测试案例 了解单元测试规范31
  • 32. 单元测试规范(一)单元测试规范是为了使单元测试工作按照既定的目标,流程执行的规定。 主要包括: 1.单元的划分规则 2.参与单元测试的人员、职责 3.采用的单元测试工具 4.测试代码的书写要求 5.测试中生成文件的命名以及存储的目录结构 6.实施过程 7.入口准则和出口准则 8.测试产品的验收和评审32
  • 33. 单元测试规范(二)入口准则要素判断准则详细设计说明书 单元测试用例经过审查 获得批准 进入配置库出口准则源代码文件 源代码文件清单源代码文件获得批准 源代码文件进入配置库的源代码区 测试用例源代码通过同级评审软件bug清单 单元测试报告提交测试负责人 提交软件产品配置管理33
  • 34. 本章内容总结单元测试的方法 单元测试的过程 单元测试的实施步骤 34