代码级测试方法
# 代码级测试方法
# 常见代码错误类型
# 语法特征错误
存在形式:
从编程语法上就能发现的错误
比较隐晦的语法错误,不会再编译时出现,但会在运行时出错
比如:
def demoMethod()
{
a[10];
a[10]=88;
...
}
2
3
4
5
6
# 边界行为特征错误
通常都是发生在一些边界条件上,代码在执行过程中发生异常,崩溃或者超时
比如:
def division(a, b)
{
return a/b;
}
2
3
4
# 经验特征错误
根据过往经验发现代码错误
# 算法错误
代码完成的计算(或者功能)和之前预先设计的计算结果(或者功能)不一致
完全的算法错误并不常见,因为不能准确完成基本功能需求的代码,是一定不会被递交的
# 部分算法错误
在一些特定的条件或者输入情况下,算法不能准确完成业务要求实现的功能
# 代码级测试常用方法
代码级测试方法主要分为两大类,分别是静态方法和动态方法
# 静态方法
在不实际执行代码的基础上发现代码缺陷的方法,又可以进一步细分为人工静态方法和自动静态方法
人工静态方法:
通过人工阅读代码查找代码中潜在错误的方法,通常采用的手段包括,开发人员代码走查、结对编程、同行评审等
局限性:
- 过度依赖于代码评审者的个人能力,同样的评审流程,发现的问题却相差悬殊
- 如果开发人员自行走查自己的代码,会存在“思维惯性”,开发过程中没有能考虑的输入和边界值,代码走查时也一样会被遗漏
- 由于完全依赖人工,效率普遍较低
自动静态方法:
在不运行代码的方式下,通过词法分析、语法分析、控制流分析等技术,并结合各种预定义和自定义的代码规则,对程序代码进行静态扫描发现语法错误、潜在语义错误,以及部分动态错误的一种代码分析技术
优点:可以发现语法特征错误、边界行为特征错误和经验特征错误这三类“有特征”的错误
缺点:不能发现算法错误和部分算法错误这两种“无特征”的错误
# 动态方法
通过实际执行代码发现代码中潜在缺陷的方法,同样可以进一步细分为人工动态方法和自动动态方法
人工动态方法:
设计代码的输入和预期的正确输出的集合,然后执行代码,判断实际输出是否符合预期
人工动态方法是最主要的测试手段,可以真正检测代码的逻辑功能
关注点:是“什么样的输入,执行了什么代码,产生了什么样的输出”,所以最善于发现算法错误和部分算法错误
自动动态方法:
基于代码自动生成边界测试用例并执行,以捕捉潜在的异常、崩溃和超时的方法
自动动态方法,可以覆盖边界行为特征错误
不足:对于发现算法错误无能为力
(完)