单元测试介绍

单元测试是编写测试代码,用来检测特定的、明确的、细颗粒的功能。单元测试并不一定保证程序功能是正确的,更不保证整体业务是准备的。

单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。

一、测试概念

白盒测试——把测试对象看作一个打开的盒子,程序内部的逻辑结构和其他信息对测试人员是公开的。
回归测试——软件或环境的修复或更正后的“再测试”,自动测试工具对这类测试尤其有用。
单元测试——是最小粒度的测试,以测试某个功能或代码块。一般由程序员来做,因为它需要知道内部程序设计和编码的细节。

二、好处和针对对象
1.单元测试的好处
A、提高开发速度——测试是以自动化方式执行的,提升了测试代码的执行效率。
B、提高软件代码质量——它使用小版本发布至集成,便于实现人员除错。同时引入重构概念,让代码更干净和富有弹性。
C、提升系统的可信赖度——它是回归测试的一种。支持修复或更正后的“再测试”,可确保代码的正确性。
2.单元测试的针对对象
A、面向过程的软件开发针对过程。
B、面向对象的软件开发针对对象。
C、可以做类测试,功能测试,接口测试(最常用于测试类中的方法)。

三、单元测试任务
1.接口功能测试:用来保证接口功能的正确性。
2.局部数据结构测试(不常用):用来保证接口中的数据结构是正确的
2.1.比如变量有无初始值
2.2.变量是否溢出
3.边界条件测试
3.1.变量没有赋值(即为NULL)
3.2.变量是数值(或字符)
3.2.1.主要边界:最小值,最大值,无穷大(对于DOUBLE等)
3.2.2.溢出边界(期望异常或拒绝服务):最小值-1,最大值+1
3.2.3.临近边界:最小值+1,最大值-1
3.3.变量是字符串
3.3.1.引用“字符变量”的边界
3.3.2.空字符串
3.3.3.对字符串长度应用“数值变量”的边界
3.4.变量是集合
3.4.1.空集合
3.4.2.对集合的大小应用“数值变量”的边界
3.4.3.调整次序:升序、降序
3.5.变量有规律
比如对于Math.sqrt,给出n^2-1,和n^2+1的边界
4.所有独立执行通路测试:保证每一条代码,每个分支都经过测试
4.1.代码覆盖率
4.1.1.语句覆盖:保证每一个语句都执行到了
4.1.2.判定覆盖(分支覆盖):保证每一个分支都执行到
4.1.3.条件覆盖:保证每一个条件都覆盖到true和false(即if、while中的条件语句)
4.1.4.路径覆盖:保证每一个路径都覆盖到
4.2.相关软件
4.2.1.Cobertura:语句覆盖
4.2.2.Emma: Eclipse插件Eclemma
5.各条错误处理通路测试:保证每一个异常都经过测试
四、单元测试工具
1.Junit

JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立,逐渐成为源于Kent Beck的sUnit的xUnit家族中最为成功的一个。 JUnit有它自己的JUnit扩展生态圈。多数Java的开发环境都已经集成了JUnit作为单元测试的工具。
2.TestNG
TestNG是一个测试框架,其灵感来自JUnit和NUnit的,但引入了一些新的功能,使其功能更强大,使用更方便。
TestNG是一个开源自动化测试框架;TestNG表示下一代。 TestNG是类似于JUnit(特别是JUnit4),但它不是一个JUnit扩展。它的灵感来源于JUnit。它的目的是优于JUnit的,尤其是当测试集成的类。 
3.Mock
在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法。常见的框架有:EasyMock、JMock、PowerMock、Jmockit、MockMaker、MockCreator、Mockrunner等
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值