第07章:实现与测试_第1页
第07章:实现与测试_第2页
第07章:实现与测试_第3页
第07章:实现与测试_第4页
第07章:实现与测试_第5页
已阅读5页,还剩174页未读 继续免费阅读

下载本文档

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

文档简介

1、第第7 7章章 实现与测试实现与测试7.1 7.1 编码编码n程序设计语言的分类程序设计语言的分类机器语言机器语言汇编语言汇编语言高级语言高级语言按应用角度按应用角度按内在特点按内在特点按时间发展按时间发展(1 1)基础语言)基础语言 BASIC,FORTRAN,COBOL,ALGOL BASIC,FORTRAN,COBOL,ALGOL (2 2)结构化语言)结构化语言 ALGOL,PL/1,PASCAL,C,AdaALGOL,PL/1,PASCAL,C,Ada(3 3)专用语言)专用语言 APL,BLISS,FORTH,LISP,PROLOGAPL,BLISS,FORTH,LISP,PROL

2、OG(1 1)系统实现语言)系统实现语言 : C : C (2 2)静态高级语言)静态高级语言 : COBOL,FORTRAN : COBOL,FORTRAN (3 3)块结构高级语言)块结构高级语言 :ALGOL,PASCAL:ALGOL,PASCAL(4 4)动态高级语言)动态高级语言 : : 为特殊应用设计为特殊应用设计 (1 1)第一代语言()第一代语言(5050年代末前)年代末前)(2 2)第二代语言()第二代语言(5050年代未)年代未)(3 3)第三代语言()第三代语言(6060年代中)年代中) (4 4)第四代语言()第四代语言(7070年代中)年代中) 7.1.1 7.1.1

3、 选择一种程序设计语言选择一种程序设计语言n 选择编程语言的实用标准选择编程语言的实用标准用户的要求用户的要求可用的编译程序可用的编译程序可以得到的软件工具可以得到的软件工具工程规模工程规模程序员的知识程序员的知识软件可移植性要求软件可移植性要求软件的应用领域软件的应用领域7.1.1 7.1.1 选择一种程序设计语言选择一种程序设计语言7.1.2 7.1.2 程序设计风格程序设计风格 程序实际上也是一种供人阅读的文程序实际上也是一种供人阅读的文章,应该使程序具有良好的风格。章,应该使程序具有良好的风格。n 源程序文档化源程序文档化n 数据说明数据说明n 语句结构语句结构n 输入输出方法输入输出

4、方法n 源程序文档化源程序文档化标识符的命名标识符的命名注释注释程序的视觉组织程序的视觉组织7.1.2 7.1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化标识符的命名标识符的命名p符号名即标识符,包括符号名即标识符,包括模块名模块名、变变量名量名、常量名常量名、标号名标号名、子程序名子程序名、数据区名数据区名以及以及缓冲区名缓冲区名等等; ;p名字应能反映它所代表的实际东西,名字应能反映它所代表的实际东西,应有一定实际意义应有一定实际意义。例如,表示次。例如,表示次数的量用数的量用TimesTimes,表示总量的用,表示总量的用TotalTotal,表示平均值的用,表示平均值的用

5、AverageAverage,表示和的量用表示和的量用SumSum等等; ;7.1.2 7.1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化标识符的命名标识符的命名p名字不是越长越好名字不是越长越好,应当选择精炼,应当选择精炼的意义明确的名字的意义明确的名字, ,必要时可使用缩必要时可使用缩写名字写名字,缩写规则要一致,并且要,缩写规则要一致,并且要给每一个名字加注释给每一个名字加注释。同时,在一。同时,在一个程序中,一个变量只应用于一种个程序中,一个变量只应用于一种用途用途; ;7.1.2 7.1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化程序的注释程序的注释p注释

6、是程序员与日后的程序读者之注释是程序员与日后的程序读者之间通信的重要手段间通信的重要手段; ;p注释决不是可有可无的注释决不是可有可无的, ,一些正规的一些正规的程序文本中,注释行的数量占到整程序文本中,注释行的数量占到整个源程序的个源程序的1 13 3到到1 12 2,甚至更多,甚至更多; ;p注释分为注释分为序言性注释序言性注释和和功能性注释功能性注释; ;7.1.2 7.1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化程序的注释程序的注释p序言性注释序言性注释 通常置于每个程序通常置于每个程序模块的开头部分模块的开头部分,给出程序的整体说明。给出程序的整体说明。 包括包括:

7、: 程序标题程序标题 有关本模块有关本模块功能和目的功能和目的; ; 主要算法主要算法 接口说明接口说明:包括调用形式,参数描述,:包括调用形式,参数描述,子程序清单;子程序清单;7.1.2 7.1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化程序的注释程序的注释p序言性注释序言性注释 有关数据描述有关数据描述:重要的变量及其用途,:重要的变量及其用途,约束或限制条件,以及其它有关信息;约束或限制条件,以及其它有关信息; 模块位置模块位置:在哪一个源文件中,或隶:在哪一个源文件中,或隶属于哪一个软件包;属于哪一个软件包; 开发简历开发简历:模块设计者,复审者,复:模块设计者,复审者

8、,复审日期,修改日期及有关说明等审日期,修改日期及有关说明等; ;7.1.2 7.1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化程序的注释程序的注释p功能性注释功能性注释 嵌在源程序体中嵌在源程序体中,用以描述其后的语,用以描述其后的语句或程序段是在做什么工作,或是执行句或程序段是在做什么工作,或是执行了下面的语句会怎么样了下面的语句会怎么样, ,而不要解释下面而不要解释下面怎么做。怎么做。 要点:要点: 描述一段程序描述一段程序,而不是每一个语句;,而不是每一个语句; 用缩进和空行用缩进和空行,使程序与注释容易区,使程序与注释容易区别;别; 注释注释要正确要正确7.1.2 7.

