当前位置: 首页 > news >正文

测试理论知识四:大型软件的测试技巧——单元测试

1. 模块测试/单元测试

模块测试也被称为单元测试,本文章称单元测试为主。

对于小的程序测试,我们可以在一定时间内完成,如果面对的是大型程序,等程序开发完成之后我们再进行测试,那会大大降低我们的效率。

单元测试是对程序中的单个子程序、子程序或过程进行测试的过程,也就是说,一开始并不是对整个程序进行测试,而是先将注意力集中在对构成程序的较小模块的测试上面。

2. 单元测试的测试用例设计

单元测试总体上是面向白盒测试。

所以我们在编写单元测试的用例时,所使用的测试策略需要偏向于白盒的测试策略。

白盒测试策略如下:

语句覆盖、判断覆盖、条件覆盖、判定/条件覆盖、多重条件覆盖。

语句覆盖:语句覆盖是指测试用例可以被测试的目标程序的每行代码都执行。

判断覆盖:测试用例编写应覆盖代码中的判断条件,包括成立与不成立。

条件覆盖:测试用例编写应覆盖代码中的条件,包括判断与循环条件的成立与不成立的情况。

判定/条件覆盖:判断覆盖与条件覆盖的综合情况。

多重条件覆盖:测试用例编写应覆盖代码中的多重条件判断,包括多重循环与判断嵌套等情况。

3. 增量测试

如同我们开头时问的问题,软件是否先独立的进行每个模块的测试,然后组合成一个完成的程序,还是组装成一个完整的程序后一次性测试?

针对以上两个问题,我们提出了增量测试和非增量测试。

非增量测试:每个单元进行独立的测试,测试完成之后组装起来。

增量测试:每个单元进行测试,测试后的每个单元进行组装,类似于盖高楼大厦。

3.1 增量测试与非增量测试的区别

  1. 非增量测试所需的工作量要多一些。

  2. 如果使用了增量测试,可以较早的发现模块中与不匹配接口、不正确假设相关的编程错误。

  3. 如果使用了增量测试,调试会进行的容易一些。

  4. 增量测试会将测试进行的更彻底。

  5. 非增量测试所占用的机器时间显得少一些。

  6. 模块测试阶段开始时,如果使用的是非增量测试,就会有更多的机会进行并行操作。

3.2 自顶向下测试与自底向上测试

自顶向下的测试是从程序的顶部或初始模块开始,当一个模块的要开始测试时,需要确保调用它的模块已经被测试了。

优点

  1. 如果主要的缺陷发生在程序的顶层将非常有利。

  2. 一旦引入I/O功能,提交测试用例会更容易

  3. 早期的程序框架可以进行演示,并可激发积极性

缺点:

  1. 必须开发桩模块

  2. 桩模块要比最初表现的更复杂

  3. 在引入I/O功能之前,向桩模块中引入测试用例比较困难

  4. 创建测试环境可能很难,甚至无法实现

  5. 观察测试输出很困难

  6. 使人误解设计和测试可以交迭进行

  7. 会导致特定模块测试的完成延后

自底向上测试开始于程序中的终端模块,当一个模块要开始测试时,需要确保他调用的模块都被测试完成。

优点

  1. 如果主要的缺陷发生在程序的底层将非常有利

  2. 测试环境比较容易建立

  3. 观察测试输出比较容易

缺点:

  1. 必须开发驱动模块。

  2. 直到最后一个模块添加进去,程序才形成一个整体。

http://www.lryc.cn/news/264986.html

相关文章:

  • 安防监控系统/磁盘阵列/视频监控EasyCVR平台微信推送步骤大公开
  • 算法与数据结构--特殊有序集的线性时间排序算法
  • windows 动态库和静态库 介绍
  • 微软官方镜像下载大全(windows iso 官方镜像)
  • ceph块存储学习
  • 开发模型和测试模型
  • Kubectl 部署简单应用
  • Flink电商实时数仓(三)
  • 四种消息队列,如何选型
  • flutter开发windows应用的库
  • 机器学习--线性回归
  • 【Spring Boot】面试题汇总,带答案的那种
  • 【大模型】快速体验百度智能云千帆AppBuilder搭建知识库与小助手
  • 字符串压缩
  • MsSQL中的索引到底长啥样,查找过程怎么进行
  • WPF 全局异常处理
  • Flink系列之:Elasticsearch SQL 连接器
  • java中将Map集合、对象、字符串转换为JSON对象
  • 理解Spring中bean的作用域
  • edge中以右键“打印”的方式“保存”当前页面的pdf形式,下载过程中卡进度的问题
  • c# 使用OpenCV
  • 数据库连接问题 - ChatGPT对自身的定位
  • 常见可视化大屏编辑器有哪些?
  • 利用ffmpeg cv2取h265码流视频(转换图片灰屏问题解决)
  • Android Uri scheme协议file转content
  • 【Jenkins】远程API接口:Java 包装接口使用示例
  • 未能加载工具箱项问题的解决
  • 算法模板之栈图文详解
  • Ajax Search Pro Live WordPress网站内容实时搜索插件
  • mysql SQL执行超时问题