-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx

上传人:李司机 文档编号:6772283 上传时间:2024-01-30 格式:DOCX 页数:10 大小:24.14KB
返回 下载 相关 举报
-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx_第1页
第1页 / 共10页
-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx_第2页
第2页 / 共10页
-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx_第3页
第3页 / 共10页
-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx_第4页
第4页 / 共10页
-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx》由会员分享,可在线阅读,更多相关《-软件测试课件第3章软件测试方法静态测试与动态测试PPT内容-.docx(10页珍藏版)》请在三一办公上搜索。

1、”软件测试课件第3章软件测试方法静态测试与动态测试PPT内容”1、第3章软件测试方法(一)静态测试与动态测试3静态测试技术概述静态测试是不执行被分析的程序,而是通过对模块源代码进行研读、找出其中的错误或可疑之处,收集一些度量数据。静态测试包括对软件产品的需求和设计规格说明书的评审、对程序代码的复审等。静态测试的查错和分析功能是其他方法所不能替代的,可以采纳人工或者计算机帮助静态测试手段进行检测。代码检查主要检查代码和设计的全都性,代码对标准的遵循,可读性,代码规律表达正确性,代码结构合理性等方面;发觉程序中担心全、不明确和模糊部分,找出程序中不行移植部分;发觉违反程序编写风格问题。其中包括变量

2、检查、命名和类型审查、程序规律审查、程序语法检查和程序2、结构检查等内容。包括桌面检查、代码审查和走查等3.1静态测试技术概述桌面检查桌面检查是一种传统的检查方法,由程序员自己检查编写的程序。由于程序员熟识自己的程序和程序设计风格,桌面检查由程序员自己进行可以节约许多检查时间。桌面检查需要首先运行拼写检查器、语法检查器、句法检查器等进行字面检查,现在大多数集成开发环境集成了这些相应的工具关心程序员在编写代码的同时就留意这些可能存在的缺陷。代码检查3.1静态测试技术概述Eg:第28行:返回数据类型应当为int,写成了Int;第33行:缺少标点符号,丁;第37行:返回的关键字return拼写错误;

3、第41行:关键字this”,写成了that3、。代码检查3.1静态测试技术概述桌面检查代码审查代码审查是由若干程序员和测试人员组成一个审查小组,通过阅读、争论和争议,对程序进行静态分析的过程。代码审查分为两步:1.小组负责人提前把设计规格说明书、掌握流程图、程序文本以及有关要求、规范等分发给小组成员,作为审查的依据;2.小组成员在充分阅读这些材料后,召开程序审查会,在会上首先由程序员逐行讲解程序规律,在此过程中程序员或其他小组成员可以提出问题绽开争论,审查错误是否存在。代码检查3.1静态测试技术概述重要性激活结果检查项总计命名重要Y通过命名规章是否与所采纳的规范保持全都?是否遵循了最小长度最多

4、信息原则?重要Y通过has/can/i4、S前缀的函数是否返回布尔型?解释重要Y通过解释是否较清楚且必要?重要Y通过简单的分支流程是否已经被解释?Y不通过距离较远的是否已经被解释?Y不通过非通用变量是否全部被解释?重要Y不通过函数是否已经有文档解释?(功能、输入、返回及其他可选)特别用法是否被解释?声明、空白、缩进Y通过每行是否只声明白一个变量?(特殊是那些可能出错的类型)重要Y通过变量是否已经在定义的同时初始化?重要Y通过类属性是否都执行了初始化?Y通过代码段落是否被合适地以空行分隔?Y通过是否合理地使用了空格使程序更清楚?Y通过代码行长度是否在要求之内?Y通过折行是否恰当?代码检查3.1静

5、态测试技术概述Java代码审查检查表语句5、/功能的分布/规模Y通过包含复合语句的是否成对消失并符合规范?Y不通过是否给单个的循环、条件语句也加了?Y通过if/if-else/if-elseif-else/do-while/switch-case语句的格式是否符合规范?Y通过单个变量是否只做单个用途?重要Y通过单行是否只有单个功能?(不要使用;进行多行合并)重要Y通过单个函数是否执行了单个功能并与其命名相符?Y通过操作符和操作符的应用是否复合规范?规模重要Y通过单个函数不超过规定行数?重要Y通过缩进层数是否不超过规定?重要Y通过是否已经消退了全部警告?重要Y通过常数变量是否声明为final?重

