单元测试总结

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

 

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

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

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

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

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

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

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

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

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

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

相关文章推荐

单元测试工具 CUnit 简介

1. CUnit简介 1.1 CUnit简要描述 CUnit是一个编写、管理及运行c语言单元测试的系统。它使用一个简单的框架来构建测试结构,并为普通数据结构的测试提供丰富的断言。此外,CUnit...
  • linmy24
  • linmy24
  • 2013年08月25日 17:38
  • 1065

编写单元测试用例(摘抄)

一、 单元测试的概念         单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。         测试的覆...
  • jglie
  • jglie
  • 2011年10月24日 09:32
  • 648

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

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

单元测试总结

本文总结java和android中单元测试,方便测试自己代码的正确性(主要是算法和一些逻辑的正确性),减少bug。 1、Java单元测试 1.1第一种方法 待测试类: package com....

[python] python单元测试经验总结

python写单元大多数都会用到unittest和mock,测试代码覆盖率都会用到coverage,最后再用nose把所有的东西都串起来,这样每次出版本,都能把整个项目的单元测试都运行一遍。 Uni...
  • hf81970
  • hf81970
  • 2014年05月21日 12:15
  • 1795

Bug总结之android单元测试和解析json数据

json字符串和解析 给android应用编写单元测试用例

Spring、junit、mockito单元测试总结

最近小组要引入单元测试,对Spring、junit配合mockito进行了整合,发现网上的资料比较杂,特此整理备忘: 1、利用spring管理Junit 在测试类中添加一下两个注解,分别指定由spri...

单元测试及日志输出总结

应用进行单元测试 "1.0"encoding="utf-8"?> "http://schemas.android.com/apk/res/android"     package="cn.cla...

Java反射学习总结终(使用反射和注解模拟JUnit单元测试框架)

利用反射和注解模拟JUnit4单元测试框架工作流程。

Android 单元测试小总结

单元测试好的文章以及资料,还有各种小问题,持续更新~
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单元测试总结
举报原因:
原因补充:

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