单元测试

Posted wasi-991017

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了单元测试相关的知识,希望对你有一定的参考价值。

5.1 单元测试概述


 

  ·定义:软件测试的基础,对软件基本组成单元的测试;

  ·目的:检测和判断每个程序模块的行为是否与期望一致;

  ·合格代码:

    ·正确性:代码逻辑必须正确,能够实现预期功能;(优先级最高)

    ·清晰性:代码必须简明易懂,注释准确没有歧义;

    ·规范性:代码必须符合企业或部门所定义的共同规范(如命名规则、代码风格);

    ·高效性:尽可能降低代码的运行时间;

  ·单元:在不同编程环境下各有不同:

    ·C语言:函数或子过程;

    ·C++或Java:类或类所包含的方法;

  ·最好是开发进行时协同开展单元测试。

 

5.2 单元测试框架(Java)


 

技术图片

 

  ·被测单元通常不是一个完整的程序,需要一些 辅助模块 来驱动运行;

  ·辅助模块:

    ①驱动模块:

      ·定义:被测单元的主程序;

      ·目的:模拟被测单元的上层模块;

      ·注意事项:尽量保证每个测试用例只对应一个被测单元,而不要将多个被测单元用一个测试用例进行测试;

    ②测试桩模块(存根模块):

      ·定义:被测单元的子模块;

      ·目的:模拟被测单元所调用的子模块,接受被测单元的调用,并返回调用结果给被测单元;

 

5.3 单元测试内容


 

  单元测试的主要任务:验证程序单元实现已达到详细设计的预期要求。

 

5.3.1 算法逻辑

  ·检查算法及其内部各处理逻辑的正确性;

  ·例:a < b 时逻辑处理未正确实现:

技术图片

 

5.3.2 模块接口

  ·检查模块接口的正确性:参数个数、类型、次序、返回值类型;

  ·检查模块调用其他模块代码的正确性:实际参数个数、类型、次序、返回值;

  ·例:参数data为String类型,应转换为数值型计算,不应该直接累加计算:

技术图片

 

5.3.3 数据结构

  ·检查全局和局部数据结构的定义是否正确实现和使用;

  ·例:先来先服务的调度任务应采用 队列 数据结构,测试时检查队列是否正确实现或是否误用 栈等其他数据结构

 

5.3.4 边界条件

  ·检查程序中每个边界条件是否实现正确;

  ·边界:

    ·本身的边界;

    ·变量类型本身的边界;

  ·例:有两个判定准则:

    ①依次判断构造三角形每条边的取值是否在正常范围内;

    ②使用diffOfBorders方法测试是否所有两边之差都小于第三条边:

技术图片

 

5.3.5 独立路径

  ·检查是否存在遗漏或未正确实现的处理逻辑;

  ·处理逻辑遗漏通常会造成部分独立路径缺失。

  ·例:未对三角形边C进行数值验证,同时未将A和C两边之差与边B的数值进行对比:

 技术图片

 

5.3.6 错误处理

  ·检查单元模块是否包含了正确的错误处理代码;

  ·目的:避免程序出现错误或异常时直接崩溃;

  ·存在以下情况认为模块未提供有效的错误处理功能:

    错误描述难以理解,不能提供有效的错误处理功能;

    错误描述与实际情况不符;

    错误处理不正确,或错误处理滞后。

  ·例:计算平均值之前,未对double数组进行校验,没有对潜在的除零错误进行处理:

技术图片

 

5.3.7 输入数据

  ·检查输入数据的正确性、规范性和合理性。

  ·例:应录入一些不合理便(如0、-10)进行测试:

技术图片

 

5.3.8 表达式与SQL语句

  ·检查单元模块所包含表达式及SQL语句语法和逻辑的正确性;

  ·表达式应保证不含二义性。

 

5.4 慕测单元测试实例


 

以上是关于单元测试的主要内容,如果未能解决你的问题,请参考以下文章

什么是单元测试?如何做好单元测试?

测试篇——初探单元测试

单元测试

Java单元测试介绍

Android如何进行单元测试(转)

实验单元测试