9、1.2 程序设计风格程序设计风格n 源程序文档化源程序文档化视觉组织视觉组织p恰当地恰当地利用空格利用空格,突出运算的优先性突出运算的优先性,避免发生运算的错误。避免发生运算的错误。如如:将表达式:将表达式( (A A17)17)ANDNOTANDNOT( (B B49)49)ORCORC写成写成( (A A17) 17) AND NOTAND NOT ( (B B49) 49) OR COR Cp自然的自然的程序段之间可用空行隔开程序段之间可用空行隔开;p向右缩进,使程序层次关系清晰向右缩进,使程序层次关系清晰;p选择语句选择语句和和循环语句循环语句,使用向右做,使用向右做阶梯阶梯式移行式移

10、行,使程序的,使程序的逻辑结构更加清晰逻辑结构更加清晰;7.1.2 7.1.2 程序设计风格程序设计风格7.1.2 7.1.2 程序设计风格程序设计风格 程序实际上也是一种供人阅读的文程序实际上也是一种供人阅读的文章,应该使程序具有良好的风格。章,应该使程序具有良好的风格。n 源程序文档化源程序文档化n 数据说明数据说明n 语句结构语句结构n 输入输出方法输入输出方法n 数据说明数据说明 在设计阶段已经确定了数据结构的组在设计阶段已经确定了数据结构的组织及其复杂性,在编写程序时需要注意数织及其复杂性,在编写程序时需要注意数据说明的风格。据说明的风格。 为了使程序中数据说明更易于理解和维为了使程

11、序中数据说明更易于理解和维护,必须注意以下几点护,必须注意以下几点: :数据说明的次序应当规范化数据说明的次序应当规范化说明语句中变量安排有序化说明语句中变量安排有序化使用注释说明复杂数据结构使用注释说明复杂数据结构7.1.2 7.1.2 程序设计风格程序设计风格n 数据说明数据说明 数据说明的次序应当规范化数据说明的次序应当规范化 次序规范化,使数据属性容易查找,次序规范化,使数据属性容易查找,利于测试、排错和维护。利于测试、排错和维护。p数据说明次序数据说明次序 常量说明常量说明 简单变量类型说明简单变量类型说明 数组说明数组说明 公用数据块说明公用数据块说明 所有的文件说明所有的文件说明

12、7.1.2 7.1.2 程序设计风格程序设计风格n 数据说明数据说明 数据说明的次序应当规范化数据说明的次序应当规范化 p类型说明类型说明 整型量说明整型量说明 实型量说明实型量说明 字符量说明字符量说明 逻辑量说明逻辑量说明7.1.2 7.1.2 程序设计风格程序设计风格n 数据说明数据说明 说明语句中变量安排有序化说明语句中变量安排有序化 当当多个变量名多个变量名在一个说明语句中说明在一个说明语句中说明时,应当对这些变量时,应当对这些变量按字母的顺序排列按字母的顺序排列。 例如例如: : integer size, length, width, cost, price 改写成改写成 int

13、eger cost, length, price , size, width 7.1.2 7.1.2 程序设计风格程序设计风格n 数据说明数据说明 使用注释说明复杂数据结构使用注释说明复杂数据结构 设计了一个复杂的数据结构,使用注设计了一个复杂的数据结构,使用注释来说明在程序实现时这个数据结构的释来说明在程序实现时这个数据结构的固有特点。固有特点。7.1.2 7.1.2 程序设计风格程序设计风格7.1.2 7.1.2 程序设计风格程序设计风格 程序实际上也是一种供人阅读的文程序实际上也是一种供人阅读的文章,应该使程序具有良好的风格。章,应该使程序具有良好的风格。n 源程序文档化源程序文档化n

14、数据说明数据说明n 语句结构语句结构n 输入输出方法输入输出方法n 语句结构语句结构 在设计阶段确定了软件的逻辑流结在设计阶段确定了软件的逻辑流结构,但构造单个语句则是编码阶段的任务。构,但构造单个语句则是编码阶段的任务。语句构造力求简单、直接,不能为了片面语句构造力求简单、直接,不能为了片面追求效率而使语句复杂化追求效率而使语句复杂化。构造原则构造原则1.1.在一行内只写一条语句在一行内只写一条语句在一行内只写一条语句,并且采取在一行内只写一条语句,并且采取适当的移行格式,使程序的逻辑和功能适当的移行格式,使程序的逻辑和功能变得更加明确。变得更加明确。7.1.2 7.1.2 程序设计风格程序

15、设计风格n 语句结构语句结构 构造原则构造原则1.1.在一在一行内只写一条语句行内只写一条语句例如:例如:FOR I:=1 TO N1 DO BEGIN T:=I;FOR J:=I1 TO N DO IF AJATTHEN T:=J;IF TI THEN BEGIN WORK:=AT;AT:=AIAI:=WORK;END END;由于一行中包括了多个语句,由于一行中包括了多个语句,掩盖了程掩盖了程序的循环结构和条件结构序的循环结构和条件结构,使其可读性,使其可读性很差。很差。7.1.2 7.1.2 程序设计风格程序设计风格改进布局改进布局: :FOR I:=1 TO N-1 DO BEGIN

