静态测试与动态测试_第1页
静态测试与动态测试_第2页
静态测试与动态测试_第3页
静态测试与动态测试_第4页
静态测试与动态测试_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1 广州大学华软软件学院软件工程系 软件测试技术(SS0004)2021-12-9Chapter 03 静态测试与动态测试静态测试与动态测试(Static Testing And dynamic Testing)軟件測試技術軟件測試技術(Software testing technology)(Software testing technology)2012-20132012-2013學年第學年第2 2學期學期林平荣林平荣2 广州大学华软软件学院软件工程系 软件测试技术(SS0004)主要内容主要内容n1 1静态测试与动态测试的含义静态测试与动态测试的含义n2 2代码检查代码检查n3 3静态结

2、构分析静态结构分析n4 4程序插桩程序插桩n5 5逻辑覆盖逻辑覆盖3 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 白盒测试可分为静态测试和动态测试。白盒测试可分为静态测试和动态测试。 静态测试静态测试是一种不通过执行程序而进行测试的技是一种不通过执行程序而进行测试的技术,其关键功能是检查软件的表示和描述是否一致,术,其关键功能是检查软件的表示和描述是否一致,没有冲突或者没有歧义。侧重于纠正软件系统在描述没有冲突或者没有歧义。侧重于纠正软件系统在描述、表示和规格上的错误,是任何进一步测试的前提。、表示和规格上的错误,是任何进一步测试的前提。 动态测试动态测试需要软件执行,当软件

3、系统在模拟或真实需要软件执行,当软件系统在模拟或真实环境中执行之前、之中和之后,对软件系统行为的分环境中执行之前、之中和之后,对软件系统行为的分析是动态测试的主要特点。它显示一个系统在检查状析是动态测试的主要特点。它显示一个系统在检查状态下是正确还是不正确。态下是正确还是不正确。静态测试与动态测试的含义静态测试与动态测试的含义4 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 最常见的静态测试是找出源代码的语法错误,可最常见的静态测试是找出源代码的语法错误,可由编译器来完成,因编译器可逐行分析检验程序的由编译器来完成,因编译器可逐行分析检验程序的语法,找出错误并报告。语法,找出错

4、误并报告。 除此之外,测试人员须采用人工方法来检验程序除此之外,测试人员须采用人工方法来检验程序,有些地方存在非语法方面错误,只能通过人工检,有些地方存在非语法方面错误,只能通过人工检测的方法来判断。测的方法来判断。 人工检测的方法主要有人工检测的方法主要有代码检查法、静态结构分代码检查法、静态结构分析法析法等。等。3.1 静态测试静态测试5 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n代码检查法主要是通过桌面检查,代码审查和走查代码检查法主要是通过桌面检查,代码审查和走查方式,对以下内容进行检查:方式,对以下内容进行检查: (1) (1) 检查代码和设计的一致性;检查代码和

5、设计的一致性; (2) (2) 代码的可读性及对软件设计标准的遵循情况;代码的可读性及对软件设计标准的遵循情况; (3) (3) 代码逻辑表达的正确性;代码逻辑表达的正确性; (4) (4) 代码结构的合理性;代码结构的合理性; (5) (5) 程序中不安全、不明确和模糊的部分;程序中不安全、不明确和模糊的部分; (6) (6) 编程风格方面的问题等。编程风格方面的问题等。1 代码检查法代码检查法6 广州大学华软软件学院软件工程系 软件测试技术(SS0004)(1)(1)桌面检查桌面检查(2)(2)代码审查代码审查(3)(3)走查走查n代码检查方式代码检查方式7 广州大学华软软件学院软件工程系

6、 软件测试技术(SS0004)n代码会审是由一组人通过阅读、讨论和争代码会审是由一组人通过阅读、讨论和争议对程序进行静态分析的过程。议对程序进行静态分析的过程。n代码审查小组成员:代码审查小组成员:组长:能力较强的程序员组长:能力较强的程序员待审程序的设计者或程序员待审程序的设计者或程序员测试专家测试专家8 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n代码审查时应注意问题:代码审查时应注意问题:提出的建议应针对程序本身,而不应针对程提出的建议应针对程序本身,而不应针对程序员。序员。程序员对整个审查过程采取积极和建设性的程序员对整个审查过程采取积极和建设性的态度。态度。9 广州

7、大学华软软件学院软件工程系 软件测试技术(SS0004)n代码走查代码走查(code walkthrough)(code walkthrough) 走查是以小组为单元进行代码阅读的,同样走查是以小组为单元进行代码阅读的,同样也是一系列规程和错误检查技术的集合。也是一系列规程和错误检查技术的集合。n人员组成人员组成一位经验丰富的程序员一位经验丰富的程序员一位程序设计语言专家一位程序设计语言专家一位程序员新手一位程序员新手一位其他不同项目的人员一位其他不同项目的人员一位该软件编程小组的成员一位该软件编程小组的成员10 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n必须修改的问题必须

