静态白盒技术-通用代码审查清单

上一篇 / 下一篇  2007-05-01 07:40:42 / 个人分类:测试技术

一、数据引用错误。
(^rM ?5gU0 定义:是指使用未经正确初始化用法和引用方式的变量、常量、数组、字符串或记录而导致的软件缺陷。51Testing软件测试网&G7])b)u"Q$^"CI'P
是否引用了未初始化的变量?查找遗漏之处与查找错误同等重要。
vB${!e*_)[ C`?l0数组和字符串的下标是整数值吗?下标总是在数组和字符串大小范围之内吗?
5@T2cs ?[e0在检索操作或者应用数组下标时是否包含“丢掉一个”这样的潜在错误?51Testing软件测试网/D7Akz:N z
是否在应该使用常量的地方使用了变量-例如在检查数组范围时?
W{&A9Y4H!o,R;[Z C0变量是否被赋予不同类型的值?例如,无意中使代码为整形变量赋予一个浮点数值?51Testing软件测试网p5q(}*[*\"W&|5O,?
为引用的指针分配内存了吗?51Testing软件测试网 PL;m|_3f
一个数据结构是否在多个函数或者子程序中引用,在每一个引用中明确定义结构了吗?51Testing软件测试网6~4lt*k:P3o/| eqQX
二、数据声明错误。
8? S!r9N-xo;`0产生的原因:不正确地声明或使用变量和常量
\g-X]x+m d0所有变量都赋予正确的长度、类型和存储类了吗?例如,本应声明为字符串的变量声明为字符数组了吗?
~`1L8Z [tF i5T2nb0变量是否在声明的同时进行了初始化?是否正确初始化并与其类型一致?51Testing软件测试网tP`n6Ju/{Z
变量有类似的名称吗?这基本上不算软件缺陷,但有可能是程序中其他地方出现名称混淆的信息。51Testing软件测试网"YY6l'UN'D&@
存在声明过、但从未引用或者只引用过一次的变量吗?51Testing软件测试网 ]J)\GN
在特定模块中所有变量都显式声明了吗?如果没有,是否可以理解为该变量与更高级别的模块共享?
7k+| ^P(N6i5V \7]iK0三、计算错误。
:N%x&vU6Q#R_%O#\0是基本的数据逻辑问题,计算无法得到预期结果。
X&W H2hyH:}1g B"g0计算中是否使用了不同数据类型的变量,例如将整数与浮点数相加?
3z`o7i6w3SY0计算中是否使用了不同数据类型相同但不同长度的变量-例如,将字节与字相加?51Testing软件测试网r1LC#R's3r*x%a
计算时是否了解和考虑到编译器对类型或长度不一致的变量的转换规则?51Testing软件测试网8bL:vi$f$M
赋值的目的变量是否小于赋值表达式的值?
g XJ%ri0在数值计算过程中是否可能出现溢出?51Testing软件测试网!~ K s-B u-{-|/q;P
除数/模是否可能为零?51Testing软件测试网/`^5l Q'Y&g/s,Y3E,?.`D!e
对于整型算术运算,某些计算,特别是除法的代码处理是否会丢失精度?51Testing软件测试网yN|0xgTB
变量的值是否超过有意义的范围?例如,可能性的计算结果是否小于0%或者大于100%?51Testing软件测试网?!Ai4Jp t
对于包含多个操作数的表达式,求值的次序是否混乱,运算优先级对吗?需要加括号使其清晰吗?
't`/~1n\\0四、比较错误。51Testing软件测试网.huX(ow%imr U G:gw
小于、大于、等于、不等于、真、假。比较和判断错误很可能是边界条件问题。51Testing软件测试网'HPS$`(tpz4QF8C
比较得正确吗?虽然听起来简单,但是比较应该是小于还是小于或等于常常发生混淆。51Testing软件测试网@|sVKr|3Fg
存在分数或者浮点值之间的比较吗?如果有,精度问题会影响比较吗?1.00000001和1.00000002极其接近,它们相等吗?
&X&Es DE0每一个逻辑表达式都正确表达了吗?逻辑计算如期进行了吗?求值次序有疑问吗?
'TR|9a5j(M:SUt0逻辑表达式的操作数是逻辑值吗?例如,是否包含整数值的整型变量用于逻辑计算中?51Testing软件测试网7]:Jxj'V1q,C'I
五、控制流程错误。51Testing软件测试网uz,K1kwQ8c
原因:编程语言中循环等控制结构未按预期方式工作。它们通常由计算或者比较错误直接或间接造成。51Testing软件测试网#NX7^1z-XVG$rA!{
如果程序包含begin..end和do...while等语句组,end是否对应?51Testing软件测试网Wr/w.dyb {
程序、模块、子程序和循环能否终止?如果不能,可以接受吗?51Testing软件测试网.JCu.l4E(Jv \
可能存在永远不停的循环吗?51Testing软件测试网0Ua0O)JTbNd
循环可能从不执行吗?如果是这样,可以接受吗?
5v5wf,?U#hio%J0如果程序包含像switch...case语句这样的多个分支,索引变量能超出可能的分支数目吗?如果超出,该情况能正确处理吗?
(~ U/S7Ss4@0是否存在“丢掉一个”错误,导致意外进入循环?51Testing软件测试网'AB5f Vq |'jTA-Q
六、子程序参数错误。
I"hs_Ff6q0来源于软件子程序不正确地传递数据。51Testing软件测试网O0CCpH3s-X.tM
子程序接收的参数类型和大小与调用代码发送的匹配吗?次序正确吗?
NH\9VF{ C$zSfA0如果子程序有多个入口点,引用的参数是否与当前入口点没有关联?
-A$`;m3m4W/hVK7G,G0常量是否当作形参传递,意外在子程序中改动?
s7_#u9pg![gv2\0子程序是更改了仅作为输入值的参数?
*JIx(|@Ak0每一个参数的单位是否与相应的形参匹配。
%fH#\|O0如果存在全局变量,在所有引用子程序中是否有相似的定义和属性?
+x\`9?-[:X?o;}:hR0七、输入/输出错误。
Ye5Fq"r@T0包括文件读取、接受键盘或者鼠标输入以及向打印机或者屏幕等输出设备写入错误。
vT{O.P'U0软件是否严格遵守外部设备读写数据的专用格式?
:x4I5`;qi*? f/e{Ox0文件或者外设不存在或者未准备好的错误情况有处理吗?51Testing软件测试网J5J^z8Q
软件是否处理外部设备未连接、不可用,或者读写过程中存储空间占满等情况?
t-a p@-jf2P|0软件以预期方式处理预计的错误吗?
`(u U`Ey8Zi [#IZ0检查错误提示信息的准确性、正确性、语法或拼写了吗?51Testing软件测试网5pv;BQH.y2h V)i&f
八、其他检查。
*Rw&c3]G4t0zl0软件是否使用其他外语?是否处理扩展ASCII字符?是否需要用统一编码取代ASCII?
KR3Q q9l3Loj0软件是否要移植到其他编译器和CPU,具有这样做的许可吗?如果没有计划或者测试,那么,移植性可能成为一个大难题。
,W~M yY#~sO0是否考虑了兼容性,以使软件能够运行于不同数量的可用内存,不同的内部硬件,例如图形卡和显卡,不同的外设,例如打印机和调制解调器?51Testing软件测试网b}*[b%pF r
程序编译是否产生“警告”或者“提示”信息?这些信息通常指示进行了有疑问的处理。纯粹主义者可能认为警告信息是不可接受的。
;x!adwz0

TAG:

 

评分:0

我来说两句

Open Toolbar