16、T:=I; FOR J:=I1 TO N DO IF AJAT THEN T:=J; IF TI THEN BEGIN WORK:=AT; AT:=AI; AI:=WORK; ENDEND;7.1.2 7.1.2 程序设计风格程序设计风格n 语句结构语句结构 构造原则构造原则2.2.程序程序编写首先应当考虑清晰性编写首先应当考虑清晰性 程序编写首先应当考虑清晰性,程序编写首先应当考虑清晰性,不不要刻意追求技巧性要刻意追求技巧性,使程序编写得过,使程序编写得过于紧凑。于紧凑。例如:例如:AI=AI+ATAI=AI+AT; AT=AI-ATAT=AI-AT; AI=AI-ATAI=AI-AT; 程

17、序功能是交换程序功能是交换AIAI和和ATAT中的内容,中的内容,目的是目的是为了节省一个工作单元为了节省一个工作单元。 更改程序为:更改程序为: WORK = ATWORK = AT; AT = AIAT = AI; AI = WORK;AI = WORK;7.1.2 7.1.2 程序设计风格程序设计风格n 语句结构语句结构 构造原则构造原则3.3.程序程序要能直截表明用意要能直截表明用意 程序编写得要简单,写清楚,直程序编写得要简单,写清楚,直截了当地说明程序员的用意。截了当地说明程序员的用意。 例如:例如: for ( for ( i i = 1; = 1; i i = = n n; ;

18、 i i+ )+ ) for ( for ( j j = 1; = 1; j j = = n n; ; j j+ )+ ) V V i ij j ( ( i ij j ) ) * * ( ( j ji i ) )7.1.2 7.1.2 程序设计风格程序设计风格n 语句结构语句结构 构造原则构造原则3.3.程程序要能直截表明用意序要能直截表明用意分析程序:分析程序: 当当 ij时时, j / i = 0 得到的数组得到的数组 当当ij时时 Vij = ( ij ) * ( ji ) = 0 当当ij时时 Vij = ( ij ) * ( ji ) = 1 V 是一个单位矩阵。是一个单位矩阵。7.

19、1.2 7.1.2 程序设计风格程序设计风格n 语句结构语句结构 构造原则构造原则3.3.程程序要能直截表明用意序要能直截表明用意程序改写成:程序改写成: for ( i1; i = n; i+ ) for ( j1; j = a ) if ( char = z ) cout “This is a letter。”; else cout = 0 & char 1)X=X/AX=X+1TTFFbcea1start234567(A1) and (B=0)endsd覆盖分支覆盖分支判定条件判定条件测试用例测试用例语句覆盖是很弱的逻辑覆盖标准语句覆盖是很弱的逻辑覆盖标准sacbedsacbed

20、I:(2, 0, 4)I:(2, 0, 4)真真 真真n 逻辑覆盖逻辑覆盖判定覆判定覆盖盖 7.3.2 7.3.2 白盒测试白盒测试(A=2) or (X1)X=X/AX=X+1TTFFbcea1start234567(A1) and (B=0)endsd 每个判定的每个每个判定的每个真假分支真假分支都都至少执行一次!至少执行一次!判定覆盖比语句的覆盖能力强判定覆盖比语句的覆盖能力强条件取值条件取值 覆盖分支覆盖分支测试用例测试用例sacbedsacbedI:(2, 0, 4)I:(2, 0, 4)真真 真真sabdsabdII:(1, 1, 4)II:(1, 1, 4)假假 假假条件取值条件

21、取值覆盖分支覆盖分支测试用例测试用例sacbdsacbdI:(4, 0, 1)I:(4, 0, 1)真真 假假sabedsabedII:(1, 1, 4)II:(1, 1, 4)假假 真真n 逻辑覆盖逻辑覆盖条件覆条件覆盖盖 7.3.2 7.3.2 白盒测试白盒测试(A=2) or (X1)X=X/AX=X+1TTFFbcea1start234567(A1) and (B=0)endsd每个语句至少执行一次,每个语句至少执行一次,而且判定表达式中的每个而且判定表达式中的每个条件条件可能的取值可能的取值至少执行一次。至少执行一次。第一个条件判断:第一个条件判断:条件条件 A A1 1 或或 A1

22、 A1 条件条件 B B0 0 或或 B0 B0 第二个条件判断:第二个条件判断:条件条件 A A2 2 或或 A2 A2 条件条件 X X1 1 或或 X1X1判定判定1 1取取真真,判定,判定2 2中中X=X/AX=X/A判定判定1 1取取假假,判定,判定2 2中中X=XX=Xn 逻辑覆盖逻辑覆盖条件覆条件覆盖盖 7.3.2 7.3.2 白盒测试白盒测试第一个条件判断:第一个条件判断:条件条件 A A1 1 或或 A1 A1 条件条件 B B0 0 或或 B0 B0 第二个条件判断:第二个条件判断:条件条件 A A2 2 或或 A2 A2 条件条件 X X1 1 或或 X1X1(A1)(A

23、1)(B=0)(B0)(A=2)(A2)(X1)(X1)测试用例测试用例判定判定条件条件覆盖覆盖分支分支II:(1,1,x=1 )II:(1,1,x1 )I:(2,0,x1 )无法取值无法取值判定判定1 1取取真真,判定,判定2 2中中X=X/AX=X/A判定判定1 1取取假假,判定,判定2 2中中X=XX=Xn 逻辑覆盖逻辑覆盖条件覆条件覆盖盖 7.3.2 7.3.2 白盒测试白盒测试(A=2) or (X1)X=X/AX=X+1TTFFbcea1start234567(A1) and (B=0)endsd测试用例测试用例判定条件判定条件覆盖分支覆盖分支I:(2, 0, )I:(2, 0,

24、)II:(1, 1, )II:(1, 1, )(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1)4 41 1sacbdsacbdsabdsabd真真假假真真假假n 逻辑覆盖逻辑覆盖条件覆条件覆盖盖 7.3.2 7.3.2 白盒测试白盒测试(A=2) or (X1)X=X/AX=X+1TTFFbcea1start234567(A1) and (B=0)endsd测试用例测试用例判定条件判定条件覆盖分支覆盖分支(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1)2 21 1I:(3, 1, )I:(3, 1, )II:(1, 0, )II:(1, 0, )sacb

