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

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

一、数据引用错误。
k q5Ri:GsO4K8aK0 定义:是指使用未经正确初始化用法和引用方式的变量、常量、数组、字符串或记录而导致的软件缺陷。
-wr9va&j0是否引用了未初始化的变量?查找遗漏之处与查找错误同等重要。
+T3v,mf1}qo6E0数组和字符串的下标是整数值吗?下标总是在数组和字符串大小范围之内吗?51Testing软件测试网p%yP|9co6f xNY4w
在检索操作或者应用数组下标时是否包含“丢掉一个”这样的潜在错误?
Hj_Z8Ak0是否在应该使用常量的地方使用了变量-例如在检查数组范围时?51Testing软件测试网/T#R"q-L _ ]1oK%\gKx5\
变量是否被赋予不同类型的值?例如,无意中使代码为整形变量赋予一个浮点数值?
m]"`-RH_6l8[8]gXC0为引用的指针分配内存了吗?
k,M'?T'HZ XFO3K0一个数据结构是否在多个函数或者子程序中引用,在每一个引用中明确定义结构了吗?51Testing软件测试网|5I2c`{]
二、数据声明错误。
hDDC$m0产生的原因:不正确地声明或使用变量和常量51Testing软件测试网$wH-\ ?/[9N?|2a$N
所有变量都赋予正确的长度、类型和存储类了吗?例如,本应声明为字符串的变量声明为字符数组了吗?51Testing软件测试网PLx hA8e-kIF
变量是否在声明的同时进行了初始化?是否正确初始化并与其类型一致?51Testing软件测试网Y3R'eJ/pu(y
变量有类似的名称吗?这基本上不算软件缺陷,但有可能是程序中其他地方出现名称混淆的信息。
q?7o5wC!Q,r0存在声明过、但从未引用或者只引用过一次的变量吗?
iss;TDyI {.|0在特定模块中所有变量都显式声明了吗?如果没有,是否可以理解为该变量与更高级别的模块共享?
7u:diPx5Js R4r0三、计算错误。
(Z"vk-nm3x R#S8Y;D!~.h5?7C0是基本的数据逻辑问题,计算无法得到预期结果。
IP P9\.@_9nP|2R0计算中是否使用了不同数据类型的变量,例如将整数与浮点数相加?51Testing软件测试网 T f8yP r3H1g$CX
计算中是否使用了不同数据类型相同但不同长度的变量-例如,将字节与字相加?51Testing软件测试网2~4Fo~%~[N m
计算时是否了解和考虑到编译器对类型或长度不一致的变量的转换规则?
T;}6YU5y*^$]0赋值的目的变量是否小于赋值表达式的值?51Testing软件测试网$h5SU+[n+Tq
在数值计算过程中是否可能出现溢出?
!o/b3tnD h(u:]:`0除数/模是否可能为零?
#R My Kd)Q0对于整型算术运算,某些计算,特别是除法的代码处理是否会丢失精度?
"_,FgW:H)I^#B-F0变量的值是否超过有意义的范围?例如,可能性的计算结果是否小于0%或者大于100%?
(Nv"t? b[+|bQ!Gk0对于包含多个操作数的表达式,求值的次序是否混乱,运算优先级对吗?需要加括号使其清晰吗?
~8X-B/X|'` _6F8^0四、比较错误。
#uaLe$}Zm%e0小于、大于、等于、不等于、真、假。比较和判断错误很可能是边界条件问题。51Testing软件测试网I%R\kTy{~
比较得正确吗?虽然听起来简单,但是比较应该是小于还是小于或等于常常发生混淆。51Testing软件测试网,Dr"ja:T@&]h A
存在分数或者浮点值之间的比较吗?如果有,精度问题会影响比较吗?1.00000001和1.00000002极其接近,它们相等吗?
g5cZQsFRC0每一个逻辑表达式都正确表达了吗?逻辑计算如期进行了吗?求值次序有疑问吗?
B'^3jM-?,g0逻辑表达式的操作数是逻辑值吗?例如,是否包含整数值的整型变量用于逻辑计算中?51Testing软件测试网 ~4^s/m~&B:o
五、控制流程错误。
(]/a3eD$j4O N@[ Y9`5o0原因:编程语言中循环等控制结构未按预期方式工作。它们通常由计算或者比较错误直接或间接造成。
r4K5i$o,J'TN/[5YP0如果程序包含begin..end和do...while等语句组,end是否对应?
$Qq"p]'}iK6T2V]A0程序、模块、子程序和循环能否终止?如果不能,可以接受吗?
%fz[e;b^w0可能存在永远不停的循环吗?51Testing软件测试网i0[h;wR:M'u+]&uu
循环可能从不执行吗?如果是这样,可以接受吗?
6_M-L3\[r3W!SQ0如果程序包含像switch...case语句这样的多个分支,索引变量能超出可能的分支数目吗?如果超出,该情况能正确处理吗?51Testing软件测试网"bc5gq3E R&?
是否存在“丢掉一个”错误,导致意外进入循环?
nq8_yy0六、子程序参数错误。51Testing软件测试网d+p;`"g#e r;vm7w
来源于软件子程序不正确地传递数据。
7]?umdA9^8Q0子程序接收的参数类型和大小与调用代码发送的匹配吗?次序正确吗?51Testing软件测试网 MDR w(XN2bnFl
如果子程序有多个入口点,引用的参数是否与当前入口点没有关联?51Testing软件测试网T}:pRT;C"r ke
常量是否当作形参传递,意外在子程序中改动?51Testing软件测试网~0M!sy'_ Q
子程序是更改了仅作为输入值的参数?51Testing软件测试网 u@%DrF7H
每一个参数的单位是否与相应的形参匹配。51Testing软件测试网v5r;vH0A;r3L
如果存在全局变量,在所有引用子程序中是否有相似的定义和属性?51Testing软件测试网+mL QK5mj6l4d
七、输入/输出错误。51Testing软件测试网LR e4\m
包括文件读取、接受键盘或者鼠标输入以及向打印机或者屏幕等输出设备写入错误。
a1vivWxt0软件是否严格遵守外部设备读写数据的专用格式?
NS&?E![0文件或者外设不存在或者未准备好的错误情况有处理吗?
spKvv5a0软件是否处理外部设备未连接、不可用,或者读写过程中存储空间占满等情况?51Testing软件测试网T i4T^S l-U'j9O
软件以预期方式处理预计的错误吗?
x]R-b ^'?:[j0检查错误提示信息的准确性、正确性、语法或拼写了吗?51Testing软件测试网(Fr E#is:pw8?)m7`
八、其他检查。51Testing软件测试网8N8H? [W4s|o
软件是否使用其他外语?是否处理扩展ASCII字符?是否需要用统一编码取代ASCII?51Testing软件测试网%p_,H?&Gs&E W
软件是否要移植到其他编译器和CPU,具有这样做的许可吗?如果没有计划或者测试,那么,移植性可能成为一个大难题。
3~S?!nmh&C0是否考虑了兼容性,以使软件能够运行于不同数量的可用内存,不同的内部硬件,例如图形卡和显卡,不同的外设,例如打印机和调制解调器?
/e:Pc7g#})uwT0程序编译是否产生“警告”或者“提示”信息?这些信息通常指示进行了有疑问的处理。纯粹主义者可能认为警告信息是不可接受的。
z#K ADL4Uy'Y.}U0

TAG:

 

评分:0

我来说两句

Open Toolbar