第三章 静态测试

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

四 川 大 学 锦 城 学 院 软 件 测 试
代码审查
• 代码审查是由一组人通过阅读、讨论和争 议对程序进行静态分析的过程,以小组会 的方式进行。 • 参与人员:
– 编写该程序的程序员& – 其他非编写该程序的程序员& – 代码检查人员
四 川 大 学 锦 城 学 院 软 件 测 试
• 会前需要把设计规格说明书、控制流程图、 四 川 程序文本以及要求、规范、错误检查清单 大 学 交给与会者 锦 城 • 开会期间由程序作者朗读解释程序,其他 学 院 人则集中精力,捕捉程序在结构、功能、 软 件 编码风格等方面的问题。 测
四 川 大 学 锦 城 学 院 软 件 测 试
3.2.2 为什么要检查产品说明书?
• 对测试人员而言,他的任务就是“尽早” 找出软件缺陷,而
– 很多软件的缺陷都是因为产品功能说明书不够 全面,经常更改造成的; – 只有详细的阅读了产品功能说明书,确认产品 需要实现的功能,才能拟定切实可行的测试方 案;
四 川 大 学 锦 城 学 院 软 件 测 试
• 静态测试阶段的任务:
(1)检查算法的逻辑正确性。 四 (2)检查模块接口的正确性。 川 大 (3)检查输入参数是否有合法性检查。 学 锦 (4)检查调用其他模块的接口是否正确。 城 学 (5)检查是否设置了适当的出错处理。 院 (6)检查表达式、语句是否正确,是否含有二义性。 软 (7)检查常量或全局变量使用是否正确。 件 测 (8)检查标识符的使用是否规范、一致。 试 (9)检查程序风格的一致性、规范性。 (10)检查代码是否可以优化,算法效率是否最高。 (11)检查代码注释是否完整,是否正确反映了代码的功能。
• 软件是否使用其他外语?是否处理扩展 ASCⅡ字符?是否需要用统一编码取代 ASCⅡ? • 软件是否要移植到其他编译器和CPU,具 有这样做的许可吗? • 是否考虑了兼容性,以使软件能够运行于 不同数量的可用内存,不同的内部硬件。 • 程序编译是否产生“警告”或者“提示” 信息?
四 川 大 学 锦 城 学 院 软 件 测 试
四 川 大 学 锦 城 学 院 软 件 测 试
桌面检查
• 桌面检查是由单人阅读程序,对照错误列 表检查程序,使用测试数据对程序进行推 演。 • 参与人员:
– 编写该程序的程序员OR – 其他非编写该程序的程序员OR – 专业测试人员
四 川 大 学 锦 城 学 院 软 件 测 试
代码走查
• 代码走查是采用持续一至两个小时的不间断会议 的形式,以小组为单位进行代码阅读。 • 参与人员:
四 川 大 学 锦 城 学 院 软 件 测 试
数据声明错误
• 所有变量都赋予正确的长度和类型了吗? • 变量是否在声明的同时进行了初始化? • 存在声明过、但从未引用或者只引用过一 次的变量吗? • 在特定模块中所有变量都显示声明了吗?
四 川 大 学 锦 城 学 院 软 件 测 试
计算错误
• 计算中是否使用了不同数据类型的变量? • 计算中是否了解和考虑到编译器对类型或 长度不一致的变量的转换规则? • 在数值计算过程中是否可能出现溢出? • 除数/模是否可能为零? • 变量的值是否超过有意义的范围? • 对于包含多个操作数的表达式,求值的次 序是否混乱,运算优先级对吗?
3.4 静态结构分析
• 静态结构分析主要是以图形的方式表现程序的内 部结构。 例如函数调用关系图、函数内部控制 流图。其中: ——函数调用关系图以直观的图形方式描述一个 应用程序中各个函数的调用和被调用关系;
——控制流图显示一个函数的逻辑结构,由许多 节点组成,一个节点代表一条语句或数条语句, 连接结点的叫边,边表示节点间的控制流向。
§3.2 产品说明书检查
• • • • 什么是产品说明书? 为什么要检查产品说明书? 检查产品说明书的基本原则是什么? 怎样检查产品说明书?
四 川 大 学 锦 城 学 院 软 件 测 试
3.2.1 什么是产品说明书?
• 产品说明书:是对产品的介绍和说明,包 括产品的外观、性能、功能、参数、使用 方法、操作指南、注意事项等。 • 在规范的软件生成的流程中,产品说明书 应在用户需求评审会议召开后,进行系统 的概要设计前确定。
四 川 大 学 锦 城 学 院 软 件 测 试
• 另外,还应审查和测 试同类软件,这有助 于设计测试条件和测 试方法。还可能暴露 出一些没有想到的潜 在问题。 • 在审查竞争产品时应 注意:
– – – – 软件规模 软件的复杂性 软件的可测试性 软件的质量/可靠性
四 川 大 学 锦 城 学 院 软 件 测 试
3.3.4 编码标准和规范
• 为什么要遵守编码标准和规范?
– 遵守标准/规范可以帮助避免代码缺陷。
• 可靠性 • 可读性/维护性 • 可移植性
四 川 大 学 锦 城 学 院 软 件 测 试
java语言
C语言
3.3.5 代码审查清单
• 通用代码审查清单:
–数据引用错误; –数据声明错误; –计算错误; –比较错误; –控制流程错误; –子程序参数错误; –输入/输出错误; –其他检查。
控制流程ຫໍສະໝຸດ Baidu误
• 如果程序包含begin…end和 do …while 等 语句组,end是否对应? • 程序、模块、子程序和循环能否终止? • 可能存在永远不停的循环吗? • 循环可能从不执行吗?
四 川 大 学 锦 城 学 院 软 件 测 试
子程序参数错误
• 子程序接受的参数类型和大小与调用代码 发送的匹配吗? • 如果子程序有多个入口点,引用的参数是 否与当前入口点没有关联? • 常量是否当作形参传递,意外在子程序中 改动?
四 川 大 学 锦 城 学 院 软 件 测 试
比较错误
• 比较的正确吗? • 存在分数或者浮点值之间的比较吗?如果 有,精确问题会影响比较吗? • 每一个逻辑表达式都正确表达了吗?逻辑 计算如期进行了吗?求值次序有疑问吗? • 逻辑表达式的操作是逻辑值吗?
四 川 大 学 锦 城 学 院 软 件 测 试
– – – – – – 一位经验丰富的程序员& 一位程序设计语言专家& 一位初级程序员& 将要负责程序维护的人员& 一位其他项目的人员& 一位来自该软件编程小组的程序员
四 川 大 学 锦 城 学 院 软 件 测 试
• 在走查会议前把材料交给参与者,准备书 面测试用例 • 在会议期间,使用事先设计好的测试数据 沿程序的逻辑结构走一遍,并随时记录程 序运行的状态,以供监视。
四 川 大 学 锦 城 学 院 软 件 测 试
3.3.1 代码检查的内容
• 代码检查包括桌面检查、代码走查和代码审查等 方式,主要检查代码和设计的一致性,代码对标 准地遵循、可读性,代码逻辑表达的正确性,代 码结构的合理性等方面;发现违背程序编写标准 的问题,程序中不安全、不明确和模糊的部分, 找出程序中不可移植部分、违背程序编程风格的 问题,包括变量检查、命名和类型检查、程序逻 辑检查、程序语法检查和程序结构检查等内容。
• 首先,假设自己是客 户,从客户的角度来 看待和使用软件,这 就要求测试员对相关 行业有一定的认识。
四 川 大 学 锦 城 学 院 软 件 测 试
• 其次,研究现有标准 和规范,以此来进行 审查。这些标准和规 范有公司惯用语和约 定、行业要求、政府 标准、安全标准等。 • 软件测试人员的任务 不是定义软件要符合 何种标准和规范,我 们应该做的是观察, “检查”是否套用了 正确的标准,有无遗 漏。
关于“大小端”的问题
• #include <stdio.h> int IsLittleEndian() { unsigned int usData = 0x12345678; unsigned char *pucData = (unsigned char*)&usData; if(*pucData == 0x78) return 1; else return 0; } int main(void) { if(IsLittleEndian()) printf("is little endian!\n"); else printf("is big endian!\n"); return 0; }
第三章静态测试
第三章 静态测试
• • • • • 静态测试概述 产品说明书检查 检查代码 静态结构分析 代码质量度量
四 川 大 学 锦 城 学 院 软 件 测 试
§3.1 静态测试概述
• 什么是静态测试?
– 静态测试是指不实际运行软件,主要是对软件的编程 格式、结构等方面进行评估。 – 静态测试包括代码检查、静态结构分析、代码质量度 量等。它可以由人工进行,也可以借助软件工具自动 进行。 – 静态测试方法也可利用计算机作为对被测程序进行特 性分析的工具,但与人工测试方式有着根本区别。另 一方面,因它并不真正运行被测程序,只进行特性分 析,这又与动态方法不同。所以,静态方法常常称为 “分析”,静态测试是对被测程序进行特性分析方法 的总称。
3.3 检查代码
• 代码检查是一种对程序代码进行的静态检查。传 统的代码检查是通过人工阅读代码的方式,检查 软件设计的正确性;用人脑模拟程序在计算机中 的运行,仔细推敲、校验和核实程序每一步的执 行结果,进而判断其执行逻辑、控制模型、算法 和使用参数与数据的正确性。 • 在实践中,代码检查比动态测试更有效率,能找 到更多的缺陷,通常能发现30%~70%的逻辑设 计和编码缺陷。
四 川 大 学 锦 城 学 院 软 件 测 试
输入/输出错误
• 软件是否严格遵守外部设备读写数据的专 用格式? • 文件或者外部不存在或者未准备好的错误 情况有处理吗? • 软件是否处理外部设备未连接、不可用, 或者读写过程中存储空间占满等情况?
四 川 大 学 锦 城 学 院 软 件 测 试
其他检查
四 川 大 学 锦 城 学 院 软 件 测 试
数据流分析
• 如果程序中某一语句执行时能改变某程序 变量V的值,则称V是被该语句定义的。
• 如果一语句执行引用了内存中变量V的值, 则说该语句引用变量V。 例:X = Y + Z
定义了X, 引用了Y和Z
四 川 大 学 锦 城 学 院 软 件 测 试
if (y > z) do……
只引用了Y和Z
节点 1 2 3 4 5 6
被定义变量 被引用变量 X,Y,Z X W,X X,Y Y,Z Y Z V,Y V,Z
7
8 9 10 11
V
W Z Z
X
Y V Z Z
该程序包括两个错误: ① 语句2使用了变量W,但在此之前并未对它进行定义 ② 语句5,6使用了变量V,但在执行循环前也未对其定义 该程序包括一个异常: ① 语句8对w的定义从未使用过
四 川 大 学 锦 城 学 院 软 件 测 试
数据引用错误
• • • • • • 是否引用了未初始化的变量? 数组和字符串的下标是整数值吗? 是否在应该使用常量的地方使用了变量? 变量是否被赋予不同类型的值? 为引用的指针分配内存了吗? 一个数据结构是否在多个函数或者子程序 中引用,在每一个引用中明确定义结构了 吗?
四 川 大 学 锦 城 学 院 软 件 测 试
3.5 代码质量度量
• 软件质量包括六个方面:功能性、可靠性、 四 川 易用性、效率、可维护性和可移植性。软 大 学 件的质量是软件属性的各种标准度量的组 锦 城 合。 学 院 • 针对软件的可维护性,目前业界主要存在 软 三种度量参数:Line复杂度、Halstead复 件 测 试 杂度和McCabe复杂度。其中
四 川 大 学 锦 城 学 院 软 件 测 试
3.2.3 检查产品说明书的基本原则 是什么?
• 测试产品说明书时第一步不是钻进去查找 四 川 缺陷,而是站在一个高度上进行审查,审 大 学 查产品说明书是为了检查出根本性的问题、 锦 城 疏忽和遗漏之处。 学
院 软 件 测 试
3.2.4 怎样检查产品说明书?

3.3.3 代码检查过程
同事审查 公开陈述 检验
计划检查
准备检查 资料
个人准备
正式审查
四 川 大 学 锦 城 学 院 软 件 测 试
审查总结
总结报告
图3-1 代码检查过程示意图
• 正式审查的4个基本要素:
– 确定问题 – 遵守规则 – 准备 – 编写报告
四 川 大 学 锦 城 学 院 软 件 测 试
相关文档
最新文档