25、dsacbdsabdsabd假假假假假假真真 一般情况下条件覆盖比判一般情况下条件覆盖比判定覆盖要强,但是也有满足定覆盖要强,但是也有满足条件覆盖但不能满足判定覆条件覆盖但不能满足判定覆盖的情况。盖的情况。n 逻辑覆盖逻辑覆盖判定判定/ /条件覆条件覆盖盖 7.3.2 7.3.2 白盒测试白盒测试测试用例测试用例覆盖分支覆盖分支条件取值条件取值I:I:(2, 0, 4)(2, 0, 4)sacbdsacbd真真真真II:II:(1, 1, 1)(1, 1, 1)sabedsabed假假假假 每个每个判定分支和取值条件判定分支和取值条件都都至少执行一次!至少执行一次!第一个条件判断:第一个条件判

26、断:条件条件 A A1 1 或或 A1 A1 条件条件 B B0 0 或或 B0 B0 第二个条件判断:第二个条件判断:条件条件 A A2 2 或或 A2 A2 条件条件 X X1 1 或或 X1X1(A1)(A1)(B=0)(B0)(A=2)(A2)(X1)(X1) 同时满足这两种标准同时满足这两种标准的判定的判定/ /条件覆盖也不会条件覆盖也不会比条件覆盖更强。比条件覆盖更强。n 逻辑覆盖逻辑覆盖条件组合覆条件组合覆盖盖 7.3.2 7.3.2 白盒测试白盒测试 每个判断的所有可能的条每个判断的所有可能的条件件取值组合取值组合至少执行一次!至少执行一次!第一个条件判断:第一个条件判断:条件

27、条件 A A1 1 或或 A1 A1 条件条件 B B0 0 或或 B0 B0 第二个条件判断:第二个条件判断:条件条件 A A2 2 或或 A2 A2 条件条件 X X1 1 或或 X1X1图例中可能有的条件组合图例中可能有的条件组合: :第第1 1个条件个条件: : A A1, B1, B0 0 真真 A A1, B0 1, B0 假假 A1, B A1, B0 0 假假 A1, B0 A1, B0 假假第第2 2个条件个条件: : A A2, X2, X1 1 真真 A A2, X1 2, X1 真真 A2, X A2, X1 1 真真 A2, X1 A2, X1 假假(A1)(A1)(

28、B=0)(B0)I. A=2,B=0,X=4II. A=2,B=1,X=1(A=2)(A2)(X1)(X1)III. A=1,B=0,X=2IV. A=1,B=1,X=1I: sacbedI: sacbedII: sabedII: sabedIII: sabedIII: sabedIV: sabdIV: sabd覆盖路径覆盖路径n 逻辑覆盖逻辑覆盖条件组合覆盖条件组合覆盖 7.3.2 7.3.2 白盒测试白盒测试(A=2) or (X1)X=X/AX=X+1TTFFbcea1start234567(A1) and (B=0)endsd 满足条件组合覆盖标准的测满足条件组合覆盖标准的测试数据,也

29、一定满足判定覆盖、试数据,也一定满足判定覆盖、条件覆盖和判定条件覆盖和判定/ /条件覆盖标准。条件覆盖标准。发现错误发现错误的能力的能力标标 准准含含 义义( (弱弱) )语句覆盖语句覆盖每条每条语语句句至少执行一次至少执行一次判定覆盖判定覆盖每一每一判定判定的每个的每个真假分支真假分支至至少执行一次少执行一次条件覆盖条件覆盖每一判定中的每个每一判定中的每个条件可能条件可能的取值的取值至少各执行一次至少各执行一次判定判定/ /条件覆盖条件覆盖同时满足同时满足判定覆盖判定覆盖和和条件覆条件覆盖盖的要求的要求( (强强) ) 条件组合覆盖条件组合覆盖求出判定中求出判定中所有条件的各种所有条件的各种

30、可能组合可能组合值,每一可能的条值,每一可能的条件组合至少执行一次件组合至少执行一次7.3.2 7.3.2 白盒测试白盒测试n 逻辑覆盖逻辑覆盖点覆盖点覆盖 设计使得程序执行路径至少经过程设计使得程序执行路径至少经过程序控制流图序控制流图CFGCFG的的每个结点一次每个结点一次。点覆盖点覆盖= =语句覆盖语句覆盖边覆盖边覆盖设计使得程序执行路径至少经过流设计使得程序执行路径至少经过流图的图的每条边一次每条边一次。边覆盖边覆盖= =判定覆盖判定覆盖路径覆盖路径覆盖 选取足够多测试用例,使得选取足够多测试用例,使得覆盖覆盖程序中所有可能的路径。程序中所有可能的路径。 7.3.2 7.3.2 白盒测

