`

单元测试设计思路

阅读更多

 

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****()

 

分享到:
评论

相关推荐

    单元测试十大难题及解决思路

    "单元测试十大难题及解决思路" 单元测试是一种软件测试方法,旨在测试软件中的小单元(通常是一个函数或方法),以确保其正确性和稳定性。然而,在实践中,单元测试常常遇到各种难题,以下是十大难题及解决思路: ...

    实用软件单元测试指导

    - **文档记录**:记录测试用例的设计思路和执行结果,便于未来参考。 #### 四、常用测试工具介绍 常见的单元测试工具有: - **JUnit**:Java语言中最流行的单元测试框架之一。 - **pytest**:Python语言中的一个...

    C&C++单元测试培训

    课程目录显示了从入门到深入应用的逐步提升过程,包括了单元测试的基础知识、eTDD(扩展测试驱动开发)、表格驱动测试、局部输入输出处理、白盒覆盖、测试输出与报告、表格驱动进阶、测试思路、用例设计、开发过程...

    数据库单元测试总结~~单元测试

    数据库单元测试是对数据库存储过程、函数、触发器等单独组件进行的测试,旨在验证这些组件在特定条件下的功能是否...通过精心设计和执行的单元测试,我们可以提高代码质量,降低维护成本,并加速软件开发的迭代过程。

    软件测试技术 测试基本概念和单元测试

    - **测试策略:** 测试将按照什么样的思路和方式进行,通常包括单元测试、集成测试、确认测试、系统测试以及验收测试。 #### 四、软件测试的职业与素质要求 **软件测试职业的要求:** - 对软件开发流程有深入了解...

    软件测试设计心得

    软件测试设计是软件开发过程中的关键环节,它旨在确保软件产品的质量、稳定性和可靠性。等价类划分是一种经典的黑盒测试方法,通过这种方法,测试人员能够有效地减少测试用例的数量,但仍然能覆盖大部分可能的输入...

    单元测试、集成测试、系统测试的区别?

    - **单元测试**侧重于测试单个模块的功能和逻辑,是基于白盒测试的思想进行的。 - **集成测试**关注于不同模块之间的接口和交互,基于灰盒测试的方法进行。 - **系统测试**则从最终用户的视角出发,全面验证软件的...

    JAVA单元测试JUnit

    综上所述,JUnit不仅仅是一个单元测试工具,更是设计模式在实践中的典范,展示了模式如何优化代码结构、提高软件质量。对于开发者而言,深入理解JUnit及其背后的设计哲学,不仅能够提升测试技能,还能深化对软件工程...

    单元测试最佳实践(JAVA)

    面向对象编程是软件开发中的一项核心技能,特别是在Java这样的面向对象语言中,理解面向对象的基本概念对于进行单元测试和更广泛的软件测试至关重要。单元测试是软件测试的一个重要分支,它专注于对软件中的最小可...

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

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

    软件测试基本路径法设计测试用例Junit单元测试归纳.pdf

    软件测试基本路径法设计测试用例Junit单元测试归纳 软件测试基本路径法设计测试用例是软件测试中的一种重要方法,它可以帮助测试人员设计更加全面的测试用例,提高测试的效率和有效性。本文将介绍基本路径法设计...

    藏经阁-阿里开发者手册-单元测试专题-115.pdf

    他们采用了链路思想的 SpringBoot 单元测试快速写法,来提高单元测试的效率和效果。 结论 单元测试是软件开发中的重要组成部分,通过单元测试可以确保代码的正确性和可靠性,提高代码的质量和稳定性。本期《阿里...

    C程序单元测试cutest-1.5.zip免积分下载

    CuTest是一款专为C语言设计的单元测试框架,它允许开发者编写和执行针对C代码的测试用例,以确保代码的质量和可靠性。在本案例中,我们关注的是`cutest-1.5.zip`这个压缩包文件,它包含了CuTest框架的1.5版本。 ...

    matlab函数单元测试案例

    设计模式的应用范围广,而框架通常有特定的应用范围,比如单元测试框架用于保证算法开发过程中的功能不退化。 在MATLAB中,基于函数的单元测试构造十分简单。开发者使用主测试函数和若干个局部测试函数来组织测试。...

    EDA 算术逻辑单元ALU设计

    本资源总结了 EDA 算术逻辑单元 ALU 设计的实现过程,涵盖了算术逻辑单元的设计思路、VHDL 代码设计和仿真测试。该设计实现了一个 5 位的算术逻辑单元,能够完成加法、减法、逻辑与、逻辑或和逻辑左移等操作,并具有...

    初中数学单元教学设计策略及案例PPT课件.pptx

    - 单元测试设计:评估学生学习效果的工具,应涵盖单元的主要知识点。 - 评价设计:包括形成性评价和总结性评价,用于监控学生的学习进步。 - 中考分析:考虑中考要求,使教学与考试标准相一致。 4. **一元二次...

    软件测试基本路径法设计测试用例Junit单元测试.pdf

    软件测试基本路径法设计测试用例Junit单元测试.pdf 本资源主要介绍了软件测试中的基本路径法设计测试用例和Junit单元测试。下面将对其中涉及的知识点进行详细的解释。 一、基本路径法 基本路径法是一种软件测试...

    c#单元测试之道中文版

    书中首先会讲解单元测试的基本概念,包括测试驱动开发(TDD)和行为驱动开发(BDD)的思想,以及它们如何影响软件设计。TDD是一种先写测试后写实现代码的开发模式,强调通过编写失败的测试来指导代码的设计。BDD则更注重...

Global site tag (gtag.js) - Google Analytics