3软件静态测试技术分析
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Slide 1
第3章 软件静态测试技术
3.1 软件静态测试 3.2 程序数据流分析方法 3.3 程序控制流分析方法 3.4 软件的复杂性度量 3.5 软件评审
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
静态测试技术——程序代码质量度量 Line复杂度:以代码的行数作为度量计算的基准。 Halstead复杂度:以程序中出现的操作符和操作数作为计 算对象,并据此计算出程序长度和程序容量。 McCabe复杂度(圈复杂度):将程序流程图结构转化为 有向图结构,以图论方法来计算(衡量)程序复杂度。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 8
程序数据流分析方法(续)
Βιβλιοθήκη Baidu
异常的例子: void exchange (int& Min, int& Max) { int help; if (Min>Max) { Max = Help; Max = Min; Help = Min; } } 在该函数中出现了数据流异常的情况:变量Help的ur异常; 变量Max的dd异常;变量Help的du异常。 说明:不是每个异常都会导致不正确的程序行为。 有时数据流异常不一定很明显,很容易被手工检查(比如 评审)遗漏,而分析数据流的工具可以发现这些异常。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 6
软件静态测试(续)
静态测试技术——检查与评审
静态测试评审:对需求分析和概要设计进行评审。手工评 审分为正式评审和非正式评审,正式评审是执行检查过程 (技术评审),非正式评审主要为走查过程。 静态测试检查:对静态测试的每个过程都要进行检查,以 确保静态测试的有效性和测试的质量。检查以会议的形式 进行,根据检查结果决定是否需要重新制订计划或其后的 某项环节及工作。 采用静态测试可发现1/3~2/3的软件逻辑设计和编码方面的 错误,但软件代码中仍会有隐藏的故障无法通过静态测试 方法发现,还必须通过动态测试对程序进行深入分析。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 5
软件静态测试(续)
静态测试技术——程序结构静态分析 程序结构静态分析主要以图形方式表现程序的内部结构, 例如函数调用关系图、函数内部控制流图。 静态结构分析的检查项:代码风格和规则审查;程序设计 和结构的审核;业务逻辑的审核;走查、审查与技术复审 手册。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 4
软件静态测试(续)
静态测试技术——代码检查
代码检查包括代码走查(自检、他人检查或代码审查会等 形式),主要检查代码和设计的一致性,代码对标准的遵 循、可读性,代码逻辑表达的正确性,代码结构的合理性 等方面。 在实际测试运用中,代码检查比动态测试更为有效,能够 快速并较准确地找到缺陷,发现30% ~ 60%的逻辑设计和 编码缺陷的问题。 代码检查一般在编译与动态测试之前进行,看到的是程序 问题的本身而非征兆(不需做额外的错误定位工作),因 此非常耗时,而且需要有比较深厚的专业技术知识与大量 编程经验的积累。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 3
软件静态测试(续)
静态测试内容及过程
测试需求分析:依据软件开发计划、需求文档确定测试的 需求,建立测试基础与评审基础,建立标准测试计划。 测试概要设计:在需求分析的基础上,完成测试方案的制 定,包括测试内容、测试策略、测试方法、测试目标。 测试详细设计:主要任务是完成测试进程的各项具体安排 和测试实施的具体细节考虑,包括测试工具选用、测试人 员组织及测试进度安排等。 测试执行与结果分析:根据已制定完成的静态测试计划进 行静态测试,落实和完成各项测试的具体任务,并提交测 试工作的交付物。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 7
3.2 程序数据流分析方法
数据流分析 数据流分析是在程序代码经过的路径上检查数据的用法, 主要是为了发现定义/引用异常的缺陷。这里的异常指可能 会导致程序失效的情形,异常可能会触发运行风险。 在数据流分析过程中,需要检查每个变量的使用情况。对 变量的用法或变量的状态区别为三种类型:已定义的(d) – 变量已经赋值;引用的(r) – 读取或使用变量的值;没有定 义的(u) – 变量没有定义具体的值。根据变量的使用状况, 可以区分数据流异常的三种情况: • ur异常– 程序路径(r)上读取了没有定义(u)的变量 • du异常– 变量被赋值(d),但这个变量已经变成无效或没有 定义(u)的状态,同时没有被引用 • dd异常– 变量接受了第二个值(d),同时第一个值没被使用
Slide 2
3.1 软件静态测试
静态测试的基本概念
静态测试是软件测试主要技术手段之一,基本上由手工评 审和静态分析两种技术方法所组成。 静态测试的主要目的是从已有规格说明、已定义的标准甚 至是项目中发现缺陷和偏差。这些检查结果可用于优化开 发过程。 与动态测试需要运行软件不同,静态测试不是测试用例的 执行,而是一个静态分析的过程。这种分析可通过人工方 式的评审来完成(主要是对项目技术文档的审查),也可 使用特定的测试分析工具来进行(例如对程序编码规范的 自动检查)。 静态分析有别于程序的编译。
第3章 软件静态测试技术
3.1 软件静态测试 3.2 程序数据流分析方法 3.3 程序控制流分析方法 3.4 软件的复杂性度量 3.5 软件评审
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
静态测试技术——程序代码质量度量 Line复杂度:以代码的行数作为度量计算的基准。 Halstead复杂度:以程序中出现的操作符和操作数作为计 算对象,并据此计算出程序长度和程序容量。 McCabe复杂度(圈复杂度):将程序流程图结构转化为 有向图结构,以图论方法来计算(衡量)程序复杂度。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 8
程序数据流分析方法(续)
Βιβλιοθήκη Baidu
异常的例子: void exchange (int& Min, int& Max) { int help; if (Min>Max) { Max = Help; Max = Min; Help = Min; } } 在该函数中出现了数据流异常的情况:变量Help的ur异常; 变量Max的dd异常;变量Help的du异常。 说明:不是每个异常都会导致不正确的程序行为。 有时数据流异常不一定很明显,很容易被手工检查(比如 评审)遗漏,而分析数据流的工具可以发现这些异常。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 6
软件静态测试(续)
静态测试技术——检查与评审
静态测试评审:对需求分析和概要设计进行评审。手工评 审分为正式评审和非正式评审,正式评审是执行检查过程 (技术评审),非正式评审主要为走查过程。 静态测试检查:对静态测试的每个过程都要进行检查,以 确保静态测试的有效性和测试的质量。检查以会议的形式 进行,根据检查结果决定是否需要重新制订计划或其后的 某项环节及工作。 采用静态测试可发现1/3~2/3的软件逻辑设计和编码方面的 错误,但软件代码中仍会有隐藏的故障无法通过静态测试 方法发现,还必须通过动态测试对程序进行深入分析。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 5
软件静态测试(续)
静态测试技术——程序结构静态分析 程序结构静态分析主要以图形方式表现程序的内部结构, 例如函数调用关系图、函数内部控制流图。 静态结构分析的检查项:代码风格和规则审查;程序设计 和结构的审核;业务逻辑的审核;走查、审查与技术复审 手册。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 4
软件静态测试(续)
静态测试技术——代码检查
代码检查包括代码走查(自检、他人检查或代码审查会等 形式),主要检查代码和设计的一致性,代码对标准的遵 循、可读性,代码逻辑表达的正确性,代码结构的合理性 等方面。 在实际测试运用中,代码检查比动态测试更为有效,能够 快速并较准确地找到缺陷,发现30% ~ 60%的逻辑设计和 编码缺陷的问题。 代码检查一般在编译与动态测试之前进行,看到的是程序 问题的本身而非征兆(不需做额外的错误定位工作),因 此非常耗时,而且需要有比较深厚的专业技术知识与大量 编程经验的积累。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 3
软件静态测试(续)
静态测试内容及过程
测试需求分析:依据软件开发计划、需求文档确定测试的 需求,建立测试基础与评审基础,建立标准测试计划。 测试概要设计:在需求分析的基础上,完成测试方案的制 定,包括测试内容、测试策略、测试方法、测试目标。 测试详细设计:主要任务是完成测试进程的各项具体安排 和测试实施的具体细节考虑,包括测试工具选用、测试人 员组织及测试进度安排等。 测试执行与结果分析:根据已制定完成的静态测试计划进 行静态测试,落实和完成各项测试的具体任务,并提交测 试工作的交付物。
第三章 软件静态测试技术
A Free sample background from www.powerpointbackgrounds.com
Slide 7
3.2 程序数据流分析方法
数据流分析 数据流分析是在程序代码经过的路径上检查数据的用法, 主要是为了发现定义/引用异常的缺陷。这里的异常指可能 会导致程序失效的情形,异常可能会触发运行风险。 在数据流分析过程中,需要检查每个变量的使用情况。对 变量的用法或变量的状态区别为三种类型:已定义的(d) – 变量已经赋值;引用的(r) – 读取或使用变量的值;没有定 义的(u) – 变量没有定义具体的值。根据变量的使用状况, 可以区分数据流异常的三种情况: • ur异常– 程序路径(r)上读取了没有定义(u)的变量 • du异常– 变量被赋值(d),但这个变量已经变成无效或没有 定义(u)的状态,同时没有被引用 • dd异常– 变量接受了第二个值(d),同时第一个值没被使用
Slide 2
3.1 软件静态测试
静态测试的基本概念
静态测试是软件测试主要技术手段之一,基本上由手工评 审和静态分析两种技术方法所组成。 静态测试的主要目的是从已有规格说明、已定义的标准甚 至是项目中发现缺陷和偏差。这些检查结果可用于优化开 发过程。 与动态测试需要运行软件不同,静态测试不是测试用例的 执行,而是一个静态分析的过程。这种分析可通过人工方 式的评审来完成(主要是对项目技术文档的审查),也可 使用特定的测试分析工具来进行(例如对程序编码规范的 自动检查)。 静态分析有别于程序的编译。