31、试白盒测试n 控制结构测试控制结构测试 控制结构测试控制结构测试是根据是根据程序的控制结构程序的控制结构设计设计测试数据的技术,常用的有:测试数据的技术,常用的有: 基本路径测试基本路径测试 条件测试条件测试 循环测试循环测试7.3.2 7.3.2 白盒测试白盒测试n 控制结构测试控制结构测试基本路径测试基本路径测试 把覆盖的把覆盖的路径数路径数压缩到一定压缩到一定限度内限度内,程序的每一个可执行语句至少要执行一程序的每一个可执行语句至少要执行一次。次。7.3.2 7.3.2 白盒测试白盒测试n 控制结构测试控制结构测试基本路径测试基本路径测试 第一步:画程序控制流图第一步:画程序控制流图CF

32、G;CFG;7.3.2 7.3.2 白盒测试白盒测试顺序结构顺序结构选择结构选择结构for/while循环结构循环结构do-while循环结构循环结构case多分支结构多分支结构n 控制结构测试控制结构测试基本路径测试基本路径测试 第二步:计算程序控制流图的环路复杂度第二步:计算程序控制流图的环路复杂度; ;第三步:确定线性独立路径的基本集合第三步:确定线性独立路径的基本集合; ;p环路复杂度决定程序中独立路径数量;环路复杂度决定程序中独立路径数量;p独立路径独立路径指至少引入程序的一个指至少引入程序的一个新处理语句新处理语句集合或一个新条件的路径集合或一个新条件的路径。 保证程序中的保证程序

33、中的每条语句至少执行一每条语句至少执行一次次,且每个条件在执行都将,且每个条件在执行都将分别取真、分别取真、假两种值假两种值。第四步:导出测试用例第四步:导出测试用例7.3.2 7.3.2 白盒测试白盒测试控制结构测试控制结构测试- -基本路径测试基本路径测试p环路复杂度环路复杂度=6=6;p基本路径:基本路径:路径路径1 1:1-1-2-102-10- -1212-13-13路径路径2 2:1-2-10-1-2-10-1111-13-13 路径路径3 3:1-1-2-32-3- -1010-11-13-11-13或或 1-2-3-10-12-131-2-3-10-12-13 路径路径4 4:

34、1-2-1-2-3-43-4- -5-85-8-9-2-9-2- 路径路径5 5:1-2-3-4-1-2-3-4-5-65-6- -8 8-9-2-9-2- 路径路径6 6:1-2-3-4-5-6-1-2-3-4-5-6-7 7-8-9-2-8-9-2-1 12 25 54 43 36 67 78 89 91 10 01 12 21 11 11 13 36.4.2 McCabe6.4.2 McCabe度量法度量法345216独立路径独立路径12345678910111213R3R2R5R4R1R614控制结构测试控制结构测试- -基本路径测试基本路径测试由于环路复杂度由于环路复杂度=6=6;故

35、基本路径测试中独立路径集合故基本路径测试中独立路径集合为:为:路径路径1 1:1-111-11- -1212-14-14路径路径2 2:1-11-1-11-1313-14 -14 路径路径3 3:1-21-2- -3-43-4-6-7-10-1-6-7-10-1-路径路径4 4:1-2-1-2-3-53-5- -6-76-7-10-1-10-1-路径路径5 5:1-2-3-5-1-2-3-5-6-86-8- -1 1-路径路径6 6:1-2-3-5-6-8-1-2-3-5-6-8-9 9-10-1-10-1-n 控制结构测试控制结构测试条件测试条件测试 当程序中判定多于一个时,形成的分当程序中

36、判定多于一个时,形成的分支结构可以分为两类:支结构可以分为两类:嵌套型嵌套型分支结构和分支结构和连锁型连锁型分支结构。分支结构。7.3.2 7.3.2 白盒测试白盒测试n 控制结构测试控制结构测试条件测试条件测试p嵌套型分支结构嵌套型分支结构 若有若有n n个判定语句,需个判定语句,需n+1n+1个测试用例;个测试用例;p连锁型分支结构连锁型分支结构, 若若有有n n个判定语句,需要个判定语句,需要有有2 2n n个测试用例,覆个测试用例,覆盖它的盖它的2 2n n条路径。条路径。7.3.2 7.3.2 白盒测试白盒测试嵌套分支结构嵌套分支结构连锁型分支结构连锁型分支结构n 控制结构测试控制结

37、构测试循环测试循环测试7.3.2 7.3.2 白盒测试白盒测试简单循环简单循环嵌套循环嵌套循环连锁循环连锁循环非结构循环非结构循环n 控制结构测试控制结构测试循环测试循环测试p简单循环简单循环 零次循环零次循环:从循环入口到出口:从循环入口到出口 一次循环一次循环:检查循环初始值:检查循环初始值 二次循环二次循环:检查多次循环:检查多次循环 m m次循环:次循环: 检查在多次循环检查在多次循环 最大次数循环、比最大次数多一次、最大次数循环、比最大次数多一次、少一次的循环。少一次的循环。7.3.2 7.3.2 白盒测试白盒测试n控制结构测试控制结构测试循环测试循环测试p嵌套循环嵌套循环对对最内层

38、最内层循环做循环做简单循环的全部测试简单循环的全部测试,所有其它层的循环变量置为最小值;所有其它层的循环变量置为最小值;逐步外推逐步外推,对其外面一层循环进行测试。,对其外面一层循环进行测试。测试时保持所有测试时保持所有外层循环外层循环的循环变量的循环变量取取最小值最小值,所有其它嵌套,所有其它嵌套内层循环内层循环的循环的循环变量变量取取“典型典型”值值。反复进行,直到所有各层循环测试完毕。反复进行,直到所有各层循环测试完毕。对全部各层循环对全部各层循环同时同时取最小取最小循环次数,循环次数,或者同时取或者同时取最大循环次数。最大循环次数。7.3.2 7.3.2 白盒测试白盒测试n控制结构测试

