Testing-《软件测试》读书笔记(四)

来源:互联网 发布:淘宝扶持期是什么意思 编辑:程序博客网 时间:2024/05/21 17:45

        静态测试是指测试非运行部分——检查和审查。白盒测试是指访问代码,能够查看和审查。
        静态白盒测试实在不执行的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程。有时也成为结构分析。
        静态白盒测试的原因,首先是尽早发现软件缺陷;另外可为接受该软件测试的黑盒测试员提供应用测试案例的思路,他们不必了解代码细节,根据审查备注就可以确定可能存在问题的特性范围。

正式审查——进行白盒测试的过程

        正式审查含义广泛,从程序员之间的交谈,到代码的严格检查均属于此过程。主要有4个基本要素:
        
        - 确定问题。
              审查的目的,不仅是出错的,还包括遗漏的项目。全部的批评应直指代码,而不是其创建者。
        - 遵守规则
              审查要遵守一套固定的规则,可能设定审查的代码量、花费时间、备注内容对象,以帮助合作者确定          自己的目标,了解自己的作用。
        - 准备
              每个合作者需要了解自己的责任和义务,并积极参与审查。
        - 编写报告
              审查小组必须做出总结审查结果的书面报告,并使报告便于开发小组使用。

正式审查的类型

1. 同事审查
     
        召集小组成员进行初次正式审查是最简单的方法。大体类似于“各抒己见”类型的讨论。常常仅在编写代码的程序员和充当审查者的其他一两个程序员和测试员之间进行。

2. 公开陈述

         公开陈述是使同事审查正规化的下一步。编写代码的程序员像5人小组或其它类似的程序员或测试员正式表述,逐行或逐个通读代码,解释代码如何工作的以及为什么。审查人员应该在审查之前接到软件拷贝,以便检查并编写备注和问题,在审查过程中提问。参与人数要多于同事审查。因此,做好准备和遵守规则是十分重要的。

3. 检验

         检验是最正式的审查类型,具有高度组织化,要求每一个参与者都接受训练。检验与同事审查不同之处在于表述代码的人(表述者或宣读者),不再是原来的程序员。这就迫使他学习和了解要表述的材料,从而有可能提出不同的看法和解释。
         检验员在检验中的职责是从不同的角度(如用户、测试员或产品支持人员)的角度审查代码,指出软件缺陷。检验会议后,检验员可能再次碰头讨论他们发现的不足之处,并与会议主席共同准备一份书面报告,明确解决问题所必须重做的工作。

编码标准和规范

坚持标准或规范的原因:

- 可靠性。事实证明,代码缺陷将更少
- 可读性、维护性。
- 移植性。如果代码符合设备标准,迁移到另一个平台就会轻而易举。

标准由4个主要部分组成:

- 标题。描述主题。
- 标准(或规范)。描述内容,解释哪些允许,哪些不允许。
- 解释说明。给出指定该标准的原因。说服程序员。
- 实例。这不是必需的。

注意:标准/规范和风格不是一回事。后者不是缺陷。

通过代码审查清单

1. 数据引用错误

         是指使用未经正确初始化用法和引用方式的变量、常量、数组、字符串或记录而导致的软件缺陷。如:变量未初始化、数组和字符串下标越界、对数组的下标操作遗漏[0]、变量与赋值类型不一致、引用的指针未分配内存……

2. 数据声明错误

         数据声明软件缺陷产生的原因是不正确的声明或使用变量和常量。

3. 计算错误

         计算或者运算错误是基本的数学逻辑问题。计算无法得到预期结果。如:不同数据类型 或 数据类型相同但长度不同的变量计算、计算过程中或计算结果溢出、赋值的目的变量上界小于赋值表达式的值、除数/模为0、变量的值超过有意义的范围(如概率的计算结果不在0-1范围内)……

4. 比较错误

         小于、大于、等于、不等于、真、假。比较和判断错误很可能是边界条件问题。如:混淆小于和小于等于、逻辑表达式中的操作数不是逻辑值……

5. 控制流程错误

         控制流程错误的原因是编程语言中循环等控制结构未按预期方式工作。通常由计算或者比较错误直接或间接造成。如:模块或循环无法终止、存在从未执行的代码、由于变量赋值错误而意外进入循环……

6. 子程序参数错误

         子程序参数错误的来源是软件子程序不正确的传递数据。如:实际传送的参数类型或次序与定义不一致、更改了仅作为输入值的参数……

7. 输入/输出错误

         包括文件读取、接受键盘或者鼠标输入以及向打印机或者屏幕等输出设备写入错误。如:软件没有严格遵守外部设备读写数据的专用格式、文件或外设不存在或者为准备好的错误情况发生时没有相应处理、未以预期的方式处理预计错误、错误提示信息不正确/不准确……

8. 其他检查

         软件是否使用其他外语?处理字符集的范围(ASCII或Unicode)?是否需要移植?是否考虑兼容性?编译时是否产生警告或提示信息?

原创粉丝点击