软件测试笔记(六)- 静态白盒测试

了解如何通过详细的程序代码分析来发现软件缺陷。

一、静态白盒测试:检查设计和代码

  1. 静态测试 :是指测试非运行部分——检查和审查。
  2. 白盒测试 :或者称为 透明盒测试 ,是指访问代码,能够查看和审计。
  3. 静态白盒测试 :是指在不执行软件的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的过程,有时称为 结构化分析

在开发过程初期让测试小组集中精力进行软件设计的审查非常有价值:
(1)主要原因:尽早发现软件缺陷,以找出动态黑盒测试难以发现或隔离的软件缺陷;
(2)另一好处:为黑河测试员在接收软件进行测试时设计和应用测试用例提供思路。黑盒测试员可能不必了解代码 的细节,但是通过听审查评论,可以确定有问题或者容易产生软件缺陷的特性范围。

注意:开发小组负责静态白盒测试的人员不是固定的:
(1)在某些小组中,程序员就是组织和执行审查的人员,软件测试员被邀请作为独立的观察者;
(2)还有一些小组中,软件测试员是该任务的执行人,要求编写代码的程序员和其他同时帮助审查。

然而,对于静态白盒测试最不幸的是常常不能善始善终。许多小组错误地认为耗时太多、费用太高、没有产出。

二、正式审查

正式审查(formal review) :就是进行静态白盒测试的过程。该定义很广,从程序员之间地简单交谈,到软件设计和代码地详细、严格检查均属于此过程。

  1. 正式审查有4个基本要素:
    (1)确定问题:审查的目的是找出软件的问题——不仅是出错的项目,还包括遗漏的项目。
    (2)遵守规则。该规则的重要性在于参与者了解自己的目标是什么。
    (3)准备,根据审查的类型,参与者可能扮演不同的角色,他们需要了解自己的责任和义务,并积极参与审查。
    (4)编写报告。审查小组必须做出审查结果的书面总结报告,并报告便于开发小组的成员使用。
  2. 除了发现问题,检查正式审查还有一些间接效果:
    (1)交流。正式报告中未包含的信息得以交流。
    (2)质量。程序员的代码经过逐个功能、逐行代码的仔细复查,常常会使程序员变得更加仔细。
    (3)小组同志化。如果审查正确进行,就会建立软件测试员和程序员对双方技艺的相互尊重,并且更好地了解相互的工作和需求。
    (4)解决方案。在审查范围之外讨论解决方案也许更有效。
  • 同事审查

同事审查 :有时称为 伙伴审查 :常常仅在编写代码或黄色及体系结构的程序员,以及补充审查者的其他一俩个程序员和测试员之间进行。

目的:同事之间相互审查代码,寻找问题和失误。

  • 走查

走查(Walkthrough) :编写代码的程序员向5人小组或者其他程序员和测试员组成的小组做正式陈述。审查人员应该在审查之前接到软件拷贝,一边检查并编写备注和问题,在审查过程中提问。

注意:由于公开陈述的参与人数要多于同事审查,因此,为审查做好准备和遵守规则是非常重要的。

  • 检验

检验(inspection) :是最正式的审查类型,具有高度组织化,要求每一参与者都要接受训练。

参与人员:

  1. 检验与同事审查和走查不同之处在于表述代码的人—— 表述者(presenter) 或者 宣读者(reader) ——不是原来的程序员,要求他学习和了解要表述的材料,从而有可能在检验会议上提出不同的看法和解释。
  2. 其余的参与者称为 检验员(inspector) ,其职责是从不同的角度,例如用户、测试员或者产品支持人员的角度审查代码。
  3. 有些检验员同时还被委任为 会议协调员(moderator)会议记录员(recorder) ,以保证检验过程遵守规则及审查有效进行。

召开检验会议之后,检验员可能再次碰头讨论他们发现的不足之处,并与会议协调员共同准备一份书面报告,明确解决问题所必须重做的工作。交由程序员进行修改,由会议检验员验证修改结果。

三、编码标准和规范

  1. 标准 :是建立起来的、经过修补和必须遵守的规则——做什么和不做什么。
  2. 规范 :是建议最佳做法、推荐更好的方式。

区别:标准没有例外情况,缺少结构化的放弃步骤。规范就要松一些。

坚持标准或规范的3个重要原因:
(1)可靠性:使得代码更加可靠和安全。
(2)可读性/维护性:使得代码易于阅读、理解和维护。
(3)移植性:代码经常在不同的硬件中运行,甚至使用不同的编译器编译。使得代码符合设备标准,迁移到另一个平台就会轻而易举,甚至完全没有障碍。

  • 编程标准和规范

标准的4个主要组成部分:
(1)标题。描述标准包含的主题。
(2)标准(或者规范)。描述标准或者规范的内容,解释哪些允许哪些不允许。
(3)解释说明。给出标准背后的原因,以使程序员理解为什么这样做是好的编程习惯。
(4)示例。给出如何使用标准的简单程序示例。

  • 获取标准

获取标准的相关站点:

  1. 国际工程协会(IEC):www.iec.org
  2. 国际标准化组织(ISO):www.iso.ch

四、通用代码审查清单

  • 数据应用错误
    数据引用错误是指使用未经正确声明和初始化的变量、敞亮、数组、字符串或记录而导致的软件缺陷。
  • 数据声明错误
  • 数据声明缺陷产生的原因是不正确地声明或使用变量和常亮。
  • 计算错误
    计算或者运算错误实质上是糟糕的数学问题。计算无法得到预期结果。
  • 比较错误
    大于、小于、等于、不等于、真、假。比较和判断很可能是由于边界条件问题。
  • 控制流程错误
    控制流程错误的原因是编程语言中循环风控制结构未按预期方式工作。他们通常有计算或者比较错误之间或间接造成。
  • 子程序参数错误
    子程序参数错误的来源是软件子程序不正确地传递数据。
  • 输入/输出错误
    输入/输出错误包括文件读取、接收键盘或者鼠标输入以及向打印机或者屏幕等输出设备写入错误。
  • 其他检查
  1. 软件是否使用了其他外语否处理扩展ASCII字符否需要用同一编码取代ASCII/li>
  2. 软件是否要一直到其他编译器和CPU,具有这样做的许可吗果没有计划或者测试,那么,一直性可能成为一个大难题。
  3. 是否考虑了兼容性,以使软件能够运行与不同数量的可用内存、不同的内部硬件(例如图形和声卡)、不同的外设(例如打印机和调制解调器)/li>
  4. 程序编译是否产生“警告”或者“提示”信息些信息通常指示进行了有疑问的处理。纯粹主义者可能认为警告信息是不可接受的。

参考文献

  1. 《软件测试(原书第2版)》
  2. 《软件测试的艺术(原书第3 版)》

来源:江阿白

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月21日
下一篇 2019年7月21日

相关推荐