39、控制结构测试循环测试循环测试p连锁循环连锁循环p各个循环各个循环互相独立互相独立,则用与,则用与简单循简单循环相同环相同的方法进行测试;的方法进行测试;p各个循环各个循环不是互相独立不是互相独立的,则需用的,则需用嵌套循环测试嵌套循环测试的方法进行测试;的方法进行测试;p非结构循环非结构循环使用结构化程序设计方法重新设计使用结构化程序设计方法重新设计测试用例。测试用例。7.3.2 7.3.2 白盒测试白盒测试7.3.3 7.3.3 黑盒测试黑盒测试n 定义定义 把把测试对象测试对象看做看做一个黑盒子一个黑盒子,测试人,测试人员完全不考虑程序内部的逻辑结构和员完全不考虑程序内部的逻辑结构和内部特

40、性,只依据程序的需求规格说内部特性,只依据程序的需求规格说明书,明书,检查程序的功能检查程序的功能是否符合它的是否符合它的功能说明。功能说明。又叫做又叫做功能测试功能测试或或数据驱动测试数据驱动测试。黑盒测试并不能取代白盒测试,它是黑盒测试并不能取代白盒测试,它是与白盒测试互补与白盒测试互补的测试方法,它很的测试方法,它很可可能发现白盒测试不易发现的其他类型能发现白盒测试不易发现的其他类型的错误的错误。n 检查内容检查内容黑盒测试方法是在程序接口上进行测黑盒测试方法是在程序接口上进行测试,主要是为了发现以下错误试,主要是为了发现以下错误: :是否有遗漏或不正确的功能;是否有遗漏或不正确的功能;

41、在接口上,在接口上,输入能否正确地接受输入能否正确地接受? ? 能否能否输出正确的结果输出正确的结果;是否有数据结构错误或外部信息是否有数据结构错误或外部信息( (例如数例如数据文件据文件) )访问错误访问错误;性能上是否能够满足要求性能上是否能够满足要求;是否有初始化或终止性是否有初始化或终止性7.3.3 7.3.3 黑盒测试黑盒测试n测试方法测试方法等价类划分等价类划分边界值分析边界值分析错误推测法错误推测法因果图因果图7.3.2 7.3.2 黑盒测试黑盒测试n 等价类划分等价类划分定义定义 等价类划分方法把所有可能的输入等价类划分方法把所有可能的输入数据(即程序的输入域),划分成若干数据

42、(即程序的输入域),划分成若干部分,然后从每一部分中选取少数有代部分,然后从每一部分中选取少数有代表性的数据做为测试数据。表性的数据做为测试数据。等价类划分方法设计测试用例时等价类划分方法设计测试用例时首先对程序输入域首先对程序输入域划分等价类划分等价类,然后再,然后再选取测试用例选取测试用例。7.3.3 7.3.3 黑盒测试黑盒测试n 等价类划分等价类划分 等价类等价类p等价类的含义等价类的含义 等价类等价类指某个输入域的子集合;指某个输入域的子集合; 子集合子集合各个输入数据对于揭露程序中的各个输入数据对于揭露程序中的错误都是等效的错误都是等效的,测试某等价类的代表,测试某等价类的代表值就

43、等价于对这一类其它值的测试。值就等价于对这一类其它值的测试。7.3.3 7.3.3 黑盒测试黑盒测试n 等价类划分等价类划分 等价类等价类p等价类的分类等价类的分类 有效有效等价类等价类合理的、有意义的输入数据构成的集合;合理的、有意义的输入数据构成的集合; 无效无效等价类等价类 从各种角度不符合规则、无意义的输从各种角度不符合规则、无意义的输入数据构成的集合;入数据构成的集合;7.3.3 7.3.3 黑盒测试黑盒测试n 等价类划分等价类划分 划分等价类划分等价类p划分原则划分原则如果输入条件规定了如果输入条件规定了取值范围或值的取值范围或值的个数个数,则可以确立,则可以确立一个有效等价类一个

44、有效等价类和和两个无效等价类两个无效等价类。7.3.3 7.3.3 黑盒测试黑盒测试示例示例: :对输入条件对输入条件“项数可以从项数可以从1 1到到999”999” 有效等价类:有效等价类:11项数项数999999无效等价类:无效等价类:项数项数1 1和和项数项数999999n等价类划分等价类划分划分等价类划分等价类p划分原则划分原则如果输入条件规定了如果输入条件规定了输入值的集合或者输入值的集合或者“必须如何必须如何”的条件的条件,这时可确立,这时可确立一个一个有效等价类有效等价类和和一个无效等价类一个无效等价类。示例示例: :对变量标识符规定为对变量标识符规定为“以字母打头的以字母打头的

45、串串” 有效等价类有效等价类: :所有以字母打头的串所有以字母打头的串 无效等价类无效等价类: :不以字母打头的串不以字母打头的串7.3.3 7.3.3 黑盒测试黑盒测试n等价类划分等价类划分 划分等价类划分等价类p划分原则划分原则p如果输入条件是如果输入条件是布尔量布尔量,则可以确定,则可以确定一一个有效等价类个有效等价类和和一个无效等价类一个无效等价类。7.3.3 7.3.3 黑盒测试黑盒测试示例示例: : 在教师上岗方案中规定对在教师上岗方案中规定对教授、副教授、教授、副教授、讲师讲师和和助教助教分别计算分数,做相应的处理。分别计算分数,做相应的处理。 有效等价类:有效等价类:教授、副教

