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

网友投稿 758 2022-11-19

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

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

1、功能错误与性能问题

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

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

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

2、代码错误的分类

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

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

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

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

3、有特征错误的特点

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

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

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

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

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

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

4、无特征错误的特点

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

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

上一篇:单元测试的必要性和效益
下一篇:单元测试之测试用例
相关文章

 发表评论

暂时没有评论,来抢沙发吧~