单元测试的代码错误分类及特点
作者:网络转载 发布时间:[ 2010/11/10 11:30:28 ] 推荐标签:
1、功能错误与性能问题
代码错误可分为功能错误和性能问题。
性能分为空间性能和时间性能,空间性能主要是指占用内存和磁盘空间的多少,内存泄漏造成了不必要的内存占用,因此也是空间性能问题;时间性能主要是指占用CPU的时间。性能问题一般通过针对软件整体或大的模块的测试来衡量,不属于单元测试的范畴,例如,针对一个类或一个函数,很难确定是否存在内存泄漏。
功能错误是程序没有按预期工作,包括程序崩溃、输出不正常等等,找出这类错误是单元测试的主要目标,后文所说的"错误"或"代码错误",都是指功能错误,不包括性能问题。
2、代码错误的分类
了解代码错误的分类及特点,有助于选择合适的测试方法和测试工具。
从单元测试的角度来看,代码错误可分为有特征错误和无特征错误,有特征错误又分为语法特征错误和行为特征错误。
语法特征错误并不是语法错误,语法错误会导致编译失败,语法特征错误是指能通过编译,但是根据代码中的某些特征可以判断代码含有或可能含有错误,例如if(N=0),其特征是条件式中出现了赋值操作符,静态分析工具据此可以给出警告,现代编译器通常也会给出警告。
行为特征错误是指具有可捕捉的行为特征的错误,这类错误通常会导致程序崩溃或产生异常。例如给代码中给一个指针赋值,如果指针为空,程序会崩溃,这是行为特征错误。
除了有特征错误外,其他是无特征错误了。例如一个加法函数 int Add(int a, int b){return a-b;};,错误是将加号写成了减号,这种错误不具有任何语法或行为特征。
3、有特征错误的特点
有特征错误具有如下特点:
容易自我暴露:现代的编译器通常会对具有语法特征错误的代码发出警告,行为特征错误通常会导致程序崩溃,从而将错误暴露出来。
易于定位和调试:语法特征错误一般是很容易定位和修正的,行为特征错误也比较容易定位,根据程序的崩溃地址一般能定位到源代码,错误源与错误暴露的位置相隔一般也不太远。
数量较少:有特征错误和无特征错误各占多少比例呢?很难有一个准确的数据,不同的团队,不同的开发人员,比例会有所不同,一般来说 有特征错误不会超过百分之二十,读者可以根据自己的经验评估一下。
可能被自动测试工具发现:有特征错误具有可识别的语法特征或可捕捉的行为特征,因此可能被自动测试工具发现。
总之,有特征错误对于用户来说,当然是不可接受的,但对于开发商来说,发现并消除有特征错误的成本相对较低。
4、无特征错误的特点
数量多:代码错误大多属于无特征错误。
不能被自动测试工具发现:由于不具有可识别的语法特征或可捕捉的行为特征,自动测试工具在没有人工干预的前提下无法发现无特征错误,因为测试工具不可能自动了解程序的功能。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11