代码级测试方法主要分为两大类:
- 静态方法,在不实际执行代码的基础上发现代码缺陷的方法,又可以进一步细分为人工静态方法和自动静态方法
- 动态方法,通过实际执行代码发现代码中潜在缺陷的方法,同样可以进一步细分为人工动态方法和自动动态方法
人工静态方法
通过人工阅读代码查找代码中潜在的错误方法,存在以下局限
- 过度依赖代码评审者个人能力
- 存在思维惯性
- 完全依赖人工,效率低
自动静态方法
通过词法分析、语法分析、控制流分析等技术,并结合各种预定义和自定义的代码规则,对程序代码进行静态扫描发现语法错误、潜在 语义错误,以及部分动态错误的一种代码分析技术.
常用工具有Sonar、Coverity等
自动静态方法通常能够以极低的成本发现以下问题:
- 使用未初始化的变量;
- 变量在使用前未定义
- 变量声明了但未使用;
- 变量类型不匹配;
- 部分的内存泄漏问题;
- 空指针引用;
- 缓冲区溢出;
- 数组越界;
- 不可达的僵尸代码;
- 过高的代码复杂度;
- 死循环;
- 大量的重复代码块
人工动态方法
设计代码的输入和预期的正确输出的集合,执行代码,判断实际输出是否符合预期.
自动动态方法
基于代码自动生成边界测试用例并执行,以捕捉潜在的异常、崩溃和超时的方法
文章链接 https://fangzongzhou.github.io/2021/01/06/计算机/软件测试/代码测试/