单元测试的代码错误分类及特点

发表于:2010-11-10 11:19

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:未知    来源:51Testing软件测试网采编

  1、功能错误与性能问题

  代码错误可分为功能错误和性能问题。

  性能分为空间性能和时间性能,空间性能主要是指占用内存和磁盘空间的多少,内存泄漏造成了不必要的内存占用,因此也是空间性能问题;时间性能主要是指占用CPU的时间。性能问题一般通过针对软件整体或大的模块的测试来衡量,不属于单元测试的范畴,例如,针对一个类或一个函数,很难确定是否存在内存泄漏。

  功能错误就是程序没有按预期工作,包括程序崩溃、输出不正常等等,找出这类错误是单元测试的主要目标,后文所说的"错误"或"代码错误",都是指功能错误,不包括性能问题。

  2、代码错误的分类

  了解代码错误的分类及特点,有助于选择合适的测试方法和测试工具。

  从单元测试的角度来看,代码错误可分为有特征错误和无特征错误,有特征错误又分为语法特征错误和行为特征错误。

  语法特征错误并不是语法错误,语法错误会导致编译失败,语法特征错误是指能通过编译,但是根据代码中的某些特征可以判断代码含有或可能含有错误,例如if(N=0),其特征是条件式中出现了赋值操作符,静态分析工具据此可以给出警告,现代编译器通常也会给出警告。

  行为特征错误是指具有可捕捉的行为特征的错误,这类错误通常会导致程序崩溃或产生异常。例如给代码中给一个指针赋值,如果指针为空,程序就会崩溃,这就是行为特征错误。

  除了有特征错误外,其他就是无特征错误了。例如一个加法函数 int Add(int a, int b){return a-b;};,错误是将加号写成了减号,这种错误不具有任何语法或行为特征。

  3、有特征错误的特点

  有特征错误具有如下特点:

  容易自我暴露:现代的编译器通常会对具有语法特征错误的代码发出警告,行为特征错误通常会导致程序崩溃,从而将错误暴露出来。

  易于定位和调试:语法特征错误一般是很容易定位和修正的,行为特征错误也比较容易定位,根据程序的崩溃地址一般就能定位到源代码,错误源与错误暴露的位置相隔一般也不太远。

  数量较少:有特征错误和无特征错误各占多少比例呢?很难有一个准确的数据,不同的团队,不同的开发人员,比例会有所不同,一般来说 有特征错误不会超过百分之二十,读者可以根据自己的经验评估一下。

  可能被自动测试工具发现:有特征错误具有可识别的语法特征或可捕捉的行为特征,因此可能被自动测试工具发现。

  总之,有特征错误对于用户来说,当然是不可接受的,但对于开发商来说,发现并消除有特征错误的成本相对较低。

  4、无特征错误的特点

  数量多:代码错误大多属于无特征错误。

  不能被自动测试工具发现:由于不具有可识别的语法特征或可捕捉的行为特征,自动测试工具在没有人工干预的前提下无法发现无特征错误,因为测试工具不可能自动了解程序的功能。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号