《《静态测试》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《静态测试》PPT课件.ppt(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第二章 静态测试1本章要点p讨论与静态测试相关的内容,包括讨论与静态测试相关的内容,包括n评审1.评审的定义和分类2.同行评审的分类3.评审工作流程4.对规格说明书的测试5.源代码评审n静态分析及其工具软件测试方法和应用 2-2静态测试 p定义定义 n通过检查和评审软件而不是运行软件对软件进行测试的方法 p对象对象n各种与软件相关的有必要进行测试的产物,例如各类文档、源代码等p方法方法n评审p对软件元素或项目状态进行评估的活动,用以确定与预期结果之间的偏差和相应的改进意见p通常由人来执行n静态分析p被测程序进行特性分析的一些方法的总称 p通常需要工具辅助软件测试方法和应用 2-3缺陷发现越早修
2、复成本越低软件测试方法和应用 2-4评审 p除了在项目早期发现缺陷和降低项目失败风险外,项目中需要进行评审的其它除了在项目早期发现缺陷和降低项目失败风险外,项目中需要进行评审的其它原因包括原因包括1.分享知识2.培训团队成员3.为管理层决策提供依据4.为过程改进提供信息p评审分类评审分类n培训评审n预备评审n同行评审n状态评审软件测试方法和应用 2-5p同行评审(Peer Review)n由开发软件产品作者以外的其他人检查工作产品,以发现缺陷并寻找改进的机会 n方法:评审参与者主要采用一行一行仔细阅读被评审对象的形式发现被测对象中的缺陷n一般设在里程碑点附近,即当工作产品到达了一个完成的里程碑
3、并即将进入下一个开发阶段时同行评审软件测试方法和应用 2-6V模型的评审时间点需求需求|需求规格说明书需求规格说明书评审评审概要设计概要设计|概要设计说明书概要设计说明书详细设计详细设计|详细设计说明书详细设计说明书编码编码|源代码源代码单元测试单元测试集成测试集成测试系统测试系统测试系统测试文档系统测试文档集成测试文档集成测试文档单元测试文档单元测试文档评审评审评审评审评审评审评审评审评审评审走读,静态分析走读,静态分析软件测试方法和应用 2-7p同行评审的类型n审查n小组评审n走读n桌面评审n临时评审p这些同行评审类型的区别在于正式程度n审查是最正式,然后是小组评审、走读、桌面评审,临时评
4、审最随意n同行评审越正式,发现的缺陷越多,但评审越正式,花费成本越高n被评审对象越重要或者风险越高,采用的评审方式越正式 同行评审的类型软件测试方法和应用 2-8审查p说明说明nIBM的工程师Michael Fagan于20世纪70年代提出,也叫正式评审,是一种包括非作者等专家在内的针对特定对象,如需求规格书、设计文档和源代码进行检查以发现缺陷的过程n审查是一种有结构有规则的评审方法。Fagan的审查流程包括:计划、介绍会议、准备、会议、返工、跟踪、因果分析,每个阶段定义p参与审查的角色p相应的输入、输出软件测试方法和应用 2-9审查流程软件测试方法和应用 2-10审查中的角色 p作者n被评审
5、对象的创建者,提供被评审对象及其相关信息p评审组长 n组织评审会议,确保审查活动能够正确地进行p审查专家n发现被评审对象中的问题p读者n在会议上讲解被评审对象,使评审专家把精力集中在被评审对象本身而不是作者p记录员n记录会议阶段有价值的信息软件测试方法和应用 2-11p计划计划n参与者:作者和评审组长n在这个阶段,需要开展如下工作1.选择评审组长2.确定审查对象3.确定审查专家4.确定总体会议、会议次数和相应的时间表5.准备和分发审查工作包,n审查包中包括被审查对象的初始可交付产品、相关参考文档、缺陷检查表、指导书、错误记录模版和其它材料审查工作流程软件测试方法和应用 2-12p总体会议总体会
6、议n本阶段可选,主要目标是让审查专家熟悉被审查对象,包括对象特征、上下文、背景等n参与者:所有需要参加审查的人员p准备准备n参与者:审查专家n这是审查最重要的阶段。在这个阶段,1.审查专家独立工作、逐行阅读被审查对象,将任何发现问题、疑问记录在审查意见单中2.评审组长根据各个审查专家提交的意见决定是否按时或者推迟召开审查会议审查工作流程软件测试方法和应用 2-13p会议会议 n参与者:作者、评审组长、审查专家、读者、记录员n在会议阶段1.读者分段逐个阅读审查对象,审查专家听取讲解并考虑是否有新的问题提出。2.评审组长组织对所有审查意见单上的问题列表进行确认,作者确认是否是问题,记录员在问题列表
7、上记录答复和在会上发现的新缺陷。3.在会议结束前,所有人投票,给出对工作产品的审查结论。审查工作流程软件测试方法和应用 2-14p返工返工 n参与者:作者n在此阶段,作者修改会议中确认的问题,输出修改后的交付产品p跟踪跟踪n参与者:评审组长/质量工程师/指定的审查专家n检查修改后的交付件,如果通过,则输出可基线的交付物p因果分析因果分析n参与者:质量工程师n在这个阶段,开展如下工作:1.分析缺陷原因2.度量审查效率和效果审查工作流程软件测试方法和应用 2-15审查规则p为了更好地发挥审查的作用,在审查中有一组需要遵守的原则n作者不能担当评审组长、读者或记录员等角色,要保持开放的思想,接受别人的
8、意见,避免争论n评审组长不要同时担任记录员n控制审查小组规模:37个审查专家为好n审查专家要努力发现被审查对象中的问题,审查过程中始终保持对问题的敏感性n审查期间要努力发现问题不要试图去解决问题n会议限制在两个小时之内n在会议上,审查团队要保持一个适当的审查速度,每小时150200行代码或34页文档软件测试方法和应用 2-16小组评审p小组评审小组评审n类似于审查,是一种“轻型审查”,同样可以可采用审查的指导方针和流程,只是没有审查正式也没有审查严格,会议期间读者的角色由评审组长代替n小组评审方法发现问题的数量是审查的2/3软件测试方法和应用 2-17走读和同级桌查p走读走读 n产品的作者一组
9、同事说明该产品,希望获得他们的意见以满足自己的需要。n走查是一种非正式的评审,其过程由作者主持,没有标准的流程可循n发现的缺陷数量比审查少一半过程p同级桌查同级桌查n一对一评审,是指只有除作者以外只有一位评审专家对工作产品进行检查 软件测试方法和应用 2-18临时评审p临时评审临时评审n请团队内其他同事帮忙,在短时间内解决一些问题p举例n假设这样一个场景:Susan是一个程序员,她正在检查自己的代码。John,Susan的同事,是另外一个程序员:Susan:”Hi,John,能帮个忙吗?”John:”当然,我现在刚好有空”Susan:”我的程序有点问题,但我不找不到问题在哪里”John:”Ok
10、ey!让我看看!”几分钟后,”Oh,问题可能在这儿,你看,这里有变量用错误,这个“i”好像没定义过,你是不是想用“j”?Susan:”Oh,yeah!没错!非常感谢!”软件测试方法和应用 2-19软件评审指导书p内容内容n目的 n范围 n评审角色及职责 n过程准则 1.目标2.进入标准3.活动4.退出标准5.度量n相关资料 n过程监控 软件测试方法和应用 2-20p检查软件的规格说明书一般采用逐行阅读说明书以发现缺陷的方式,规格说明书的测试应该在说明书整体或者部分完成后立即开展p原因n尽早发现缺陷n使说明书具有更好的可测试性n软件测试人员可以更加熟悉系统应用p具体方法n静态黑盒测试:由于考虑到
11、规格说明书的重要性,很多软件项目选择审查作为评审规格说明书的方式n在进行规格说明书审查时可以采用如下技术:1.对说明书进行概要评审2.对说明书进行详细评审测试规格说明书软件测试方法和应用 2-21p目标n发现特定的缺陷,比如大的原理性问题,遗漏或过度复杂的描述等p可以使用如下技术n假设作为用户:质量就是满足用户要求n研究现有标准和基线n评审和测试类似软件系统规格说明书的概要评审(1)软件测试方法和应用 2-22p假设作为用户n从用户的角度检查规格书,可以问自己如下问题,如果我是软件的客户:1.我需要什么样的功能?2.我需要的所有功能是否都包含在规格书中了?3.是否存在与现有系统冲突的功能?4.
12、功能是否易于使用?5.性能如何?6.功能的安全情况如何?7.等等n如果能从一些熟悉软件目标应用领域的人处获得支持,对评审过程将是非常有帮助的规格说明书的概要评审(2)软件测试方法和应用 2-23p研究现有标准和基线n当对规格书进行概要评审的时候,测试人员应该参考现有的标准和基线:1.组织标准、术语和惯例:软件应该使用终端用户的通用术语和惯例2.工业标准:在某些工业领域,例如通讯、金融,有很多应用软件必须遵守的协议3.政府标准4.安全标准5.等等n测试人员应该把相关标准作为规格说明书评审的一部分n评审规格说明书的同时,测试人员应该验证系统参考了正确的标准并且没有遗漏规格说明书的概要评审(3)软件
13、测试方法和应用 2-24p评审和测试类似软件n没有什么比经验更好的东西了,从类似软件中可以得大量有用的信息,这些参考软件可能是:1.正在开发系统的早期版本2.组织内的类似软件3.竞争对手产品n分析类似软件的时候,应密切关注如下问题并考虑这些是否会影响被测试系统:1.特性是否有增删?2.代码变更比例如何?3.软件的复杂度是否有区别?4.可测试性如何?5.性能、安全性和其他一些非功能特性如何?6.最后,不要忘了你可以从公共出版物和网上找到有价值的信息规格说明书的概要评审(4)软件测试方法和应用 2-25p一个好的规格说明书具有如下属性n完整性:是否忘记或遗漏了什么内容?是否彻底?是否包含了该说明书
14、所必须包含的所有信息?n精确性:建议的提案是否正确?是否定义了合适的目标?是否有什么错误?n准确性、明确而清晰:描述是否清晰明确,是否有歧义?是否易于阅读和理解?n一致性:特性描述内部和特性之间是否相互矛盾n相关性:细分特性是否必须?是否需要去除不必要的信息?特性是否可以跟踪到一个原始用户需求n可行性:项目计划和预算都是明确的,在给定的人力、工具和资源条件下,特性能否实现?规格说明书的详细评审(1)软件测试方法和应用 2-26p一个好的规格说明书具有如下属性n代码无关:规格书的目标是定义产品需求而不是软件设计,架构和代码n可测试的:特性是否可测试?是否提供了让测试人员得以验证功能的足够信息p检
15、查规格说明书的同时,时刻关注评审的文字和图片是否具有这样的属性规格说明书的详细评审(2)软件测试方法和应用 2-27p问题词语列表n评审规格说明书的时候应密切关注下面的一些词汇以及这些词汇的上下文含义是否清晰,这些常常会带来缺陷:1.总是、每个、所有、没有一个、从来不:这些词表示肯定和确定的含义,必须确认该用这些词语,或找出不该使用的理由2.当然、所以、明显地、无疑、显然:这些词有劝说人接受的意思,规格书中尽量避免3.一些、有时、经常、通常、大部分、主要的、等等、类似、好、快、便宜、高效、小和稳定:这些词可测试性差,必须进一步定义以给出确切的含义描述4.有把握的、处理过的、拒绝的、跳过的、去掉
16、的:这些词可能隐藏一些本该详细说明的功能性需求5.如果.那么:这些描述依赖于其他因素,不可取规格说明书的详细评审(3)软件测试方法和应用 2-28p在代码全部或部分完成后,应立即进行逐行代码评审以发现缺陷p原因n发现缺陷越早越好n使得程序更具可测试性n软件测试人员可以更加熟悉系统p方法n静态白盒测试:很多软件项目团队选择审查作为评审核心代码的方式,采用走读和同级桌查作为一般代码的评审方式n团队采用如下原则进行代码评审效果更好1.评审人员有程序开发语言的专业知识2.有程序基线和标准供参考代码检查软件测试方法和应用 2-29p编码规范编码规范n编码规范是代码编写过程中必须遵循的规则,包含了程序开发
17、的最佳实践、在编写代码时重复这些最佳实践有助于生产高质量的软件。p代码检查表代码检查表n代码检查表是对应于编码规范中的各个标准与规范开发的检查项,包含容易出错和以往在工作中遇到的典型错误,可以认为是在进行代码评审时用到的测试用例。n在进行代码评审时,评审专家会关注被评审代码是否符合检查表规范,如果不符合则很可能存在缺陷。编码规范和代码检查表软件测试方法和应用 2-30p请注意请注意n不同的编码语言和项目团队可能采用不同的标准和基线,适合项目的就是最好的n编码规范和检查表应该在一个项目完成后被检验和更新编码规范和代码检查表软件测试方法和应用 2-31静态分析p定义定义n静态分析是对被测程序进行特
18、性分析的一些方法的总称,一般借助工具进行 p可提供的功能包括:可提供的功能包括:n发现代码中的缺陷,包括1.用错的局部变量和全程变量2.不匹配的参数3.不适当的循环嵌套和分支嵌套4.不适当的处理顺序5.无终止的死循环6.未定义的变量7.不允许的递归8.调用并不存在的子程序9.遗漏了标号或代码10.不恰当的连接等软件测试方法和应用 2-32静态分析p可提供的功能可提供的功能n找到潜伏着缺陷的根源。1.未使用的变量2.不会执行到的代码3.未引用过的标号4.可疑的计算5.潜在的死循环等n提供间接涉及程序缺陷的信息:每一类型语句出现的次数、所用变量和常量的交叉引用表、标识符的使用方式、过程的调用层次、
19、违背编码规则等n为进一步查错作准备。软件测试方法和应用 2-33静态分析工具p说明说明n静态分析工具是一类实现静态分析方法的软件工具,通过对代码进行扫描并对其进行词法和语法分析,构造与代码结构特征相关的抽象模型以达到对代码进行某些方面分析的目的。p分类分类n按照功能,例如1.代码审查2.一致性检查3.交叉索引4.接口分析5.输入输出规格说明分析6.数据流分析7.错误检查8.类型分析9.单元分析软件测试方法和应用 2-34静态分析工具p基于数据流分析方法的静态分析工具,可提供的缺陷信息:基于数据流分析方法的静态分析工具,可提供的缺陷信息:1.语法错误信息;2.各种类型源语句出现的次数;3.标识符
20、使用的交叉索引;4.标识符在每个语句中使用的各种情况,如数据源点、数据终点、调用参数、哑参数和下标等;5.每个程序所调用的子程序和函数;6.未经初始化的变量;7.未曾使用过的变量;8.任何输入数据都执行不到的孤立代码段;9.违背编码标准之处,包括背离语言标准以及用户制定的实用标准;10.错用的全程变量、公用变量及参数表,如参数个数有误、类型不匹配、输入参数未经初始化、输出参数未赋值、输出参数虽赋值但未使用、对输入和输出均无用的参数等等。软件测试方法和应用 2-35静态分析工具p按工具来源分按工具来源分n商业工具1.Klocwork Insight2.GIMPEL Software的PC-Lin
21、t(针对C/C+语言)3.ParaSoft的C+Test和JTestn开源工具pFindBugs软件测试方法和应用 2-36小结p静态测试的对象集中在需求文档、设计文档以及程序代码上,是在不执行被测代码的条件下发现缺陷的一类方法。通过运用静态测试方法可以尽早地发现软件中的缺陷。p常用的静态测试方法包括评审、静态分析等。p同级评审是以发现缺陷为主要目的的一种评审方法。按照正式程度由高到低,同级评审可分为审查、小组评审、走查、同行桌查和临时评审等几种。在实际的项目开发过程中,被评审对象越重要或者风险越高,采用的评审方法越正式。p静态分析是对被测程序进行特性分析的一些方法的总称,可用于确定代码某些特定类别的缺陷。p经过评审、静态分析之后的代码,为真正进行动态的代码测试做好了准备。软件测试方法和应用 2-37问题Q&A软件测试方法和应用 2-38