3软件静态测试技术课案.ppt

  1. 1、本文档共28页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
A Free sample background from Slide * 第三章 软件静态测试技术 第3章 软件静态测试技术 3.1 软件静态测试 3.2 程序数据流分析方法 3.3 程序控制流分析方法 3.4 软件的复杂性度量 3.5 软件评审 3.1 软件静态测试 静态测试的基本概念 静态测试是软件测试主要技术手段之一,基本上由手工评审和静态分析两种技术方法所组成。 静态测试的主要目的是从已有规格说明、已定义的标准甚至是项目中发现缺陷和偏差。这些检查结果可用于优化开发过程。 与动态测试需要运行软件不同,静态测试不是测试用例的执行,而是一个静态分析的过程。这种分析可通过人工方式的评审来完成(主要是对项目技术文档的审查),也可使用特定的测试分析工具来进行(例如对程序编码规范的自动检查)。 静态分析有别于程序的编译。 软件静态测试(续) 静态测试内容及过程 测试需求分析:依据软件开发计划、需求文档确定测试的需求,建立测试基础与评审基础,建立标准测试计划。 测试概要设计:在需求分析的基础上,完成测试方案的制定,包括测试内容、测试策略、测试方法、测试目标。 测试详细设计:主要任务是完成测试进程的各项具体安排和测试实施的具体细节考虑,包括测试工具选用、测试人员组织及测试进度安排等。 测试执行与结果分析:根据已制定完成的静态测试计划进行静态测试,落实和完成各项测试的具体任务,并提交测试工作的交付物。 软件静态测试(续) 静态测试技术——代码检查 代码检查包括代码走查(自检、他人检查或代码审查会等形式),主要检查代码和设计的一致性,代码对标准的遵循、可读性,代码逻辑表达的正确性,代码结构的合理性等方面。 在实际测试运用中,代码检查比动态测试更为有效,能够快速并较准确地找到缺陷,发现30% ~ 60%的逻辑设计和编码缺陷的问题。 代码检查一般在编译与动态测试之前进行,看到的是程序问题的本身而非征兆(不需做额外的错误定位工作),因此非常耗时,而且需要有比较深厚的专业技术知识与大量编程经验的积累。 软件静态测试(续) 静态测试技术——程序结构静态分析 程序结构静态分析主要以图形方式表现程序的内部结构,例如函数调用关系图、函数内部控制流图。 静态结构分析的检查项:代码风格和规则审查;程序设计和结构的审核;业务逻辑的审核;走查、审查与技术复审手册。 静态测试技术——程序代码质量度量 Line复杂度:以代码的行数作为度量计算的基准。 Halstead复杂度:以程序中出现的操作符和操作数作为计算对象,并据此计算出程序长度和程序容量。 McCabe复杂度(圈复杂度):将程序流程图结构转化为有向图结构,以图论方法来计算(衡量)程序复杂度。 软件静态测试(续) 静态测试技术——检查与评审 静态测试评审:对需求分析和概要设计进行评审。手工评审分为正式评审和非正式评审,正式评审是执行检查过程(技术评审),非正式评审主要为走查过程。 静态测试检查:对静态测试的每个过程都要进行检查,以确保静态测试的有效性和测试的质量。检查以会议的形式进行,根据检查结果决定是否需要重新制订计划或其后的某项环节及工作。 采用静态测试可发现1/3~2/3的软件逻辑设计和编码方面的错误,但软件代码中仍会有隐藏的故障无法通过静态测试方法发现,还必须通过动态测试对程序进行深入分析。 3.2 程序数据流分析方法 数据流分析 数据流分析是在程序代码经过的路径上检查数据的用法,主要是为了发现定义/引用异常的缺陷。这里的异常指可能会导致程序失效的情形,异常可能会触发运行风险。 在数据流分析过程中,需要检查每个变量的使用情况。对变量的用法或变量的状态区别为三种类型:已定义的(d) – 变量已经赋值;引用的(r) – 读取或使用变量的值;没有定义的(u) – 变量没有定义具体的值。根据变量的使用状况,可以区分数据流异常的三种情况: ur异常– 程序路径(r)上读取了没有定义(u)的变量 du异常– 变量被赋值(d),但这个变量已经变成无效或没有定义(u)的状态,同时没有被引用 dd异常– 变量接受了第二个值(d),同时第一个值没被使用 程序数据流分析方法(续) 异常的例子: void exchange (int Min, int Max) { int help; if (MinMax) { Max = Help; Max = Min; Help = Min; } } 在该函数中出现了数据流异常的情况:变量Help的ur异常;变量Max的dd异常;变量Help的du异常。 说明:不是每个异常都会导致不正确的程序行为。 有时数据流异常不一定很明显,很容易被手工检查(比如 评审)遗漏,

文档评论(0)

希望之星 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档