46、授、讲师和助教教授、副教授、讲师和助教 无效等价类:无效等价类:所有不符合以上身分的人员所有不符合以上身分的人员的输入值的集合的输入值的集合7.3.3 7.3.3 黑盒测试黑盒测试n等价类划分等价类划分 划分等价类划分等价类p划分原则划分原则p如果规定了输入数据的如果规定了输入数据的一组值一组值,而且程而且程序要序要对每个输入值分别进行处理对每个输入值分别进行处理, , 则则每每一个输入值确立一个有效等价类一个输入值确立一个有效等价类;针对;针对这组值之外的确立这组值之外的确立一个无效等价类一个无效等价类,它,它是所有不允许的输入值的集合。是所有不允许的输入值的集合。n等价类划分等价类划分划分

47、等价类划分等价类p划分原则划分原则p如果规定了输入数据如果规定了输入数据必须遵守的规则必须遵守的规则,则,则可以确立可以确立一个一个有效等价类有效等价类(符合规则)和(符合规则)和若干个若干个无效等价类无效等价类(从不同角度违反规(从不同角度违反规则)。则)。 示例示例 C C语言规定语言规定 “一个语句必须以分号一个语句必须以分号;结束结束 有效等价类有效等价类: : 以以;结束结束 无效等价类无效等价类 : :以以: , : , 等等结束结束7.3.3 7.3.3 黑盒测试黑盒测试n等价类划分等价类划分测试用例设计步骤测试用例设计步骤划分等价类划分等价类,并且为每个等价类规定一个,并且为每

48、个等价类规定一个唯一唯一编号编号; ;设计设计有效等价类有效等价类测试用例,测试用例,一个一个新的测试新的测试用例用例尽可能多尽可能多地覆盖尚未被覆盖的地覆盖尚未被覆盖的有效等有效等价类;价类;设计设计无效等价类无效等价类测试用例,测试用例,一个一个新的测试新的测试用例用例仅覆盖一个仅覆盖一个尚未被覆盖尚未被覆盖的无效等价类。的无效等价类。7.3.3 7.3.3 黑盒测试黑盒测试示例:示例: 某报表处理系统要求如下:某报表处理系统要求如下: 用户用户输入输入处理报表的处理报表的日期日期,日期日期限制在限制在20032003年年1 1月至月至20082008年年1212月月,即系统只能对该即系统

49、只能对该段期间内的报表进行处理,如日期不在此范段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期围内,则显示输入错误信息。系统日期规定规定由由年年、月月的的6 6位数字字符位数字字符组成,前四位代表组成,前四位代表年,后两位代表月年,后两位代表月。 如何用等价类划分法设计测试用例如何用等价类划分法设计测试用例, ,来来测试程序的日期检查功能?测试程序的日期检查功能?7.3.3 7.3.3 黑盒测试黑盒测试第一步第一步: :划划分等价类等价类输入条件输入条件日期类型日期类型及长度及长度6 6位数字字符位数字字符(3)(3)有非数字字符有非数字字符 (8)(8)少于少于6 6

50、位数字字符位数字字符(9)(9)大于大于6 6位数字字符位数字字符(10)(10)年份范围年份范围在在2003200320082008之间之间(1)(1)小于小于20032003 (4)(4)大于大于20082008 (5)(5)月份范围月份范围在在1 11212之间之间(2)(2)“报表日期报表日期”输入条件的等价类表输入条件的等价类表小于小于1 1 (6)(6)大于大于1212 (7)(7)有效等价类有效等价类无效等价类无效等价类7.3.3 7.3.3 黑盒测试黑盒测试原则原则1 1原则原则5 5第二步第二步: :为有效等价类设计测试用例为有效等价类设计测试用例对表中编号为对表中编号为(1

51、)(1)、(2)(2)、(3)(3)的的3 3个有效等个有效等价类设计一个测试用例,该测试用例同时覆盖价类设计一个测试用例,该测试用例同时覆盖这这3 3个有效等价类。个有效等价类。(1)(1)年在年在2003200320082008之间之间(2)(2)月在月在1 11212之间之间(3)(3)6 6位数字字符位数字字符测试数据测试数据 期望结果期望结果 覆盖范围覆盖范围200306200306等价类等价类(1)(2)(3)(1)(2)(3)输入有效输入有效7.3.3 7.3.3 黑盒测试黑盒测试第三步第三步: :为无效等价类设计测试用例为无效等价类设计测试用例为表中编号为表中编号(4)-(10

52、)(4)-(10)的的7 7个无效等价类设计测个无效等价类设计测试用,并且每一个无效等价类设至少设计一个测试试用,并且每一个无效等价类设至少设计一个测试用例。用例。不能出现不能出现相同的测相同的测试用例试用例7.3.3 7.3.3 黑盒测试黑盒测试测试数据测试数据期望结果期望结果覆盖范围覆盖范围200105输入无效输入无效等价类等价类(4)200905输入无效输入无效等价类等价类(5)200300输入无效输入无效等价类等价类(6)200313输入无效输入无效等价类等价类(7)003MAY输入无效输入无效等价类等价类(8)20035输入无效输入无效等价类等价类(9)2003005输入无效输入无效

