单元测试的基本方法

单元测试的对象是软件设计的最小单位——模块。单元测试的依据是详细设描述,单元测试应对模块内所有重要的控制路径设计测试用例,以便发现模块内部的错误。单元测试多采用白盒测试技术,系统内多个模块可以并行地进行测试。

单元测试任务

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

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

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

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

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

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

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

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

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

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

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

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

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

如果模块内包括外部输入输出,还应该考虑下列因素:

1 文件属性是否正确;

2 OPEN/CLOSE语句是否正确;

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

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

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

6是否处理了文件尾;

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

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

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

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

2变量无初值;

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

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

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

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

时间: 2024-11-10 00:19:09

单元测试的基本方法的相关文章

java单元测试如何返回void的方法

大家写单元测试时候,一定比较不喜欢测试那些返回void的方法,因为大多数是执行一些动作序列,感觉没法测试,其实,对于这类方法,如果方法的执行是可能发生异常的,(比如方法本身就用throws语句),那么这种方法就算是void返回值,也是可以测试的. 举个例子,以下就是我写的一个为返回void方法进行的单元测试: @Test public void testServeResource() throws Exception { MockWebServer mockWebServer = new Moc

Android单元测试 - Sqlite、SharedPreference、Assets、文件操作 怎么测?

前言 上篇<Android单元测试 - 几个重要问题> 讲解了"何解决Android依赖.隔离Native方法.静态方法.RxJava异步转同步"这几个Presenter单元测试中常见问题.如果读者你消化得差不多,就接着看本篇吧. 在日常开发中,数据储存是必不可少的.例如,网络请求到数据,先存本地,下次打开页面,先从本地读取数据显示,再从服务器请求新数据.既然如此重要,对这块代码进行测试,也成为单元测试的重中之重了. 笔者在学会单元测试前,也像大多数人一样,写好了sql代码

使用Visual Studio 2013进行单元测试--初级篇

原文:使用Visual Studio 2013进行单元测试--初级篇 1.打开VS2013 --> 新建一个项目.这里我们默认创建一个控制台项目.取名为UnitTestDemo 2.在解决方案里面新增一个单元测试项目.取名为UnitTestDemoTest 创建完毕后项目结构大概如下:   3.进入控制台项目UnitTestDemo的Program类,创建一个Add方法. namespace UnitTestDemo { class Program { static void Main(stri

自动化单元测试实践之路

自动化单元测试并不是什么新鲜事物,它应该是团队持之以恒的事情,可能有很多团队知道如何去做,但是还做得不够好:还有不少团队不知道如何去做,甚至有一些旧系统还不敢去重构,还在坚持着Java中的main方法调用的方式来执行,在漫长等待构建结果. 本文主要讲基于Java项目如何做自动化单元测试的实践. 1 是否值得 关于单元测试的意义,详细参考stackoverflow这篇文章: http://stackoverflow.com/questions/67299/is-unit-testing-worth

java-导师给我个任务,就是怎么用Linux命令来执行一些单元测试。。。。

问题描述 导师给我个任务,就是怎么用Linux命令来执行一些单元测试.... 之前对Linux命令不是很熟悉,想知道有没有可以提供一个DEMO.实现通过Linux命令来执行java的一些单元测试类或者方法 解决方案 那个评论写起来麻烦,还是再这里回答你: 你要使用shell来调用java java命令只能运行含有main方法的类.即使你使用其它的工具它的入口本质还是一个含有main方法的类.这点不用疑虑. 如果你想你自己都可以进行封装 比如你让含有main方法的类充当控制器角色,嘿嘿这个就考验你

单元测试与JUNIT

前言 考察目前关于单元测试和JUnit的文章,要么是介绍单元测试的理论,要么是通过一个简单的HelloWorld例子介绍工具的使用.这样很容易使读者在实际应用中无从下手.因为只有工具而没有理论的指导,将严重消弱了工具的作用,最终只能是沙滩建楼,达不到预期的目标:只有理论而没有工具的支持,也使得理论难有很好的着力点,最终使理论流于空泛.本文试图通过先讲解单元测试理论,进而将这些理论结合到JUnit的使用当中,最后通过对一个实用的.可以重用的时间操作类采用JUnit进行单元测试来完整阐述单元测试的思

单元测试实施解惑(一)

在刚过去的一个月中,我完成了一个小软件框架的设计与实现.期间由于并行开发的需要,在没有对代码完成单元测试的情形下我将之check in到了SVN的主干上,随后的心情很是忐忑.因为我知道我一定会犯错(事实也证明在单元测试完成之前就发现了两个缺陷),害怕给他人带来麻烦并影响自己的形象. 另外,由于对刚加入项目的单元测试环境完全不了解,所以在该框架的前期开发工作中我并没有运用单元测试渐进地保证软件质量.其结果可想而知,我花了不少时间去修复编码过程中遗留下来的低级错误.需要指出的是,所在项目是一个大型嵌

防御性编码和单元测试规则

开发人员编写代码.不幸的是,开发人员也编写缺陷,其中大多数缺陷是在最初的编码阶段加入的.修复这些缺陷成本最低的地方同样也是在开发的初始阶段.如果等到功能测试或者系统测试来捕获并修复缺陷,那么您的软件开发成本就会高得多.在本文中,作者 Scott Will.Ted Rivera 和 Adam Tate 讨论了一些基本的"防御性"编码和单元测试实践,让开发人员更容易找到缺陷 -- 更重要的是,从一开始预防缺陷产生. 防御性驾驶和防御性开发 大多数司机接受过防御性驾驶技术的教育 -- 这有很

单元测试实践的主要问题与解决(1)

本文是我在"第十届中国系统与软件过程改进年会广东会场"所作演讲的整理稿,主要分享单元测试的一些要点.单元测试实践的主要问题,以及如何来解决这些问题. 一.单元测试概述 1.1 什么是单元测试 单元测试,就是针对代码单元的独立测试.为什么需要单元测试呢?这是代码的基本特性决定了的.代码有一个基本特性,就是对数据分类处理. 代码通常会有很多的判定.一个判定,就是一次分类.嵌套的判定,会使分类次数的翻倍. 如果我们在写代码的时候,有一个分类漏掉了,就会产生一个Bug:如果一个分类,虽然写了代