静态测试技术优秀PPT.ppt
《静态测试技术优秀PPT.ppt》由会员分享,可在线阅读,更多相关《静态测试技术优秀PPT.ppt(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、静态测试技术第一页,本课件共有78页软件测试方法和技术软件测试方法和技术董瑞志董瑞志http:/10.28.177.8/nature_dongEmail:hello_MSN:nature_联系电话:联系电话:13913688630第二页,本课件共有78页内容提要内容提要静态测试技术静态测试技术桌面检查桌面检查代码审查代码审查代码走查代码走查技术评审技术评审静态测试的内容静态测试的内容需求定义的静态测试需求定义的静态测试设计文档的静态测试设计文档的静态测试源代码的静态测试源代码的静态测试第三页,本课件共有78页静态测试的定义静态测试的定义不执行程序代码而寻找代码中可能存在的不执行程序代码而寻找代
2、码中可能存在的错误或评估程序代码的过程。错误或评估程序代码的过程。静态测试可以手工进行,也可以借助软件静态测试可以手工进行,也可以借助软件工具自动进行。工具自动进行。北京测试空间是注册于北京市海淀区高新技术园的软件企业,北京测试空间是注册于北京市海淀区高新技术园的软件企业,目前主要业务范围包括软件测试管理工具研发、软件测试目前主要业务范围包括软件测试管理工具研发、软件测试项目外包和软件测试专业技术人才培养及派遣。项目外包和软件测试专业技术人才培养及派遣。北京测试空间地址:北京市海淀区学院路北京测试空间地址:北京市海淀区学院路40号大唐电信测试空间楼号大唐电信测试空间楼联系电话:联系电话:010
3、-62303223 62303260 62303230第四页,本课件共有78页静态测试的特点静态测试的特点静态测试不必动态的执行程序,也就是不必进行测静态测试不必动态的执行程序,也就是不必进行测试用例设计和结果判读等工作;试用例设计和结果判读等工作;静态测试可以由人手工方式进行,充分发挥人的优静态测试可以由人手工方式进行,充分发挥人的优势,行之有效。势,行之有效。解铃还须系铃人,由于人的思维及交流障碍而造成的逻辑解铃还须系铃人,由于人的思维及交流障碍而造成的逻辑错误,有人通过逻辑思维去解决,是一种非常有效的方法;错误,有人通过逻辑思维去解决,是一种非常有效的方法;特别是在充分利用人思维互补的情
4、形,检验出错误特别是在充分利用人思维互补的情形,检验出错误的水平非常高。的水平非常高。静态测试实施不需要特别条件,容易开展静态测试实施不需要特别条件,容易开展第五页,本课件共有78页静态测试的内容静态测试的内容主要由人工进行主要由人工进行 代码审查代码审查(Code Inspection)代码走查代码走查(Walkthrough)桌面检查桌面检查技术审查技术审查主要由软件工具自动进行的静态分析主要由软件工具自动进行的静态分析 广义的理解,还包括软件需求分析和设广义的理解,还包括软件需求分析和设计阶段的技术评审计阶段的技术评审第六页,本课件共有78页代码审查和代码走查代码审查和代码走查由若干程序
5、员与测试员组成一个小组,集由若干程序员与测试员组成一个小组,集体阅读并讨论程序,或者用体阅读并讨论程序,或者用“脑脑”执行并执行并检查程序的过程检查程序的过程 分两步完成分两步完成 预先作一定的准备工作预先作一定的准备工作 然后举行会议进行讨论然后举行会议进行讨论 会议的主题是发现错误而不是纠正错误会议的主题是发现错误而不是纠正错误第七页,本课件共有78页桌面检查桌面检查程序员阅读自己所编的程序程序员阅读自己所编的程序 缺点:缺点:第一,由于心理上的原因,容易对自己的程序的偏爱,第一,由于心理上的原因,容易对自己的程序的偏爱,没有发现错误的欲望(这和已经知道了程序错了读程没有发现错误的欲望(这
6、和已经知道了程序错了读程序找错误所在极为不同)序找错误所在极为不同)第二,由于人的思维定势,有些习惯性的错误自己不第二,由于人的思维定势,有些习惯性的错误自己不易发现易发现 第三,如果根本对功能理解错了,自己不易纠正第三,如果根本对功能理解错了,自己不易纠正 所以这种方法效率不高,可作为个人自我检查所以这种方法效率不高,可作为个人自我检查程序中明显的疏漏或笔误程序中明显的疏漏或笔误第八页,本课件共有78页代码审查与代码走查的优点代码审查与代码走查的优点不仅比桌面检查优越得多,而且与动态测试的方法不仅比桌面检查优越得多,而且与动态测试的方法相比也有很多优点相比也有很多优点 第一,使用这种方法测试
7、,一旦发现错误,就知道错第一,使用这种方法测试,一旦发现错误,就知道错误的性质和位置,因而调试所花费的代价低误的性质和位置,因而调试所花费的代价低 第二,使用这种方法一次能揭示一批错误,而不是一第二,使用这种方法一次能揭示一批错误,而不是一次只揭示一个错误次只揭示一个错误又,如果使用动态测试,通常仅揭示错误的征兆。又,如果使用动态测试,通常仅揭示错误的征兆。程序不终止运行,而对错误的性质和位置还得逐个程序不终止运行,而对错误的性质和位置还得逐个查找。查找。第九页,本课件共有78页代码审查与代码走查的效果代码审查与代码走查的效果经验表明,使用这种方法能够优先的发现经验表明,使用这种方法能够优先的
8、发现3070的逻辑设计和编码错误的逻辑设计和编码错误IBM使用代码审查方法表明,错误的检测使用代码审查方法表明,错误的检测效率高达全部查出错误的效率高达全部查出错误的80Myers的研究发现代码审查和代码走查平的研究发现代码审查和代码走查平均查出全部错误的均查出全部错误的70%第十页,本课件共有78页代码审查、代码走查与动态测试相互补充代码审查、代码走查与动态测试相互补充研究表明使用代码审查和代码走查发现某研究表明使用代码审查和代码走查发现某类错误比用动态测试更有效,而对另一类类错误比用动态测试更有效,而对另一类错误情况正好相反错误情况正好相反由此可见代码审查和代码走查方法与动态由此可见代码审
9、查和代码走查方法与动态测试结合,测试效果更佳。测试结合,测试效果更佳。第十一页,本课件共有78页代码审查的测试内容代码审查的测试内容检查代码和设计的一致性检查代码和设计的一致性检查代码对标准的遵循、可读性检查代码对标准的遵循、可读性检查代码的逻辑表达的正确性检查代码的逻辑表达的正确性检查代码结构的合理性检查代码结构的合理性第十二页,本课件共有78页代码审查的组成和方式代码审查的组成和方式代码审查由一组程序和错误检查技术组成代码审查由一组程序和错误检查技术组成以代码审查组方式组织以代码审查组方式组织第十三页,本课件共有78页代码审查组代码审查组 通常由四人组成,其中一人为组长通常由四人组成,其中
10、一人为组长 组长是关键,最好是一个称职的程序员,但不是被测试组长是关键,最好是一个称职的程序员,但不是被测试程序的编写者,也不需要对所检查的程序很熟悉,但需要程序的编写者,也不需要对所检查的程序很熟悉,但需要较强的组织协调和语言能力较强的组织协调和语言能力 组长的职责包括分配资料、安排计划、主持开会、记组长的职责包括分配资料、安排计划、主持开会、记录并保存被发现的错误录并保存被发现的错误 其余成员包括资深程序员、程序编写者与专职测试人员其余成员包括资深程序员、程序编写者与专职测试人员 根据测试的组织方式(如内部测试和独立测试)不同,代根据测试的组织方式(如内部测试和独立测试)不同,代码审查小组
11、组成可以调节,但组长角色不能变动码审查小组组成可以调节,但组长角色不能变动第十四页,本课件共有78页代码审查的步骤代码审查的步骤准备准备程序阅读程序阅读审查会议审查会议跟踪及报告跟踪及报告第十五页,本课件共有78页准备准备组长提前把程序目录表和设计说明书等材料分配给组长提前把程序目录表和设计说明书等材料分配给小组成员小组成员小组成员熟悉这些材料小组成员熟悉这些材料由被测程序的设计和编码人员向审查组详细说明所由被测程序的设计和编码人员向审查组详细说明所准备的材料,特别是代码的主要功能与功能间的关准备的材料,特别是代码的主要功能与功能间的关系系第十六页,本课件共有78页程序阅读程序阅读审查组人员仔
12、细阅读代码和相关材料审查组人员仔细阅读代码和相关材料对照代码审查单标出明显缺陷及错误对照代码审查单标出明显缺陷及错误第十七页,本课件共有78页审查会议审查会议审查会由组长主持审查会由组长主持首先由程序员逐句阐明程序的逻辑,在此过程中可由程首先由程序员逐句阐明程序的逻辑,在此过程中可由程序员或其他小组成员提出问题,追踪错误是否存在序员或其他小组成员提出问题,追踪错误是否存在经验证明在上述阐述过程中,有很多错误由讲述程序者经验证明在上述阐述过程中,有很多错误由讲述程序者而不是其他小组成员发现而不是其他小组成员发现大声地朗读程序给听众,这样简单的工作是有效的错误检测技大声地朗读程序给听众,这样简单的
13、工作是有效的错误检测技术术然后利用代码审查单来分析讨论然后利用代码审查单来分析讨论组长负责讨论沿着建设性的方向前进,而其他人则集中注组长负责讨论沿着建设性的方向前进,而其他人则集中注意力发现错误,但不去纠正错误意力发现错误,但不去纠正错误第十八页,本课件共有78页跟踪和报告跟踪和报告会后把发现的错误登记造表并交给程序开发人员会后把发现的错误登记造表并交给程序开发人员如果发现错误较多或发现重大错误,那么在改正如果发现错误较多或发现重大错误,那么在改正之后,组长要再次组织审查会议之后,组长要再次组织审查会议为了改进以后的审查工作,对错误登记表也要为了改进以后的审查工作,对错误登记表也要分析,归类和
14、精炼分析,归类和精炼第十九页,本课件共有78页以第三方测试的方式进行代码审查以第三方测试的方式进行代码审查应就发现的缺陷及错误与软件开发人员讨论应就发现的缺陷及错误与软件开发人员讨论避免由于理解不一致产生问题,形成共同认可的审避免由于理解不一致产生问题,形成共同认可的审查结果查结果第二十页,本课件共有78页审查会议的时间审查会议的时间大约以大约以1.52小时为宜小时为宜审查会需要高度集中注意力,时间太长反而容审查会需要高度集中注意力,时间太长反而容易使效率降低易使效率降低每次会议可能处理一个或几个模块每次会议可能处理一个或几个模块第二十一页,本课件共有78页代码审查单代码审查单代码审查单是代码
15、审查过程所用的主要技术代码审查单是代码审查过程所用的主要技术通常是把程序设计及编码中可能发生的各种错误进通常是把程序设计及编码中可能发生的各种错误进行分类,对每一类列举出尽可能多的典型错误,然行分类,对每一类列举出尽可能多的典型错误,然后制成表格后制成表格其它测试中发现的错误也要及时归入代码审查单,其它测试中发现的错误也要及时归入代码审查单,形成某一类型软件针对性的代码审查单,以供审查形成某一类型软件针对性的代码审查单,以供审查时使用时使用第二十二页,本课件共有78页G.J.Myers的代码审查单(部分)的代码审查单(部分)数据引用错误数据引用错误是否引用了未赋值或者未初始化的变量?是否引用了
16、未赋值或者未初始化的变量?所有的数组引用,其下标值是否都在各自的相应维所有的数组引用,其下标值是否都在各自的相应维数定义界内?数定义界内?所有的数组引用,每一个下表是否是整数值?所有的数组引用,每一个下表是否是整数值?所有引用的指针或变量当前是否已经分配储存了?(即所有引用的指针或变量当前是否已经分配储存了?(即是否存在是否存在“悬挂引用悬挂引用”的问题)的问题)在检索操作或下标引用数组时,是否存在在检索操作或下标引用数组时,是否存在“差差1”的错的错误?误?To be continue第二十三页,本课件共有78页G.J.Myers的代码审查单(部分)的代码审查单(部分)数据说明错误数据说明错
17、误所有变量是否都显示地说明了?所有变量是否都显示地说明了?是否每个变量都赋予正常的长度、类型和存储分类?是否每个变量都赋予正常的长度、类型和存储分类?变量的初始化和它的存储类型是否有矛盾?变量的初始化和它的存储类型是否有矛盾?To be continue第二十四页,本课件共有78页G.J.Myers的代码审查单(部分)的代码审查单(部分)计算错误计算错误 是否使用过非一致的数据类型的变量进行运算?是否使用过非一致的数据类型的变量进行运算?是否存在混合运算?是否存在混合运算?赋值语句的目标变量是否比其右边的表达式小赋值语句的目标变量是否比其右边的表达式小第二十五页,本课件共有78页代码审查单的其
18、他内容代码审查单的其他内容还可以包括编程风格、标准、规范的符合性方面还可以包括编程风格、标准、规范的符合性方面的内容的内容 在代码审查单的错误登记表中,应写明所查出的在代码审查单的错误登记表中,应写明所查出的错误的类型、错误类别、错误的严重程度、错误的错误的类型、错误类别、错误的严重程度、错误的位置、错误的原因等信息。位置、错误的原因等信息。第二十六页,本课件共有78页阅读的方法阅读的方法要仔细阅读需求设计等文档,特别是了解软件的整要仔细阅读需求设计等文档,特别是了解软件的整体物理意义、应用背景以及在大系统中的地位体物理意义、应用背景以及在大系统中的地位对大型软件而言,这些信息会在阅读程序时有
19、对大型软件而言,这些信息会在阅读程序时有效地帮助读者从一定的高度审视,而不是停留效地帮助读者从一定的高度审视,而不是停留在逐行扫描代码在逐行扫描代码有些错误要有整体观才能发现有些错误要有整体观才能发现第二十七页,本课件共有78页阅读结构化代码的两种方法阅读结构化代码的两种方法追踪通过每个子程序的主要逻辑行,主要逻辑追踪通过每个子程序的主要逻辑行,主要逻辑行全部跟踪完,然后开始跟踪第二条路径行全部跟踪完,然后开始跟踪第二条路径相当于深度优先遍历。相当于深度优先遍历。按排列顺序追踪代码,从主要行开始,然后检查较按排列顺序追踪代码,从主要行开始,然后检查较低层的程序段低层的程序段相当于广度优先遍历相
20、当于广度优先遍历第二十八页,本课件共有78页两种阅读方法的综合使用两种阅读方法的综合使用这两种方式的差别在于何时进入下层模块,选择那这两种方式的差别在于何时进入下层模块,选择那种方式要视具体程序特点而定种方式要视具体程序特点而定广度优先遍历有助于很快地了解程序的全貌广度优先遍历有助于很快地了解程序的全貌深度优先适于详细查阅功能处理步骤深度优先适于详细查阅功能处理步骤应综合使用上述两种方法,在头一两遍阅读时,采应综合使用上述两种方法,在头一两遍阅读时,采用广度优先,然后用深度优先用广度优先,然后用深度优先第二十九页,本课件共有78页程序阅读的次数程序阅读的次数Beizer提出至少要读程序提出至少
21、要读程序4次,分别针对印刷错次,分别针对印刷错误、数据结构、控制流和处理误、数据结构、控制流和处理4次阅读要比读一次能更快、更容易、更可靠的次阅读要比读一次能更快、更容易、更可靠的完成任务完成任务第三十页,本课件共有78页代码审查的辅助工具代码审查的辅助工具汇编或编译器生成的交叉引用表(变量、标号、子汇编或编译器生成的交叉引用表(变量、标号、子程序)程序)逆向工程工具(例如从源代码生成流程图)逆向工程工具(例如从源代码生成流程图)带有快速查找的编辑器带有快速查找的编辑器第三十一页,本课件共有78页代码走查代码走查代码走查与代码审查相似,它也是由一组程序和代码走查与代码审查相似,它也是由一组程序
22、和错误检查技术组成,只是程序和错误检查技术不错误检查技术组成,只是程序和错误检查技术不完全相同。完全相同。第三十二页,本课件共有78页代码走查组代码走查组 代码走查以小组方式进行代码走查以小组方式进行 代码走查组包括代码走查组包括 组长,类似代码审查组长组长,类似代码审查组长 秘书,负责记录发现的错误,要有一定水平秘书,负责记录发现的错误,要有一定水平 测试人员,应是具有经验的程序设计人员,或精通程序设测试人员,应是具有经验的程序设计人员,或精通程序设计语言的人员,或从未介入被测试程序的设计工作的技术计语言的人员,或从未介入被测试程序的设计工作的技术人员(这样的人没有被已有的设计框住),没有约
23、束,比人员(这样的人没有被已有的设计框住),没有约束,比较容易发现问题。较容易发现问题。第三十三页,本课件共有78页代码走查的过程代码走查的过程与代码审查过程相似与代码审查过程相似先把材料交给每个小组人员,让他们认真研究程序,先把材料交给每个小组人员,让他们认真研究程序,然后再召开代码走查会议。然后再召开代码走查会议。第三十四页,本课件共有78页代码走查会议的内容代码走查会议的内容与代码审查不同,不是读程序和使用代码审查单,而是由被与代码审查不同,不是读程序和使用代码审查单,而是由被指定的作为测试员的小组成员提供若干测试用例(程序的输指定的作为测试员的小组成员提供若干测试用例(程序的输入数据和
24、期望的输出结果),让参加会的成员当计算机,在入数据和期望的输出结果),让参加会的成员当计算机,在会议上对每个测试用例用头脑来执行程序,也就是用测试用会议上对每个测试用例用头脑来执行程序,也就是用测试用例沿程序逻辑走一遍,并由测试人员讲述程序执行过程,在例沿程序逻辑走一遍,并由测试人员讲述程序执行过程,在纸上或黑板上监视程序状态(变量的值)纸上或黑板上监视程序状态(变量的值)每次开会时间以每次开会时间以12小时为宜,但不允许中断小时为宜,但不允许中断如果发现问题由秘书记下来,中间不讨论任何纠错问题,如果发现问题由秘书记下来,中间不讨论任何纠错问题,主要是发现错误主要是发现错误第三十五页,本课件共
25、有78页测试用例在代码走查中的作用测试用例在代码走查中的作用代码走查中,测试用例并不是关键,也并不是仅代码走查中,测试用例并不是关键,也并不是仅想验证这几个测试用例运行是否正确,人脑毕竟想验证这几个测试用例运行是否正确,人脑毕竟比计算机慢太多比计算机慢太多这里这里测试用例是作为怀疑程序逻辑与计算错误的测试用例是作为怀疑程序逻辑与计算错误的启发点,在随测试实例游历程序逻辑时,在怀疑程启发点,在随测试实例游历程序逻辑时,在怀疑程序的过程中发现错误序的过程中发现错误这样,比几个测试用例本身直接发现的错误要多得这样,比几个测试用例本身直接发现的错误要多得多多第三十六页,本课件共有78页代码走查中的缺点
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 静态 测试 技术 优秀 PPT
限制150内