1. 说出静态白盒测试的几点好处。
静态白盒测试在开发过程早期发现软件缺陷,使修复的时间和费用大幅度降低。软件测试员可以得到软件如何运作的信息,存在哪些弱点和危险,而且可以与程序员建立良好的伙伴关系。项目状态可以传达给参与测试的所有小组成员。
2. 静态白盒测试可以找出遗漏之处和问题?
对。遗漏的问题比普通的问题更重要,通过静态白盒测试可以发现。当根据公布的标准和规范检查代码,在正式审查中仔细分析时,遗漏的问题就显而易见了。
3. 正式审查由哪些关键要素组成?
过程。按照过程进行是正式检查和两个程序员之间互查代码的区别。
4. 除了更正式外,检验与其他审查类型有什么重大差别?
主要区别是,检验时在场的不是代码的原创者。这迫使另一个人完全理解要检查的软件。这比让其他人只是审查软件寻找软件缺陷更有效。
5. 缓冲区溢出错误作为一个常见的安全问题术语哪一级错误?是由什么原因引起的?
数据引用。它们是由于使用了未正确声明或未进行初始化的变量、常量、数组、字符串或记录。
通用代码审查清单:
在代码审查时,我们可以运用代码审查清单,将以往所有可能发生的常见错误罗列出来,供与会者对照检查,从而提高会审效率。
(1)数据引用错误
数据引用错误是指使用未经正确地初始化的变量、常量、数组、字符串或记录。
* 是否引用了未初始化的变量?
* 数组和字符串的下标是整数值吗?下标总是在数组和字符串大小范围之内吗?
* 在检索操作或者应用数组下标时是否包含“丢掉一个”这样的潜在错误?
* 是否在应该使用常量的地方使用了变量?
* 变量是否被赋予不同类型的值?
* 为引用的指针分配内存了吗?
* 一个数据结构是否在多个函数或者子程序中引用,在每一个引用中明确定义结构了吗?
(2)数据声明错误
数据声明错误是指不正确地声明或使用变量和常量。
* 所有变量都赋予正确的长度、类型和存储类了吗?
* 变量是否在声明的同时进行了初始化?是否正确初始化并与其类型一致?
* 变量有相似的名称吗?
* 存在声明过、但从未引用或者只引用过一次的变量吗?
* 在特定模块中所有变量都显式地声明了吗?