2020年5月13日星期三

单元测试

单元测试


单元测试中,所谓单元是如何划分

单元测试的对象通常是软件设计的最小逻辑单元,单元的划分在面向过程的结构化程序中一般是函数或子过程,在面向对象的程序中可以是类或类的成员函数。

软件开发中,为何要进行单元测试

进行单元测试,主要是为了在开发的过程中发现错误,发现错误越早,成本就越低,同样值得考虑的是,在单元测试中发现问题也比较容易,修正问题更容易,将软件开发的过程中,发现越晚,修复成本越高;检查代码是否符合设计和规范,这有利于将来代码的维护

单元测试的目标

目标:单元模块被正确编码
信息能否正确地流入和流出单元
在单元工作过程中,其内部数据能否保持其完整性,包括内部数据的形式,内容及相互关系不发生错误,全局变量在单元中的处理和影响
为限制数据加工而设置的边界处,能否正确工作
单元的运行能否做到满足特定的逻辑覆盖

单元测试的任务

1).检查每一条独立执行路径的测试,并保证每条语句被至少执行一次:
路经测试也称为覆盖测试。在单元测试中,最主要的测试是针对路径的测试。测试用例必须能够发现由于计算错误、不正确的判定或不正常的控制流而产生的错误

1.误解或用错了算符优先级2.混合类型运算3.变量初值错误4.精度不够5.表达式符号错误6.其它

2).检查局部数据结构完整性:
必须测试其内部的数据能否保持完整性,包括内部数据的内容、形式及相互关系不发生错误

1.不适合或不相容的类型说明2.变量无初值3.变量初始化或默认值有错4.不正确的变量名或从来未被使用过5.出现上溢或下溢和地址异常6.其它

3).检查模块接口是否正确:
检查进出程序单元的数据流是否正确。对模块接口数据流的测试必须在任何其他测试之前进行,因为如果不能确保数据正确的输入和输出的话,所有的测试都是没有意义的

1.输入的实际参数与形式参数是否一致(个数、属性、量纲)2.调用其他模块的实际参数与被调模块的形参是否一致(个数、属性、量纲)3.全程变量的定义在各模块是否一致4.外部输入、输出5.文件、缓冲区、错误处理6.其它

4).检查临界数据处理的正确性:
目的是检测在数据边界处模块能否正常工作,边界测试是单元测试的一个关键任务

1.普通合法数据的处理2.普通非法数据的处理3.边界值内合法边界数据的处理4.边界值外非法边界数据的处理5.其它

5).预设的各种出错处理是否正确有效:
良好的设计应该预先估计到投入运行后可能发生的错误,并给出相应的处理措施,使得用户不至于束手无策

1.输出的出错信息难以理解2.记录的错误与实际不相符3.异常处理不当4.未提供足够的定位出错的信息5.其它

6).内存分析(内存泄漏也会导致系统崩溃)

单元的静态测试

三步曲

1.互查2.走查3.评审

没有评论:

发表评论