6、要Y不通过对象使用前是否进行了检查?重6、要Y不通过局部对象变量使用后是否被复位为NULL?重要Y通过对数组的访问是否是平安的?(合法的index取值为0,MAX_SIZE-1)。重要Y通过是否确认没有同名变量局部重复定义问题?Y通过程序中是否只使用了简洁的表达式?重要Y通过是否已经用()使操作符优先级明确化?重要Y通过全部推断是否都使用了(常量二变量)的形式?是否消退了流程悬挂?重要Y不通过是否每个if-elseif-else语句都有最终一个else以确保处理了全集?重要Y通过是否每个switch-case语句都有最终一个default以确保处理了全集?Y通过for循环是否都使用了包含下限不

7、包含上限的形式?(k=0;kMAX)重要7、XML标记书写是否完整,字符串的拼写是否正确?Y不通过对于流操作代码的特别捕获是否有finally操作以关闭流对象?退出代码段时是否对临时对象做了释放处理?重要Y通过对浮点数值的相等推断是否是恰当的?(严禁使用=直接推断)代码检查3.1静态测试技术概述Java代码审查检查表牢靠性(函数)重要Y通过入口对象是否都被进行了推断不为空?重要Y通过入口数据的合法范围是否都被进行了推断?(尤其是数组)重要Y通过是否对有特别抛出的方法都执行了try.catch爱护?重要Y通过是否函数的全部分支都有返回值?重要Y通过int的返回值是否合理?(负值为失败,非负值胜利

8、)Y通过对于反复进行了Mt返回值推断是8、否定义了函数来处理?关键代码是否做了捕获特别处理?重要是否确保函数返回CC)RBA对象的任何一个属性都不能为null?重要Y通过是否对方法返回值对象做了null检查,该返回值定义时是否被初始化?重要Y通过是否对同步对象的遍历访问做了代码同步?重要Y通过是否确认在对Map对象使用迭代遍历过程中没有做增减元素操作?重要Y通过线程处理函数循环内部是否有特别捕获处理,防止线程抛出特别而退出?原子操作代码特别中断,使用的相关外部变量是否恢复从前状态?重要Y通过函数对错误的处理是恰当的?可维护性重要Y通过实现代码中是否消退了直接常量?(用于计数起点的简洁常数例外)

