对于一家技术研发流程完善的技术公司来说,代码审查都是必不可少的一部分。虽然大部分代码审查工作都是研发团队的工程师完成,广义上讲,代码审查也是软件测试的一部分。这与大部分人对软件测试的观念有所不同,他们可能认为软件测试的唯一方法是用计算机执行代码。实际上,使用计算机执行的软件测试只是传统的测试方法,而软件测试的新观念认为在进行传统测试之前,代码人工审查也是非常必要的。
1、代码检查
代码检查通常以一个小组为单位,主要的目的在于发现代码中出现的错误以及不良风格,主要有:
(1)数据引用错误:
①使用了未初始化和未赋值的变量;②数组下标越界;③数组下标非正整数;④“虚调用”,即引用了非法内存;⑤按照错误的数据类型引用内存数据;⑥数据类型与引用它的结构不匹配;⑦内存寻址错误;⑧基础存储结构错误;⑨跨过程的结构定义错误;⑩数组或字符串存在下标边界引用错误(特别是第一个和最后一个);⑪类的继承需求没有满足。
(2)数据声明
①使用了未声明的变量;②变量声明的属性错误;③变量在声明时初始化错误;④变量的长度和数据类型错误;⑤变量的初始化与存储空间类型不一致;⑥变量名称过于相似。
(3)运算错误
①运算的变量之间数据类型不一致;②存在相同数据类型、不同字长的变量之间的运算;③被赋值的变量数据类型小于右侧表达式的返回结果的数据类型;④存在混合模式的运算;⑤表达式运算结果存在溢出;⑥存在用0除;⑦计算进制错误;⑧变量的值超出实际意义;⑨操作符优先级判断错误;⑩整数运算逻辑错误。
(4)比较错误
①存在不同数据类型的比较;②混合模式比较中类型转换规则错误;③比较运算逻辑不正确,尤其注意“等于”的情况;④bool表达式所叙述的内容是否正确;⑥浮点变量比较错误;⑦逻辑运算优先级错误;⑧使用了编译器不接受的写法。
(5)流程控制错误
①含有潜在的非法分支;②存在死循环的可能;③存在从来没有执行的循环体;④循环越界;⑤循环次数多一次或者少一次,常常因为≥和>、≤和<的区别造成;⑥do和while不匹配;⑦代码块“{”和“}”不匹配;⑧未设置默认的判断分支。
(6)接口错误
①形参与实参数量不匹配;②形参与实参的数据类型不匹配;③形参和实参的量纲不匹配;④原本输入参数的值被改变;
(7)输入输出错误
①文件声明属性错误;②文件打开属性错误;③打开文件的内存空间不足;④使用了未打开的文件;⑤文件使用过后未关闭;⑥未处理判断文件结束的条件;⑦未处理文件打开失败的情况。
(8)其他检查
①程序出现警告;②程序未检查输入的合法性;③程序遗漏了某些功能。
2、代码走查
代码走查主要考察代码的运行流程。测试者使用书面的测试用例进行推演,即使用测试数据沿程序的逻辑结构运行一遍并记录程序的状态。