静态测试与动态测试

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

代码检查方式
(1)桌面检查 (2)代码审查 (3)走查
5 广州大学华软软件学院软件工程系
软件测试技术(SS0004)

代码会审是由一组人通过阅读、讨论和争 议对程序进行静态分析的过程。 代码审查小组成员:


组长:能力较强的程序员 待审程序的设计者或程序员 测试专家
3 广州大学华软软件学院软件工程系
软件测试技术(SS0004)
1 代码检查法

代码检查法主要是通过桌面检查,代码审查和走查 方式,对以下内容进行检查: (1) 检查代码和设计的一致性; (2) 代码的可读性及对软件设计标准的遵循情况; (3) 代码逻辑表达的正确性; (4) 代码结构的合理性; (5) 程序中不安全、不明确和模糊的部分; (6) 编程风格方面的问题等。
在软件动态测试中,程序插桩是一种基本的 测试手段,有着广泛的应用。 程序插桩方法是借助往被测程序中插入操作 ,来实现测试目的的方法,即向源程序中添加一 些语句,实现对程序语句的执行、变量的变化等 情况进行检查。
14 广州大学华软软件学院软件工程系
软件测试技术(SS0004)
想了解一个程序在某次运行中所有可执行
主要内容

1静态测试与动态测试的含义 2代码检查 3静态结构分析 4程序插桩 5逻辑覆盖
1 广州大学华软软件学院软件工程系
软件测试技术(SS0004)
静态测试与动态测试的含义
白盒测试可分为静态测试和动态测试。 静态测试是一种不通过执行程序而进行测试的技 术,其关键功能是检查软件的表示和描述是否一致, 没有冲突或者没有歧义。侧重于纠正软件系统在描述 、表示和规格上的错误,是任何进一步测试的前提。 动态测试需要软件执行,当软件系统在模拟或真实 环境中执行之前、之中和之后,对软件系统行为的分 析是动态测试的主要特点。它显示一个系统在检查状 态下是正确还是不正确。
语句被覆盖的情况,或是每个语句的实际执行
次数,最好的办法是利用插桩技术。
以计算整数X和整数Y的最大公约数程序为
例,说明插桩方法的要点。图3-1给出了这一 程序的流程图。
15 广州大学华软软件学院软件工程系
软件测试技术(SS0004)
入口
Fra Baidu bibliotek
C(1)=C(1)+1

Q=X
R=Y
C(2)=C(2)+1
Q≠R C(4)=C(4)+1 C(3)=C(3)+1

程序没有注释 程序=代码+注释 注释语句/总代码行数 =1/5~1/4 子函数max没有返回值类型 精度丢失问题 main函数没有返回值类型和参 数表(默认为void main

建议修改的问题(3)

(void))


1行代码只定义1个变量。 程序适当加一些空行 程序中存在未使用的变量
Q>R C(5)=C(5)+1 C(6)=C(6)+1
出口
插 桩 后 求 最 大 公 约 数 程 序 的 流 程 图
11 广州大学华软软件学院软件工程系
常用的关系图、控制流图
① 函数调用关系图:列出所有函数,用连线表 示调用关系,通过应用程序各函数之间的调用关系 展示系统的结构。 ② 模块控制流图:由许多结点和连接结点的边 组成的图形,其中每个结点代表一条或多条语句, 边表示控制流向,可直观反映出一个函数的内部结 构。
软件测试技术(SS0004)
2 静态结构分析法
测试人员通过使用测试工具分析程序源代码的系统 结构、数据结构、数据接口、内部控制逻辑等内部结 构,生成函数调用关系图、模块控制流图、内部文件 调用关系图等各种图形、图表,清晰地标识整个软件 的组成结构。 通过分析上述图表,包括控制流分析、数据据流分 析、接口分析、表达式分析等,使其便于阅读与理解 ,然后可以通过分析这些图表,检查软件是否存在缺 陷或错误。
软件测试技术(SS0004)

8 广州大学华软软件学院软件工程系

必须修改的问题(3)

#include<stdio.h> max(float x,float y) { float z; z=x>y?x:y; return(z); } main() { float a,b; int c,d; scanf("%f,%f",&a,&b); c=max(a,b); printf("Max is %d\n",c); } 9 广州大学华软软件学院软件工程系


6 广州大学华软软件学院软件工程系
软件测试技术(SS0004)

代码审查时应注意问题:

提出的建议应针对程序本身,而不应针对程
序员。

程序员对整个审查过程采取积极和建设性的
态度。
7 广州大学华软软件学院软件工程系
软件测试技术(SS0004)

代码走查(code walkthrough)
走查是以小组为单元进行代码阅读的,同样 也是一系列规程和错误检查技术的集合。 人员组成 一位经验丰富的程序员 一位程序设计语言专家 一位程序员新手 一位其他不同项目的人员 一位该软件编程小组的成员
2 广州大学华软软件学院软件工程系 软件测试技术(SS0004)
3.1 静态测试
最常见的静态测试是找出源代码的语法错误,可 由编译器来完成,因编译器可逐行分析检验程序的 语法,找出错误并报告。 除此之外,测试人员须采用人工方法来检验程序 ,有些地方存在非语法方面错误,只能通过人工检 测的方法来判断。 人工检测的方法主要有代码检查法、静态结构分 析法等。
12 广州大学华软软件学院软件工程系
软件测试技术(SS0004)
(2) 错误静态分析

静态错误分析主要用于确定在源程序中是否有某类 错误或“危险”结构。 ① 类型和单位分析 ② 引用分析 ③ 表达式分析 ④ 接口分析
13 广州大学华软软件学院软件工程系
软件测试技术(SS0004)
3.2 程序插桩技术

10 广州大学华软软件学院软件工程系
软件测试技术(SS0004)

静态结构分析法通常采用以下方法进行源程序的 静态分析: (1) 通过各种图表对源程序进行静态分析 常用的各种引用表主要有: ① 标号交叉引用表 ② 变量交叉引用表 ③ 子程序(宏、函数)引用表 ④ 等价表 ⑤ 常数表
软件测试技术(SS0004)
相关文档
最新文档