`

单元测试设计思路

阅读更多

 

1.     单元测试的任务

单元测试任务包括:模块接口测试;模块局部数据结构测试;模块边界条件测试;模块中所有独立执行通路测试;模块的各条错误处理通路测试。

模块接口测试是单元测试的基础。只有在数据能正确流入、流出模块的前提下,其他测试才有意义。测试接口正确与否应该考虑下列因素:

、输入的实际参数与形式参数的个数是否相同;

2 输入的实际参数与形式参数的属性是否匹配;

、输入的实际参数与形式参数的量纲是否一致;

4 调用其他模块时所给实际参数的个数是否与被调模块的形参个数相同;

5 调用其他模块时所给实际参数的属性是否与被调模块的形参属性匹配;

6、调用其他模块时所给实际参数的量纲是否与被调模块的形参量纲一致;

7 调用预定义函数时所用参数的个数、属性和次序是否正确;

、是否存在与当前入口点无关的参数引用;

9 是否修改了只读型参数;

10 、对全程变量的定义各模块是否一致;

11、是否把某些约束作为参数传递。

如果模块内包括外部输入输出,还应该考虑下列因素:
  、文件属性是否正确;

  2 OPEN/CLOSE语句是否正确;

  3 格式说明与输入输出语句是否匹配;

  4、缓冲区大小与记录长度是否匹配;

  5、文件使用前是否已经打开;

  6、是否处理了文件尾;

  7、是否处理了输入/输出错误;

  8、输出信息中是否有文字性错误;

检查局部数据结构是为了保证临时存储在模块内的数据在程序执行过程中完整、正确。局部数据结构往往是错误的根源,应仔细设计测试用例,力求发现下面几类错误:

  、不合适或不相容的类型说明;

  2、变量无初值;

  3、变量初始化或省缺值有错;

  4、不正确的变量名(拼错或不正确地截断);

  5出现上溢、下溢和地址异常。

  除了局部数据结构外,如果可能,单元测试时还应该查清全局数据(例如FORTRAN的公用区)对模块的影响。

  在模块中应对每一条独立执行路径进行测试,单元测试的基本任务是保证模块中每条语句至少执行一次。此时设计测试用例是为了发现因错误计算、不正确的比较和不适当的控制流造成的错误。此时基本路径测试和循环测试是最常用且最有效的测试技术。计算中常见的错误包括:

 1 误解或用错了算符优先级;

 2、混合类型运算;

 3、变量初值错;

 4、精度不够;

 5、表达式符号错。

比较判断与控制流常常紧密相关,测试用例还应致力于发现下列错误:

  1、不同数据类型的对象之间进行比较;

  2、错误地使用逻辑运算符或优先级;
  3、因计算机表示的局限性,期望理论上相等而实际上不相等的两个量相等;
  4、比较运算或变量出错;
  5、循环终止条件或不可能出现;
  6、迭代发散时不能退出;
  7、错误地修改了循环变量。
  一个好的设计应能预见各种出错条件,并预设各种出错处理通路,出错处理通路同样需要认真测试,测试应着重检查下列问题:
  1、输出的出错信息难以理解;
  2、记录的错误与实际遇到的错误不相符;
  3、在程序自定义的出错处理段运行之前,系统已介入;
  4、异常处理不当;
  5、错误陈述中未能提供足够的定位出错信息。
     
边界条件测试是单元测试中最后,也是最重要的一项任务。众的周知,软件经常在边界上失效,采用边界值分析技术,针对边界值及其左、右设计测试用例,很有可能发现新的错误。

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

了解了单元测试的任务,下面介绍测试用例,测试用例也是单元测试的核心,决定你的单元测试是否成功。测试用例的核心是输入数据。预期输出是依据输入数据和程序功能来确定的,也就是说,对于某一程序,输入数据确定了,预期输出也就可以确定了,至于生成/销毁被测试对象和运行测试的语句,是所有测试用例都大同小异的。

单元测试测试用例一般采用逻辑覆盖法和基本路径法进行设计。

2.1.   逻辑覆盖法

逻辑覆盖是以程序内部的逻辑结构为基础的测试用例设计技术,这一方法要求测试人员对程序的逻辑结构有清楚的了解。逻辑覆盖可分为:语句覆盖、判定覆盖、条件覆盖、判定-条件覆盖、条件组合覆盖与路径覆盖。

1. 语句覆盖就是设计若干个测试用例,运行所测程序,使得每一可执行语句至少执行一次。

2. 判定覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。

3. 条件覆盖就是设计若干个测试用例,运行所测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。

4. 判定--条件覆盖就是设计足够的测试用例,使得判断中每个条件的所有可能取值至少执行一次,同时每个判断的所有可能判断结果也至少执行一次。

5. 条件组合覆盖就是设计足够的测试用例,运行所测程序,使得每个判断的所有可能的条件取值组合至少执行一次。

6. 路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径。

2.2.   基本路径法

基本路径测试法是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。设计出的测试用例要保证在测试中程序的每个可执行语句至少执行一次。基本路径测试法包括以下5个方面:

1. 程序的控制流图:描述程序控制流的一种图示方法。

2. 程序环境复杂性:McCabe复杂性度量;从程序的环路复杂性可导出程序基本路径集合中的独立路径条数,这是确定程序中每个可执行语句至少执行依次所必须的测试用例数目的上界。

3. 导出测试用例。

4. 准备测试用例,确保基本路径集中的每一条路径的执行。

5. 图形矩阵:是在基本路径测试中起辅助作用的软件工具,利用它可以实现自动地确定一个基本路径集。

2.3.   单元测试用例设计案例

好久前看过一篇非常不错的单元测试用例设计案例,但没有保留下来,感觉好可惜。一个好的单元测试案例对单元测试的入门是非常重要,希望这个案例能够帮助你对单元测试一些了解和对单元测试重要性的一个认识。

例如币种换算单元函数,要对这个函数进行单元测试。应该怎么去做个函数的单元测试呢?首先考虑的是该币种换算单元函数的输入输出参数,其次是输出结果与期望值是否相等;再次建立单元测试处理类,并相应建立测试该函数的测试方法,按照JUnit规范一般是test****()

 

分享到:
评论

相关推荐

    实施单元测试的设计思路

    1.单元测试的任务  单元测试任务包括:1模块接口测试;2模块局部数据结构测试;3模块边界条件测试;4模块中所有独立执行通路测试;5模块的各条错误处理通路测试。  模块接口测试是单元测试的基础。只有在数据能正确...

    软件单元测试计划(UTP)·模板·中英版

    软件单元测试计划(UTP)·模板·中英版 测试计划 测试的设计思路和方法 测试顺序 测试方法 工作交付件

    软件测试-ui自动化-PO设计思路-学习研究

    在UI自动化测试中,POM模式是一种设计思路,它的核心思想是方法的封装。它将方法类和页面元素进行分离,增强了代码的可维护性。值得注意的是,这种分层的设计模式,最好也是从线性代码开始,逐步将代码进行升级,...

    软件测试 电梯测试用例思想

    包括电梯的功能介绍 常见电梯测试的重点 包括压力测试,界面测试

    电力机车逻辑控制单元测试台硬件系统设计

    介绍了电力机车逻辑控制单元(LCU)测试台的硬件设计方案,本方案采用模块化设计思想,整个系统分成五个功能模块,文中给出了各个功能模块的具体设计方法,并对其功能进行了详细的分析,最后给出了系统的主要电路。

    单元测试知识问答[2]

    传统的单元测试是很费时费力的工作,主要时间消耗在于:编写测试代码、设计测试用例,如果开发工具能自动生成测试代码,并且具有快速设计测试用例的功能,那么测试费时就很少;另一方面,如果 单元测试知识问答[2] ...

    慕课-程序设计入门——C语言-单元测试题.zip

    结构清晰:C语言采用结构化编程思想,有助于培养学生的逻辑思维能力和程序设计能力。通过C语言的学习,学生可以掌握如何合理组织代码、设计算法和数据结构。 资源丰富:C语言拥有丰富的学习资源和社区支持,包括...

    敏捷设计 GameTest

    随着敏捷开发方法的风行,单元测试的思想也在遍地开花。越来越多的开发人员和公司开始学习和接受这种思想,并且在日常的开发工作中进行一些尝试。但是在尝试中,人们却遇到了不少问题和障碍。比如,如何将单元测试的...

    机车LCU通用测试台设计

    介绍了通用型DKL/LCU逻辑控制单元测试的设计思路,特别是对其软件设计部分作了较为详细的阐述。

    论文研究-方面单元测试框架的设计与实现.pdf

    基于并行性思想,一种伪并行I/O调度策略被应用在带缓存的磁盘阵列系统之中。该调度策略力图在外部I/O请求响应和内部数据迁移之间形成并行操作,最大限度地提高close队列的I/O请求的数据传输率。实验表明,该策略有效...

    电力机车逻辑控制单元测试台硬件系统设计方案

    电力机车逻辑控制单元(Logic Control Unit——LCU)是电力机车上重要的控制部分,它使用现代化的电子元件来取代原来电力机车上的有触点继电器,从而提高了电力机车... 本文中的LCU测试台系统采用的是模块化设计思想,系

    单元测试和压力测试是软件开发质量的保证

    压力单元测试和压力测试是软件开发质量的保证软件测试一个理想的项目应该是单元测试和压力测试的平衡。掌怕压力测试的方式,成功发现它的极限状况,对于程序资源...两者的区别,在于选取测试实例在设计上的指导思想的不

    软件测试方法和技术(五)

    5.2 单元测试的目标和任务 5.3 静态测试技术的运用 5.4 动态测试技术的运用 5.5 调试与评估 5.6 单元测试的过程与文档管理 5.7 单元测试的常用工具简介 6.1 系统集成的模式与方法 6.2 功能测试 6.3 系统测试 6.4 ...

    软件测试方法和技术(二)

    5.2 单元测试的目标和任务 5.3 静态测试技术的运用 5.4 动态测试技术的运用 5.5 调试与评估 5.6 单元测试的过程与文档管理 5.7 单元测试的常用工具简介 6.1 系统集成的模式与方法 6.2 功能测试 6.3 系统测试 6.4 ...

    软件测试方法和技术(四)

    5.2 单元测试的目标和任务 5.3 静态测试技术的运用 5.4 动态测试技术的运用 5.5 调试与评估 5.6 单元测试的过程与文档管理 5.7 单元测试的常用工具简介 6.1 系统集成的模式与方法 6.2 功能测试 6.3 系统测试 6.4 ...

    软件测试方法和技术(朱少民).rar

    4 第5章 单元测试 5.1 什么是单元测试 5.2 单元测试的目标和任务 5.3 静态测试技术的运用 5.4 动态测试技术的运用 5.5 调试与评估 5.6 单元测试的过程与文档管理 5.7 单元测试的常用工具简介 4 5 第6章 集成测试和...

    软件测试实用教程——方法与实践(第2版)[武剑洁][电子教案和教学指南].rar

    围绕软件测试的核心概念,介绍了软件测试的基本方法和过程,并通过丰富的案例予以...最后提供了综合应用案例实践,从自动化测试的角度,结合单元测试工具、功能测试工具和性能测试工具,讨论自动化测试的设计与实施。

    遵循AISG2.0协议的多频段电调天线控制单元设计

    软件设计部分介绍了协议栈、下倾角控制模块的设计思路,并详细阐述了固件更新功能的实现方法。测试和实际应用证明,该设计方案在电气性能和协议完整性等方面符合AISG2.0的规范要求,且具有兼容性好、长期运行稳定可靠等...

    计算机硬件课程设计 算法逻辑单元

    设计思路 根据上表的描述,可以定义真值表,根据真值表将S1S0四种情况下分别画出相应的F和R的AB关于C的卡诺图,由此可以分别推算出F和R的逻辑表达式,根据此表达式便可以画出对应的数字逻辑电路。

    Android 单元测试、Monkey、LeakCanary测试demo项目【粗略示例】.zip

    这部分内容包含了多个精心设计的Android项目案例,从需求分析、设计思路到实现过程,都有详细的讲解和代码示例。学习者可以通过实际操作,深入了解Android开发的整个流程,提升自己的实战能力。 此外,我们还提供了...

Global site tag (gtag.js) - Google Analytics