9、是否消退了导致结构模糊的连续赋值?(如a=(9、b=d+c)Y通过是否每个return前都要有日志记录?Y通过是否有冗余推断语句?(如:if(b)returntrue;elsereturnfalse;)是否把方法中的重复代码抽象成私有函数?代码检查3.1静态测试技术概述代码检查常见错误表走查走查与代码审查基本相同,其过程分为两步:1.把材料先发给走查小组的每个成员,仔细讨论程序,然后开会;2.开会的程序与代码审查不同,不是简洁的读程序和对比错误检查表进行检查,而是让与会者充当计算机,即首先由测试组成员为所测程序预备一批有代表性的测试用例,提交给走查小组,走查小组开会扮演计算机角色,让测试用例沿

10、程序规律运行一遍,随时记录程序的跟踪10、,供分析和争论用。代码检查3.1静态测试技术概述多次拷贝字符串:测试所不能发觉的一个错误是生成不行变(immutab对象的多份拷贝。不行变对象是不行转变的,因此不需要拷贝它。最常用的不行变对象是String。假如你必需转变一个String对象的内容,你应当使用StringBUffer。下面的代码可以正常工作:Strings=newString(Texthere);但是,这段代码性能差,而且没有必要这么简单。可以用以下的方式来重写上面的代码:Stringtemp=Texthere;Strings=newString(temp);但是,这段代码包含额外的S

11、tringo更好的代11、码为:Strings=Texthere;代码检查3.1静态测试技术概述Java代码的走查与审查中常见错误:没有克隆(Clone)返回的对象:封装(encapsulation)是面对对象编程的重要概念。但是Java为打破这种封装供应了便利Java允许返回私有数据的引用(reference)。代码检查3.1静态测试技术概述JaVa代码的走查与审查中常见错误:检查new操作的结果是否为nullJava编程新手有时候会检查new操作的结果是否为null。可能的检查代码为:检查虽然没有错误,但却没有必要。CC+程序员在开头写JaVa程序的时候经常会这么做,这是由于检查CC+中m

12、alloc(12、)的返回结果是必要的,不这样做就可能产生错误。但在JaVa中,new操作不允许返回null,假如真的返回null,很可能是虚拟机崩溃了,这时候即便检查返回结果也是无济于事。代码检查3.1静态测试技术概述Java代码的走查与审查中常见错误:用二替代equals在JaVa中,有两种方式检查两个数据是否相等:通过使用=操作符,或者使用全部对象都实现的equals方法。原子类型(int,float,Char等)不是对象,因此他们只能使用二操作符,如下所示:对象更简单些,二操作符检查两个引用是否指向同一个对象,而equals方法则实现更特地的相等性检查。代码检查3.1静态测试技术概述J

13、ava代码的13、走查与审查中常见错误:没有正的确现equals,hashCode,或者clone等方法:方法equals,hashCode,和CIOne是由java.IangQbject供应的缺省实现。但是,这些缺省实现在大部分时候毫无用处,因此很多类掩盖其中的若干个方法以供应更有用的功能。而当继承一个掩盖了若干个这些方法的父类时,子类通常也需要掩盖这些方法。代码检查3.1静态测试技术概述Java代码的走查与审查中常见错误:通过代码检查法可以获得软件组成的重要基本因素,例如变量标识符、过程标识符、常量等,组合这些基本因素就可以得到软件的基本信息,包括:标号交叉引用表,变量交叉引用表,子程序、

14、宏和函数表,等14、价表,常数表。通过这些软件的基本信息可以实现以下功能:L直接从表中查出说明和使用错误,如循环层次表、标号交叉引用表和变量交叉引用表;2.为用户供应帮助信息,如子程序、宏和函数表、等价表和常数表;3.用来做错误猜测和程序简单度的计算,如操作符合操作数表等。代码检查3.1静态测试技术概述代码检查常用检查项代码检查项目包括检查变量的交叉引用表,检查标号的交叉引用表,检查子程序、宏和函数表,等价性检查,常量检查,标准检查,风格检查,比较掌握流,选择、激活路径,对比程序说明,充分文档等。代码检查3.1静态测试技术概述代码检查常用检查项3.1静态测试技术概述检查变量的交叉引用表,重点检

15、查未说明变15、量和违反了类型规定的变量,还要对比源程序,逐个检查变量的引用、变量的使用序列、临时变量在某条路径上的重写状况,局部变量、全局变量与特权变量的使用;检查标号的交叉引用表,验证全部标号的正确性,检查全部标号的命名是否正确,转向指定位置的标号是否正确;检查子程序、宏和函数表,调用每次调用和所调用位置是否正确,确定每次调用的子程序、宏和函数是否存在,检验调用序列中调用方式与参数挨次、个数、类型上的全都性;等价性检查,检查全部等价变量类型的全都性,解释所包含的类型差异;标准检查,用标准检查工具软件或手工检查程序中违反标准的问题;风格检查,检查发觉程序在设计风格方面的问题;代码检查常用检查

16、项比较掌握流,比16、较由程序员设计的掌握流图和由程序生成的实际掌握流图,查找和解释每个差异,修改文档并修正错误;选择、激活路径,在程序员设计的掌握流图上选择路径,再到实际掌握流图上激活这条路径,假如选择的路径在实际掌握流图上不能被激活,则源程序可能存在错误;对比程序说明,阅读程序源代码,逐行进行分析思索,比较实际的代码和期望的代码,从它们的差异中发觉程序的错误和问题;充分文档,代码检查的文档是一种过渡性文档,不是公开的正式文档,通过编写文档,也是对程序的一种下意识的检查和测试,可以关心程序员发觉更多的错误,管理部门也可以通过检查文档,了解模块质量、完全性、测试方法和程序员力量。静态结构分析静

17、态结构分析主要是以图的17、形式表现程序的内部结构,供测试人员对程序结构进行分析。静态结构分析是一种对代码机械性的、程式化的特性进行分析的方法。常用的关系图主要有函数调用关系图和模块掌握流图。函数调用关系图函数调用关系图列出全部函数,用连线表示调用关系,通过应用程序各函数之间的调用关系展现了系统的结构,利用函数调用关系图可以检查函数的调用关系是否正确,是否存在孤立的函数而没有被调用,明确函数被调用的频繁度,对调用频繁的函数可以重点检查。通过查看函数调用关系图,可以发觉系统是否存在结构缺陷,发觉哪些函数是重要的,哪些是次要的,需要使用什么级别的掩盖要求等;模块掌握流图模块掌握流图是由很多节点和连

18、接节点的边组成的图形,其中每18、个节点代表一条或多条语句,边表示掌握流向,模块掌握流图可以直观的反映出一个函数的内部结构,通过检查这些模块掌握流图可以很快的发觉软件错误与缺陷。模块掌握流图符号:基本结构图:类型和单元分析为了强化在源程序中数据类型的检查,在程序设计语言中扩展了一些新的数据类型,例如仅能在数组中使用的下标类型和在循环语句中当作掌握变量使用的计数器类型,这样就可以静态预处理程序,分析程序中的类型错误。引用分析在静态错误分析中,最广泛使用的技术就是发觉引用特别。假如沿着程序的掌握路径,变量在赋值以前被引用,或变量在赋值以后未被引用,这时就发生引用特别。为了检测引用特别,需要检查通过

19、程序的每一条路径。通常采纳类似深度19、优先的方法遍历程序流程图的每一条路径,也可以建立引用特别的探测工具,这类工具包含两个表:定义表和未引用表。每张表都包含一组变量表。未引用表包含已被赋值但未必引用的一些变量。当扫描达到一个出度大于1的节点V时,深度优先探测算法要求先检查最左分支的那部分程序流图,然后再检查其他分支。在最左分支检查完之前,应把定义表和未引用表的当前内容用一个栈临时存储起来,当最左分支检查完之后,算法掌握返回到节点V,从栈中恢复该节点的定义表和未引用表的旧的副表,然后再去遍历该节点的下一个分支,这个过程要连续到全部分支检查完为止。表达式分析对表达式进行分析,以发觉和订正在表达式

20、中消失的错误,包括:在表达式中不正确的使20、用括号造成的错误;数组下标越界造成的错误;除数为零造成的错误;对负数开平方,或者对求正切造成的错误。最简单的一类表达式分析是对浮点数计算造成的误差的检查。由于使用二进制数不能精确的表示十进制浮点数,经常使计算结果出乎意料o接口分析接口分析是程序的静态错误分析和设计分析共同讨论的问题。接口全都性的设计可以分析检查模块之间接口的全都性和外部数据库之间接口的全都性。程序关于接口的静态错误分析检查过程与实参在类型、函数过程接口之间的全都性,因此要检查形参加实参在类型、数量、维数、挨次、使用上的全都性;检查全局变量和公共数据区在使用上的全都性。Eg程序:猜数

21、字嬉戏Eg程序:猜数字嬉戏从该函数调用21、关系图中,可以得到以下信息:函数之间的调用关系符合设计规格说明书的要求;不存在递归调用;调用层次最深为4层;不存在独立的和没有被调用的函数;比较重要的函数有Validate(),compareTwoStr(),VaIidateStr()等。动态测试技术概述动态测试是软件测试中使用最为普遍的方法,通过运行程序发觉错误,通过观看代码运行过程来猎取系统行为、变量实时结果、内存、堆栈、线程以及测试掩盖率等各方面的信息,从而推断系统是否存在问题,或者通过有效的测试用例、对应的输入输出关系来分析被测程序的运行状况,从中发觉缺陷.主动测试与被动测试在软件测试中,比

22、较常见的是主动测试方法,测试人员主动向被测试22、对象发送恳求,或借助数据、大事驱动被测试对象的行为,来验证被测试对象的反应或输出结果。在主动测试中,测试人员和被测试对象之间发生直接相互作用,而且被测试对象完全受测试人员的掌握,被测试对象处于测试状态,而不是实际工作状态。由于主动测试中被测试对象受人为因素影响较大,而且一般是在测试环境中进行,而非软件产品的实际运行环境,所以主动测试不适应产品的在线测试。为了解决产品在线测试,这就需要用到被动测试。在被动测试方法中,软件产品在实际环境中运行,测试人员被动地监控产品的运行,通过肯定的机制来猎取系统运行的数据,包括输入、输出数据。主动测试与被动测试在主动测试中,测试人员需要设计测试用例、设法输入各种数据;而在被动测试中,系统运行过程中的各种数据自然生成,测试人员不需要设计测试用例,只要设法猎取系统运行的各种数据,但是数据的完整性得不到保证。被动测试的关键是建立监控程序,并通过数据分析把握系统的状态。小结依据测试过程是否在实际应用环境中运行可以将传统的测试技术分为静态测试和动态测试。本章主要介绍了静态测试、动态测试的定义与内容以及静态测试、动态测试的分类及方法。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号