单元测试总结

转载 2011年01月12日 10:02:00

 

  单元测试的基本要求为:对程序模块的所有独立的执行路径至少要测试一次;对所有的逻辑判定,其结果为真、假的两种情况至少要测试一次;对程序进行边界检查;检验内部数据结构的有效性。

  单元测试的基本方法是将输入分类(等价类),设定对应的正确输出,执行测试,由工具自动判断实际输出是否相符。而工具不可能自动了解程序的设计功能,因此,要达到起码的测试效果,用例必须由能够了解代码功能者人工设计。

  白盒测试的主要用例设计 方法有6种:

   语句覆盖,使程序的每一条可执行语句至少被执行一次。可以很直观地从源代码得到测试用例,无须细分每条判定表达式。由于这种测试方法仅仅针对程序逻辑中 显式存在的语句,对于隐藏的条件和可能到达的隐式逻辑分支是无法测试的。语句覆盖对于多分支的逻辑运算是无法全面反映的,它只在乎运行一次,而不考虑其他 情况。

   判定覆盖,也叫分支覆盖,使程序中每个分支判断的每一种可能都至少被执行一次。判定覆盖比语句覆盖要多几乎一倍的测试路径,当然也就具有比语句覆盖更强 的测试能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。往往大部分的判定语句是由多个逻辑条件组合而成(如,判定 语句中包含AND、OR、CASE),若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。

  条件覆盖,使程 序中每一个分支判断中的每一个条件的可能结果至少被执行一次。条件覆盖比判定覆盖,增加了对符合判定情况的测试,增加了测试路径。要达到条件覆盖,需要足 够多的测试用例,但条件覆盖并不能保证判定覆盖。条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。

  判定/条件覆盖,使程序同时满足条件覆盖和判定覆盖。判定/条件覆盖满足判定覆盖准则和条件覆盖准则,弥补了二者的不足,缺点是未考虑条件的组合情况。

   条件组合覆盖,使程序中每一个分支判断中的每一个条件的每一种组合都至少被执行一次。条件组合覆盖准则满足判定覆盖、条件覆盖和判定/条件覆盖准则。更 改的判定/条件覆盖要求设计足够多的测试用例,使得判定中每个条件的所有可能结果至少出现一次,每个判定本身的所有可能结果也至少出现一次。并且每个条件 都显示能单独影响判定结果。但线性地增加了测试用例的数量。

  路径覆盖,使程序中所有可能的路径都至少被执行一次。这种测试方法可以对程序进行彻底的测试,比前面五种的覆盖面都广。但需要设计大量、复杂的测试用例,使得工作 量呈指数级增长。

  正确使用白盒测试,要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。

"测试用例设计与jUnit单元测试" 实验心得

实验内容 l  针对Lab4评审和优化过的程序,设计白盒测试用例; l  针对Lab1中包含的需求,设计黑盒测试用例; l  在jUnit环境下撰写测试代码并执行测试; l  私用Infini...
  • fanyang_1996
  • fanyang_1996
  • 2016年12月22日 09:49
  • 1251

单元测试和白盒测试相关总结

单元测试和白盒测试相关总结!
  • fengbingchun
  • fengbingchun
  • 2014年10月25日 21:40
  • 7046

VS2015+NUnit+OpenCover 完成单元测试代码覆盖率测试

使用 NUnit 能够快速开发出易于维护的单元测试,NUnit已经在很到项目中使用,但是 NUnit 框架本身并没有提供代码覆盖率的计算和查看功能。但是 xUnit 和 微软的 VSTS 都自带了 C...
  • fwj380891124
  • fwj380891124
  • 2016年07月26日 08:57
  • 3817

单元测试之道(简化总结版)

  • 2014年11月10日 19:24
  • 466KB
  • 下载

Spring对Controller、Service、Dao进行Junit单元测试总结

Spring对Controller、Service、Dao进行Junit单元测试总结​ 所有用Junit进行单元测试,都需要下面的配置@RunWith(SpringJUnit4ClassRunne...
  • u013041642
  • u013041642
  • 2017年05月08日 19:58
  • 7974

使用maven执行单元测试总结

maven本身没有单元测试框架,但是maven的default生命周期的test阶段绑定了maven-surefire-plugin插件,该插件可以调用Junit3、Junit4、TestNG等Jav...
  • Rainnnbow
  • Rainnnbow
  • 2015年12月29日 10:04
  • 8535

python单元测试之unittest框架使用总结

一、什么是单元测试 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。 比如对于函数abs(),我们可以编写的测试用例为: (1)输入正数,比如1、1.2、0.99,期待返...
  • xiaoquantouer
  • xiaoquantouer
  • 2017年07月13日 18:21
  • 1933

Java基础学习总结(89)——为什么单元测试应该我们开发人员来写

软件测试是为了保证项目质量,单元测试可以快速执行测试回归测试,做好单元测试可以大大提升测试效率,项目开发真正达到敏捷效果。 单元测试做什么? 1. 核心类方法 2. 异常处理 ...
  • u012562943
  • u012562943
  • 2016年12月22日 09:50
  • 910

Android 单元测试(三)总结

Android 单元测试
  • u010218288
  • u010218288
  • 2015年08月25日 11:04
  • 432

使用spring配合Junit进行单元测试的总结

最近公司的项目和自己的项目中都用到了spring集成junit进行单元测试,总结一下几种基本的用法: 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@Ru...
  • x1066988452
  • x1066988452
  • 2016年12月08日 15:43
  • 3138
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单元测试总结
举报原因:
原因补充:

(最多只允许输入30个字)