53、等价类等价类(10)n 边界值分析边界值分析背景背景 边界值分析边界值分析也是一种黑盒测试方法,也是一种黑盒测试方法,是对等价类划分方法的补充是对等价类划分方法的补充。 经验得知,经验得知,大量的错误是发生在输入大量的错误是发生在输入或输出范围的边界上或输出范围的边界上,而不是在输入范而不是在输入范围的内部,如下标、数据结构、循环等围的内部,如下标、数据结构、循环等边界。边界。7.3.3 7.3.3 黑盒测试黑盒测试n 边界值分析边界值分析与等价类划分法区别与等价类划分法区别 边界值分析不是从某等价类中随便挑一边界值分析不是从某等价类中随便挑一个作为代表,而是使这个个作为代表,而是使这个等价类

54、的每个边等价类的每个边界都要作为测试条件界都要作为测试条件, ,选取刚好小于选取刚好小于、大于大于边界的值作为测试数据边界的值作为测试数据。 边界值分析不仅考虑输入条件,还要考边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。虑输出空间产生的测试情况。被测试被测试子子 域域测试内点测试内点测试外点测试外点7.3.3 7.3.3 黑盒测试黑盒测试n 边界值分析边界值分析边界条件类型边界条件类型如果软件测试问题如果软件测试问题包含确定的边界包含确定的边界, ,那那么么数据类型数据类型可能是可能是: :数值数值字符字符位置位置数量数量速度速度地址地址尺寸尺寸还要考虑数据类型的特征还要考虑数

55、据类型的特征: :第一个第一个/ /最后一个最后一个最小值最小值/ /最大值最大值开始开始/ /完成完成空空/ /满满最慢最慢/ /最快最快相邻相邻/ /最远最远超过超过/ /在内在内7.3.3 7.3.3 黑盒测试黑盒测试示例:示例: 某报表处理系统要求如下:某报表处理系统要求如下: 用户用户输入输入处理报表的处理报表的日期日期,日期日期限制在限制在20032003年年1 1月至月至20082008年年1212月月,即系统只能对该即系统只能对该段期间内的报表进行处理,如日期不在此范段期间内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期围内,则显示输入错误信息。系统日期规定规

56、定由由年年、月月的的6 6位数字字符位数字字符组成,前四位代表组成,前四位代表年,后两位代表月年,后两位代表月。 如何用等价类划分法设计测试用例如何用等价类划分法设计测试用例, ,来来测试程序的日期检查功能?测试程序的日期检查功能?7.3.3 7.3.3 黑盒测试黑盒测试输入条件输入条件日期类型日期类型及长度及长度6 6位数字字符位数字字符(3)(3)有非数字字符有非数字字符 (8)(8)少于少于6 6个数字字符个数字字符(9)(9)大于大于6 6个数字字符个数字字符(10)(10)年份范围年份范围在在2003200320082008之间之间(1)(1)小于小于20032003 (4)(4)大

57、于大于20082008 (5)(5)月份范围月份范围在在1 11212之间之间(2)(2)“报表日期报表日期”输入条件的等价类表输入条件的等价类表小于小于1 1 (6)(6)大于大于1212 (7)(7)有效等价类有效等价类无效等价类无效等价类7.3.3 7.3.3 黑盒测试黑盒测试“报表日期(报表日期( 6 6位数字字符)位数字字符)”边界值分析法测试用边界值分析法测试用例例输入条件输入条件报表日期报表日期的类型及的类型及长度长度1 1个数字字符个数字字符5 5个数字字符个数字字符7 7个数字字符个数字字符有有1 1个非数字字符个非数字字符全部是非数字字符全部是非数字字符6 6个数字字符个数

58、字字符显示出错显示出错显示出错显示出错显示出错显示出错显示出错显示出错显示出错显示出错输入有效输入有效测试用例说明测试用例说明测试数据测试数据 期望结果期望结果选取理由选取理由5 52003520035200300520030052003.52003.5MAY-MAY-200305200305仅有仅有1 1个合法字符个合法字符比有效长度少比有效长度少1 1比有效长度多比有效长度多1 1只有只有1 1个非法字符个非法字符6 6个非法字符个非法字符类型及长度均有效类型及长度均有效示例:示例:年份范围年份范围月份范围月份范围月份为月份为1 1月月月份为月份为1212月月月份月份11212200301

59、200301200312200312200300200300200313200313200301200301200812200812200212200212200901200901输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错最小年份最小年份最大年份最大年份刚好小于最小年份刚好小于最小年份刚好大于最大年份刚好大于最大年份最小月份最小月份最大月份最大月份刚好小于最小月份刚好小于最小月份刚好大于最大月份刚好大于最大月份年份为年份为20032003年份为年份为20082008年份年份200320082008n 错误推测

60、法错误推测法 错误推测法是错误推测法是靠经验和直觉靠经验和直觉推测程推测程序中可能存在的各种错误,以及容易发序中可能存在的各种错误,以及容易发生错误的特殊情况,从而有针对性地编生错误的特殊情况,从而有针对性地编写检查这些错误的例子。写检查这些错误的例子。常用的工具有错误清单、判定表等。常用的工具有错误清单、判定表等。7.3.3 7.3.3 黑盒测试黑盒测试n 因果图因果图定义定义 因果图适合于因果图适合于描述对于多种输入描述对于多种输入条件的组合条件的组合,相应,相应产生多个动作产生多个动作的形的形式来设计测试用例,因果图方法式来设计测试用例,因果图方法最终最终生成的是判定表生成的是判定表,因果图又叫

温馨提示

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

评论

0/150

提交评论