说实话以前做java项目的时候基本上没用过JUnit测试,最近做android项目的时候遇到单元测试,没办法,只能硬着头皮去研究了。在这里留下自己学习的痕迹,希望有兴趣的大神可以一起讨论讨论,写的不好请勿喷。
1,什么是单元测试
单元测试是对软件基本组成单元/模块进行的测试,又称为模块测试。基本单元/模块可以是函数、类实例、方法、存储过程,也可以是任何具有明确功能、规格定义、明确接口定义、并且其规模是一般比较小的程序代码模块的组合体。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。
2,为什么要单元测试
单元测试的重点在于发现程序设计或实现的逻辑错误,使问题及早暴露,便于问题的定位解决。单元测试中多采用白盒测试和黑盒测试相结合的方法,既关注单元功能,也关注程序模块的逻辑结构。两者结合起来,既可以避免由于过多关注路径而导致测试工作量很大的问题,又可以避免因从外部设计测试用例而可能丢失一些路径的问题。现今,更多观点认为单元测试应该由编码人员实施。
图1 单元测试在V模型中的位置
图2 软件开发过程中Bug的引入、发现及修复与成本的关系图
3 单元测试的类容
1)单元功能测试
单元功能测试的内容如下:
a,单元设计的功能点是否全部实现。
b,运算的优先级和先后执行顺序是否正确
c,计算中精度的处理是否正确。
d,计算中的误差是否会无限放大。
2) 模块接口测试
在单元测试的开始,应对所测模块的数据流进行测试。如果数据不能正确地输入和输出,就不能进行其他测试。对模块接口可能需要进行下面的测试外包项目:
a,调用所测模块时的输入参数与模块的形式参数在个数、属性、顺序上是否匹配。
b,所测模块调用子模块时,它输入给子模块的参数与子模块的形式参数在个数、属性、顺序上是否匹配。
c,模块对外部文件、数据库进行输入/输出时,必须对文件操作进行测试。例如,缓冲区的大小、是否在读写文件前打开文件,在结束前关闭文件等。
d,是否修改了只做输入用的形式参数。
e,输出给标准函数的参数在个数、属性、顺序上是否正确。
f ,全局变量的定义在各模块中是否一致。
g,限制是否通过形式参数来传送。
3) 内部数据流测试
内部数据流测试包括以下几点:
a,不正确或不一致的数据类型说明。
b,使用尚未赋值或尚未初始化的变量。
c,错误的初始值或错误的默认值。
d,变量名拼写错误或书写错误。
e,不一致的数据类型。
f ,全局变量对模块是否产生影响。
4)逻辑路径测试
逻辑路径测试包括以下几点:
a,是否到达重要的功能点路径。
b,逻辑判断的边界点是否正确。
c,异常/错误处理。
d,比较完善的模块设计要求能预见异常或出错的条件,并设置适当的异常处理和出错处理,以便在程序出现异常或错误时,能对出错程序重新进行安排,保证逻辑上的正确性。
重点应该考虑下面几个问题:异常或出错的描述是否可以理解。
e,异常处理是否合理、出错后对错误的定位是否准确。
f ,提示的错误与实际的错误是否一致。
g,对错误条件的处理是否正确。
(欢迎转载,转载请注明出处http://blog.csdn.net/wecanace/article/details/8437452)