6、单元测试

目录

什么是单元测试

测试对象

测试目的

测试方法

单元测试的内容

1、模块接口测试 

1、在做内外存交换时要考虑: 

 2、模块局部数据结构测试

3.模块独立执行路径测试 

 4.模块内部错误处理测试

5.模块边界条件测试 

单元测试过程 

BMI计算实例

测试过程第一步-理解需求与设计 

测试过程第二、三步-概览源代码、走读源代码

测试过程第四步-设计测试用例 

 测试脚本设计

 单元测试环境-单元测试过程第五步

单元测试环境-单元测试框架 


什么是单元测试

单元测试是在软件开发过程中要进行的最低级别的测试活动, 或者说是针对软件设计的最小单位——程序模块,进行正确性检验 的测试工作。其目的在于发现每个程序模块内部可能存在的差错。

测试对象

结构化编程-函数、过程

面向对象编程-类

测试目的

 发现设计或视线中的逻辑错误,及早暴露代码中的缺陷,便于问题的 定义和解决

测试方法

一般以白盒测试为主、结合黑盒测试的方法,允许多个测试单元的测试并行展开。

单元测试的内容

1、模块接口测试 

对通过被测模块的数据流进行测试,检查进出模块的数据是否正确。

主要涉及以下几方面的内容:

  1. 模块接收输入的实际参数个数与模块的形式参数个数是否一致。
  2. 输入的实际参数与模块的形式参数的类型是否匹配。
  3. 输入的实际参数与模块的形式参数所使用单位是否一致。
  4. 调用其他模块时,所传送的实际参数个数与被调用模块的形式参数的个数是否相同。
  5. 调用其他模块时,所传送的实际参数与被调用模块的形式参数的类型是否匹配。
  6. 调用其他模块时,所传送的实际参数与被调用模块的形式参数的单位一致。
  7.  调用内部函数时,参数的个数、属性和次序是否正确。
  8. 在模块有多个入口的情况下,是否有引用与当前入口无关的参数。
  9. 是否会修改了只读型参数。
  10. 出现全局变量时,这些变量是否在所有引用它们的模块中都有相同的定义。
  11. 有没有把某些约束当做参数来传送。

1、在做内外存交换时要考虑: 

  • 文件属性是否正确;
  •  OPEN与CLOSE语句是否正确;
  •  缓冲区容量与记录长度是否匹配;
  •  在进行读写操作之前是否打开了文件;  
  • 在结束文件处理时是否关闭了文件;  
  • 正文书写/输入错误;  
  • I/O错误是否检查并做了处理。

 2、模块局部数据结构测试

检查局部数据结构能否保持完整性

主要涉及以下几方面的内容:

  • 不正确或不一致的数据类型说明
  • 变量没有初始化
  • 变量名拼写错或书写错
  • 数组越界
  • 非法指针
  • 全局数据对模块的影响

3.模块独立执行路径测试 

对模块中重要的执行路径进行测试。检查由于计算错误、判定错误、控制流错误导致的程序错误。

Checklist:

  • 死代码
  • 错误的计算优先级
  • 精度错误(比较运算错误、赋值错误
  • 表达式的不正确符号  
  • 循环变量的使用错误

 4.模块内部错误处理测试

检查内部错误处理设施是否有效

Checklist:

  • 是否检查错误出现 出现错误,
  • 是否进行错误处理
    • 抛出错误、通知用户、进行记录
  • 错误处理是否有效

5.模块边界条件测试 

检查临界数据是否正确处理

Checklist:

  • 普通合法数据是否正确处理
  • 普通非法数据是否正确处理
  • 边界内最接近边界的(合法)数据是否正确处理
  • 边界外最接近边界的(非法)数据是否正确处理

单元测试过程 

(1)理解设计

(2)概览源代码

(3)走读代码

(4)设计测试用例

(5)搭建测试环境

(6)执行测试用例

(7)重复进行设计测试用例和加载测试

(8)分析判断,给出结论

BMI计算实例

身体质量指数:BMI,Body mass index,用于衡量人体肥胖程度和是否健康

BMI=体重/身高的平方(kg/m2)

测试过程第一步-理解需求与设计 

1.BMI计算的功能要求?

2.输入参数?

3.接口?

4.数据处理格式? 

测试过程第二、三步-概览源代码、走读源代码

测试过程第四步-设计测试用例 

 白盒还是黑盒?

 测试脚本设计

单元测试脚本的基本功能

模拟手工测试:

  • 调用被测单元
  • 执行测试用例
  • 校验实际输出
  • 判断测试结果(通过或失败)
  • 如果发现bug,则记录缺陷

方案1

1.使用“main”函数

2.用户输入身高、体重

3.调用被测方法 4.将返回值输出到屏幕 

 单元测试必须自动化

单元测试脚本的基本功能

模拟手工测试:

  • 调用被测单元 执行测试用例,让脚本自动获取输入
  • 校验实际输出,让脚本自动校验
  • 判断测试结果(通过或失败),让脚本自动判断
  • 如果发现bug,则记录缺陷,让脚本自动记录

 方案2

1.使用“main”函数

2.自行设置输入值(身高、体重)

3.调用被测方法

4.自行比较实际返回值和预期返回值

5.主动报告缺陷

单元测试脚本的基本功能

模拟手工测试:

  • 将测试代码从产品代码中分离出来
  • 调用被测单元
  • 自动获取输入并执行测试用例
  • 自动校验实际输出
  • 自动判断测试结果(通过或失败)
  • 记录测试执行过程,让脚本自动记录 

方案3

1.在test文件夹下放置测试代码

2.自行设置输入值(身高、体重)

3.调用被测方法

4.自行比较实际返回值和预期返回值

5.主动记录执行过程和测试结果报告缺陷 

 单元测试环境-单元测试过程第五步

基本单元本身不是一个独立的程序,自己不能运行,要靠其它部分来调用和驱动。

驱动模块 (Driver)

        被测基本单元的主程序,它接收测试数据,并把数据传送给被测单元,最后输出实测结果。

桩模块 (Stub)

        用来代替被测基本单元调用的其他基本单元。

单元测试环境-单元测试框架 

目前的最流行的单元测试工具是xUnit系列框架,常用的根据语言不同分为JUnit(java),CppUnit(C++),DUnit (Delphi ),NUnit(.net),PHPUnit(Php )等等。该测试框架的第一个和最杰出的应用就是由Erich Gamma (《设计模式》的作者)和Kent Beck(XP(Extreme Programming)的创始人 )提供的开放源代码的JUnit。

JUnit:主要测试用Java语言编写的代码

CppUnit:主要测试用C++语言编写的代码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值