8、修改的问题(3)(3)n程序没有注释程序没有注释n程序程序= =代码代码+ +注释注释n注释语句注释语句/ /总代码行数总代码行数=1/51/4=1/51/4n子函数子函数maxmax没有返回值类型没有返回值类型n精度丢失问题精度丢失问题n建议修改的问题建议修改的问题(3)(3)nmainmain函数没有返回值类型和参函数没有返回值类型和参数表数表( (默认为默认为void main void main (void)(void)n1 1行代码只定义行代码只定义1 1个变量。个变量。n程序适当加一些空行程序适当加一些空行n程序中存在未使用的变量程序中存在未使用的变量#includemax(flo

9、at x,float y) float z; z=xy?x:y; return(z);main() float a,b; int c,d; scanf(%f,%f,&a,&b); c=max(a,b); printf(Max is %dn,c);11 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n测试人员通过使用测试工具分析程序源代码的系统测试人员通过使用测试工具分析程序源代码的系统结构、数据结构、数据接口、内部控制逻辑等内部结结构、数据结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件构,生成函数调用关系图、模块控制流图、内部文

10、件调用关系图等各种图形、图表,清晰地标识整个软件调用关系图等各种图形、图表,清晰地标识整个软件的组成结构。的组成结构。n通过分析上述图表,包括控制流分析、数据据流分通过分析上述图表,包括控制流分析、数据据流分析、接口分析、表达式分析等,使其便于阅读与理解析、接口分析、表达式分析等,使其便于阅读与理解,然后可以通过分析这些图表,检查软件是否存在缺,然后可以通过分析这些图表,检查软件是否存在缺陷或错误。陷或错误。 2 静态结构分析法静态结构分析法12 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 静态结构分析法通常采用以下方法进行源程序的静态结构分析法通常采用以下方法进行源程序的静

11、态分析:静态分析:n (1) (1) 通过各种图表对源程序进行静态分析通过各种图表对源程序进行静态分析 常用的各种引用表主要有:常用的各种引用表主要有: 标号交叉引用表标号交叉引用表 变量交叉引用表变量交叉引用表 子程序子程序( (宏、函数宏、函数) )引用表引用表 等价表等价表 常数表常数表13 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 函数调用关系图:列出所有函数,用连线表函数调用关系图:列出所有函数,用连线表示调用关系,通过应用程序各函数之间的调用关系示调用关系,通过应用程序各函数之间的调用关系展示系统的结构。展示系统的结构。 模块控制流图:由许多结点和连接结点的边模

12、块控制流图:由许多结点和连接结点的边组成的图形,其中每个结点代表一条或多条语句,组成的图形,其中每个结点代表一条或多条语句,边表示控制流向,可直观反映出一个函数的内部结边表示控制流向,可直观反映出一个函数的内部结构。构。常用的关系图、控制流图常用的关系图、控制流图14 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n静态错误分析主要用于确定在源程序中是否有某类静态错误分析主要用于确定在源程序中是否有某类错误或错误或“危险危险”结构。结构。 类型和单位分析类型和单位分析 引用分析引用分析 表达式分析表达式分析 接口分析接口分析(2) (2) 错误静态分析错误静态分析15 广州大学华

13、软软件学院软件工程系 软件测试技术(SS0004) 在软件动态测试中,程序插桩是一种基本的在软件动态测试中,程序插桩是一种基本的测试手段,有着广泛的应用。测试手段,有着广泛的应用。 程序插桩方法是借助往被测程序中插入操作程序插桩方法是借助往被测程序中插入操作,来实现测试目的的方法,即向源程序中添加一,来实现测试目的的方法,即向源程序中添加一些语句,实现对程序语句的执行、变量的变化等些语句,实现对程序语句的执行、变量的变化等情况进行检查。情况进行检查。 3.2 程序插桩技术程序插桩技术16 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 想了解一个程序在某次运行中所有可执行想了解一

14、个程序在某次运行中所有可执行语句被覆盖的情况,或是每个语句的实际执行语句被覆盖的情况,或是每个语句的实际执行次数,最好的办法是利用插桩技术。次数,最好的办法是利用插桩技术。 以计算整数以计算整数X X和整数和整数Y Y的最大公约数程序为的最大公约数程序为例,说明插桩方法的要点。图例,说明插桩方法的要点。图3-13-1给出了这一给出了这一程序的流程图。程序的流程图。 17 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 入口 C(1)=C(1)+1 Q=X R=Y C(2)=C(2)+1 C(6)=C(6)+1 QR C(4)=C(4)+1 C(3)=C(3)+1 QR 出口 C(

15、5)=C(5)+1 Q=QR R=RQ 图图3-1 3-1 插桩后求最大公约数程序的流程图插桩后求最大公约数程序的流程图 18 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n设计插桩程序时需要考虑的问题包括:设计插桩程序时需要考虑的问题包括: 探测哪些信息;探测哪些信息; 在程序的什么部位设置探测点在程序的什么部位设置探测点; ; 需要设置多少个探测点;需要设置多少个探测点; 程序中特定部位插入某些用以判断变量特性的语句。程序中特定部位插入某些用以判断变量特性的语句。如如.NET.NET里的插入断言语句:里的插入断言语句: Debug.Assert(Debug.Assert(t

16、his.textBox3.Text.Length0,“this.textBox3.Text.Length0,“输入输入值为空值为空! !) ); ; int a = int a = Int32.Parse(Int32.Parse(this.textBox3.Textthis.textBox3.Text) );19 广州大学华软软件学院软件工程系 软件测试技术(SS0004) 逻辑覆盖是白盒测试中动态测试技术主要方逻辑覆盖是白盒测试中动态测试技术主要方法之一,是以程序内部的逻辑结构为基础的测试法之一,是以程序内部的逻辑结构为基础的测试技术,通过对程序逻辑结构的遍历实现程序的覆技术,通过对程序逻辑

17、结构的遍历实现程序的覆盖,要求测试人员对程序的逻辑结构有清楚的了盖,要求测试人员对程序的逻辑结构有清楚的了解。解。3.3 逻辑覆盖逻辑覆盖20 广州大学华软软件学院软件工程系 软件测试技术(SS0004)逻辑覆盖原则逻辑覆盖原则保证一个模块中的左右独立路径至少被使用一次保证一个模块中的左右独立路径至少被使用一次对所有逻辑值均需测试对所有逻辑值均需测试truetrue和和falsefalse在上下边界及可操作范围内运行所有循环在上下边界及可操作范围内运行所有循环检查内部数据结构以确保其有效性检查内部数据结构以确保其有效性21 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n从覆盖源

18、程序语句的详细程度分析,逻辑覆盖标从覆盖源程序语句的详细程度分析,逻辑覆盖标准有准有语句覆盖、判定覆盖、条件覆盖、判定语句覆盖、判定覆盖、条件覆盖、判定/ /条件条件覆盖、条件组合覆盖覆盖、条件组合覆盖。n为便于理解,根据下面所示的为便于理解,根据下面所示的2 2个被测试程序个被测试程序( (用用C C语言书写语言书写) ),分别讨论几种常用的覆盖技术。,分别讨论几种常用的覆盖技术。22 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n程序程序1 1如下:如下:Void js(float A,float B,float X) if( A1&B=0) X=X/A; if(A

19、=2|X1) X=X+1; 23 广州大学华软软件学院软件工程系 软件测试技术(SS0004)图图3-3 3-3 程序程序1 1流程图流程图24 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n程序程序2 2如下:如下: void DoWork(int x,int y,int z) int k=0,j=0; if(x3)&(z5) j=x*y+10; 语句块语句块2 j=j%3; 语句块语句块3 25 广州大学华软软件学院软件工程系 软件测试技术(SS0004)图图3-4 3-4 程序程序2 2流程图流程图26 广州大学华软软件学院软件工程系 软件测试技术(SS0004)

20、n1 1语句覆盖语句覆盖 语句覆盖使程序中每个语句至少都能被执行一次。语句覆盖使程序中每个语句至少都能被执行一次。 如程序如程序1 1中,为使程序中每个语句至少执行一次中,为使程序中每个语句至少执行一次,只需设计一个能通过路径,只需设计一个能通过路径a-c-ea-c-e的数据就可以了的数据就可以了,例如选择输入数据为:,例如选择输入数据为:A=2A=2,B=0B=0,X=3X=3就可达到就可达到“语句覆盖语句覆盖”标准。标准。 在程序在程序2 2中,如测试用例输入为:中,如测试用例输入为:x=4x=4、y=5y=5、z=5 z=5 程序执行的路径是:程序执行的路径是:a-b-da-b-d。 2

21、7 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n2 2 判定覆盖判定覆盖 比语句覆盖稍强的覆盖标准是判定覆盖。比语句覆盖稍强的覆盖标准是判定覆盖。 设计若干测试用例,运行被测程序,使得程序设计若干测试用例,运行被测程序,使得程序中每个判断的中每个判断的取真分支取真分支和和取假分支取假分支至少经历一次至少经历一次,即判断的真假值均曾被满足。,即判断的真假值均曾被满足。 判定覆盖又称为分支覆盖。判定覆盖又称为分支覆盖。28 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n3 3 条件覆盖条件覆盖 在设计程序中,一个判定语句是由多个条件组在设计程序中,一个判定语句是由

22、多个条件组合而成的复合判定。合而成的复合判定。 条件覆盖的含义是:构造一组测试用例,使得条件覆盖的含义是:构造一组测试用例,使得每一判定语句中每个逻辑条件的可能值至少满足一每一判定语句中每个逻辑条件的可能值至少满足一次。次。29 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n4 4条件判定组合覆盖条件判定组合覆盖 条件判定组合覆盖的含义是:设计足够的测试条件判定组合覆盖的含义是:设计足够的测试用例,使得判定中每个条件的所有可能用例,使得判定中每个条件的所有可能( (真真/ /假假) )至至少出现一次,并且每个判定本身的判定结果少出现一次,并且每个判定本身的判定结果( (真真/ /假假) )也至少出现一次。也至少出现一次。30 广州大学华软软件学院软件工程系 软件测试技术(SS0004)n5

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论