1、 第六章、软件测试技术第六章、软件测试技术环境环境被测对象被测对象人员素质人员素质被测对象模型被测对象模型测试执行测试执行正确正确?环境模型环境模型错误模型错误模型 软件测试过程所涉及的要素软件测试过程所涉及的要素,以及以及 这些要素之间的关系这些要素之间的关系 正确正确1)测试过程模型测试过程模型 2 2)依据程序逻辑结构)依据程序逻辑结构-白盒测试技术白盒测试技术 (1 1)关于建立被测对象模型)关于建立被测对象模型 控制流程图控制流程图:结点结点/分支分支/过程块过程块/链链 路径路径1236457X5 and Y1X1错写成错写成X1X1A1,B=0B=0,A=2A=2,X1X1。条件
2、条件A A1 1 取真值标记为取真值标记为T1T1,取假值标记为,取假值标记为F1F1 条件条件B=0 B=0 取真值标记为取真值标记为T2T2,取假值标记为,取假值标记为F2F2 条件条件A=2 A=2 取真值标记为取真值标记为T3T3,取假值标记为,取假值标记为F3F3 条件条件X X1 1 取真值标记为取真值标记为T4T4,取假值标记为,取假值标记为F4F4 在设计测试用例时,要考虑如何选择测试用例实现在设计测试用例时,要考虑如何选择测试用例实现T1T1、F1F1、T2T2、F2F2、T3T3、F3F3、T4T4、F4F4的全部覆盖:的全部覆盖:例如,可设计如下测试用例实现条件覆盖:例如
3、,可设计如下测试用例实现条件覆盖:测测 试试 用用 例例 通过路径通过路径 条件取值条件取值 覆盖分支覆盖分支 【(【(1 1,0 0,3 3),(),(1 1,0 0,4 4)】)】L3 F1 T2 F3 T4 b,eL3 F1 T2 F3 T4 b,e 【(【(2 2,1 1,1 1),(),(2 2,1 1,2 2)】)】L3 T1 F2 T3 F4 b,eL3 T1 F2 T3 F4 b,e 从上面的测试用例,可以看到该组测试用例虽然实现了从上面的测试用例,可以看到该组测试用例虽然实现了判定中各条件的覆盖,但没有实现分支覆盖,因为该组测试判定中各条件的覆盖,但没有实现分支覆盖,因为该组
4、测试用例只覆盖了第一个判断的取假分支和第二个判断的取真分用例只覆盖了第一个判断的取假分支和第二个判断的取真分支。为此,人们又进一步提出了条件组合覆盖技术。支。为此,人们又进一步提出了条件组合覆盖技术。例如,在该例子中,前一个判定有例如,在该例子中,前一个判定有4 4中条件组合:中条件组合:(1 1)(A(A1)1),(B=0)(B=0),标记为标记为 T1 T1、T2T2;(2 2)(A(A1)1),(B0)(B0),标记为,标记为 T1 T1、F2,F2,;(3 3)(A1)(A1),(B=0)(B=0),标记为标记为 F1 F1、T2T2;(4 4)(A1)(A1),(B0)(B0),标记
5、为,标记为 F1 F1、F2F2;后一个判定又有后一个判定又有4 4中条件组合:中条件组合:(5 5)(A=2)(A=2),(X(X1)1),标记为标记为 T3T3、T4T4;(6 6)(A=2)(A=2),(X1)(X1),标记为,标记为 T3T3、F4F4;(7 7)(A2)(A2),(X(X1)1),标记为,标记为 F3F3、T4T4;(8 8)(A2)(A2),(X1)(X1),标记为,标记为 F3F3、F4F4。因此,要满足条件组合覆盖,设计的测试用例必须满足因此,要满足条件组合覆盖,设计的测试用例必须满足以下以下1616种条件组合:种条件组合:(1 1)(A(A1)1),(B=0)
6、(B=0),(A=2)(A=2),(X(X1)1),可标记为可标记为 T1 T1、T2T2、T3T3、T4T4;(1 1)(A(A1)1),(B=0)(B=0),(A=2)(A=2),(X1)(X1),可标记为,可标记为 T1 T1、T2T2、T3T3、F4F4;(1 1)(A(A1)1),(B=0)(B=0),(A2)(A2),(X(X1)1),可标记为,可标记为 T1 T1、T2T2、F3F3、T4T4 (1 1)(A(A1)1),(B=0)(B=0),(A2)(A2),(X1)(X1),可标记为,可标记为 T1 T1、T2T2、F3F3、F4F4。(2 2)(A(A1)1),(B0)(B
7、0),(A=2)(A=2),(X(X1)1),可标记为可标记为 T1 T1、F2,T3F2,T3、T4T4;(2 2)(A(A1)1),(B0)(B0),(A=2)(A=2),(X1)(X1),可标记为,可标记为 T1 T1、F2F2、T3T3、F4F4;(2 2)(A(A1)1),(B0)(B0),(A2)(A2),(X(X1)1),可标记为,可标记为 T1 T1、F2F2、F3F3、T4T4;(2 2)(A(A1)1),(B0)(B0),(A2)(A2),(X1)(X1),可标记为,可标记为 T1 T1、F2F2、F3F3、F4F4。(3 3)(A1)(A1),(B=0)(B=0),(A=
8、2)(A=2),(X(X1)1),可标记为可标记为 F1 F1、T2T2、T3T3、T4T4;(3 3)(A1)(A1),(B=0)(B=0),(A=2)(A=2),(X1)(X1),可标记为,可标记为 F1 F1、T2T2、T3T3、F4F4;(3 3)(A1)(A1),(B=0)(B=0),(A2)(A2),(X(X1)1),可标记为,可标记为 F1 F1、T2T2、F3F3、T4T4;(3 3)(A1)(A1),(B=0)(B=0),(A2)(A2),(X1)(X1),可标记为,可标记为 F1 F1、T2T2、F3F3、F4F4。(4 4)(A1)(A1),(B0)(B0),(A=2)(
9、A=2),(X(X1)1),可标记为可标记为 F1 F1、F2F2、T3T3、T4T4;(4 4)(A1)(A1),(B0)(B0),(A=2)(A=2),(X1)(X1),可标记为,可标记为 F1 F1、F2F2、T3T3、F4F4;(4 4)(A1)(A1),(B0)(B0),(A2)(A2),(X(X1)1),可标记为,可标记为 F1 F1、F2F2、F3F3、T4T4;(4 4)(A1)(A1),(B0)(B0),(A2)(A2),(X1)(X1),可标记为,可标记为 F1 F1、F2F2、F3F3、F4F4。可以采用以下四组测试数据,从而实现条件组合覆盖。可以采用以下四组测试数据,从
10、而实现条件组合覆盖。测测 试试 用用 例例 覆盖条件覆盖条件 覆盖组合号覆盖组合号 通过路径通过路径【(【(2 2,0 0,4 4),(),(2 2,0 0,3 3)】)】T1 T2 T3 T4 T1 T2 T3 T4 1 1、5 5 L1L1【(【(2 2,1 1,1 1),(),(2 2,1 1,2 2)】)】T1 F2 T3 F4 T1 F2 T3 F4 2 2、6 6 L3L3【(【(1 1,0 0,3 3),(),(1 1,0 0,4 4)】)】F1 T2 F3 T4 F1 T2 F3 T4 3 3、7 7 L3 L3【(【(1 1,1 1,1 1),(),(1 1,1 1,1 1)
11、】)】F1 F2 F3 F4 F1 F2 F3 F4 4 4、8 8 L2 L2 【(【(3 3,0 0,3 3),(),(3 3,0 0,1 1)】)】T1 T2 F3 F4 T1 T2 F3 F4 1 1、8 8 L4 L4 这组测试用例实现了分支覆盖,也实现了条件的所有这组测试用例实现了分支覆盖,也实现了条件的所有可能取值的组合的覆盖。可能取值的组合的覆盖。(3 3)循环情况的路径选取)循环情况的路径选取 一层一层 二层二层 级连循环级连循环 嵌套循环嵌套循环 还要考虑循环变量的具体情况还要考虑循环变量的具体情况 关键路径的选取关键路径的选取 主要功能路径主要功能路径 没有功能的路径没有
12、功能的路径 最短路径最短路径 .3)3)功能测试功能测试-基于规格说明的测试基于规格说明的测试3.1 事务流测试技术事务流测试技术(1)基本概念:)基本概念:事务:以用户的角度所见的一个工作单元。事务:以用户的角度所见的一个工作单元。一个事务由一系列操作组成。其中某些操作可含一个事务由一系列操作组成。其中某些操作可含 有系统执行成分,或含有设备执行成分。有系统执行成分,或含有设备执行成分。事务处理流程(图):系统行为的一种表示方法,为事务处理流程(图):系统行为的一种表示方法,为 功功 能测试建立了软件动作模式。其中使用了白盒能测试建立了软件动作模式。其中使用了白盒 测试中的一些概念,例如:分
13、支,结点,链等。测试中的一些概念,例如:分支,结点,链等。1236457123111AA:Path1继续继续A:Path2继续继续AA继续继续BABC A:Path1A:Path2A:继续继续ABABAC测试设备测试设备:路径分析器路径分析器,测试用例数据库测试用例数据库,测试执行调度器测试执行调度器,路径敏化问题路径敏化问题.(2)与程序控制流程图的比较:)与程序控制流程图的比较:事务流图是一种数据流图,即从操作应用的历史,观事务流图是一种数据流图,即从操作应用的历史,观察数据对象。察数据对象。事务流图中的判定;事务流图中的判定;“抽象抽象”了一个复杂的过程。了一个复杂的过程。事务流图存在事
14、务流图存在“中断中断”,把一个过程等价地变换为具,把一个过程等价地变换为具有繁多出口的链支。有繁多出口的链支。并生并生丝分裂丝分裂吸收吸收结合结合(3)测试步骤)测试步骤第一步第一步:获取事务流程图,即建立被测对象模型;:获取事务流程图,即建立被测对象模型;第二步第二步:浏览与复审:浏览与复审 主要对事务进行分类,为设计用例奠主要对事务进行分类,为设计用例奠 定基础;定基础;第三步第三步:用例设计:用例设计 涉及:覆盖策略,事务选取,路径敏化等;涉及:覆盖策略,事务选取,路径敏化等;第四步第四步:测试设备开发测试设备开发:路径分析器路径分析器,测试用例数据库测试用例数据库,测试执行调度器测试执
15、行调度器,.,.第五步第五步:测试执行;:测试执行;第六步第六步:测试结果比较。:测试结果比较。3.2 3.2 等价类划分技术等价类划分技术(1)(1)基本概念基本概念 等价类等价类:输入域的一个子集,在该子集中,各个输入:输入域的一个子集,在该子集中,各个输入数据对于揭示程序中的错误都是等效的。即:以等价类中数据对于揭示程序中的错误都是等效的。即:以等价类中的某代表值进行的测试,等价于对该类中其他取值的测试。的某代表值进行的测试,等价于对该类中其他取值的测试。有效等价类有效等价类:指那些对于软件的规格说明书而言,是:指那些对于软件的规格说明书而言,是合理的、有意义的输入数据所构成的集合。合理
16、的、有意义的输入数据所构成的集合。-用于实现功能和性能的测试。用于实现功能和性能的测试。无效等价类无效等价类:指那些对于软件的规格说明书而言,是:指那些对于软件的规格说明书而言,是不合理的、无意义的输入数据所构成的集合。不合理的、无意义的输入数据所构成的集合。-用于测试那些所实现的功能和性能不符合规格说明用于测试那些所实现的功能和性能不符合规格说明 书的要求。书的要求。(2)等价类划分原则(指南)等价类划分原则(指南)如果输入条件规定了输入数据的取值范围或值的个数,如果输入条件规定了输入数据的取值范围或值的个数,则可以确定一个有效等价类和二个无效等价类。例如:则可以确定一个有效等价类和二个无效
17、等价类。例如:输入条件:输入条件:“.项数可以是项数可以是1到到999”无效等价类无效等价类有效等价类有效等价类无效等价类无效等价类1999 如果输入条件规定了输入值的集合,或规定了如果输入条件规定了输入值的集合,或规定了“必须必须如何如何”的条件,则可以确定一个有效等价类和一个无效的条件,则可以确定一个有效等价类和一个无效等价类。例如:等价类。例如:“标识符是一字母打头的标识符是一字母打头的串。串。”则则 字母打头的字母打头的-为一个有效等价类,而为一个有效等价类,而 其余的其余的-为一个无效等价类为一个无效等价类 如果输入条件是一个布尔量,则可以确定一个有效等价如果输入条件是一个布尔量,则
18、可以确定一个有效等价 类和一个无效等价类。类和一个无效等价类。如果输入条件规定了输入数据的一组值,而且软件要对如果输入条件规定了输入数据的一组值,而且软件要对 每个输入值进行处理,则可以为每一个输入值确定一个有每个输入值进行处理,则可以为每一个输入值确定一个有 效等价类,为所有不允许的输入值确定一个无效等价类。效等价类,为所有不允许的输入值确定一个无效等价类。如果输入条件规定了输入数据必须遵循的规则,则可以如果输入条件规定了输入数据必须遵循的规则,则可以 确定一个有效等价类(符合规则),和若干个无效等价类。确定一个有效等价类(符合规则),和若干个无效等价类。例如:例如:“语句必须以;号结束语句
19、必须以;号结束”注意:如果在已确定的等价类中各元素在软件中的处理方注意:如果在已确定的等价类中各元素在软件中的处理方式不同,则应根据需要对等价类进一步进行划分。式不同,则应根据需要对等价类进一步进行划分。(3)测试用例设计测试用例设计在确定了等价类之后,建立等价类表:在确定了等价类之后,建立等价类表:-输入条件输入条件 有效等价类有效等价类 无效等价类无效等价类 -(4)实例研究实例研究 某一某一8位计算机,其十六进制常数的定义为:以位计算机,其十六进制常数的定义为:以0 x或或0X开头的数是十六进制整数,其值的范围是开头的数是十六进制整数,其值的范围是-7f至至7f(大小写(大小写字母不加区
20、别),如字母不加区别),如0 x13,0X6A,-0 x3c第一步:建立等价类表第一步:建立等价类表 -输入条件输入条件 有效等价类有效等价类 无效等价类无效等价类 -十六进制整数十六进制整数 1、0 x或或0X开头开头 4、非、非0 x或非或非-开头的串开头的串 1-2位数字串位数字串 5、含有非数字且(、含有非数字且(a,b,c,d,e,f)以外字符以外字符 6、多于、多于5个字符个字符 2、以、以-0 x开头的开头的 7、-后跟非后跟非0的多位串的多位串 1-2位数字串位数字串 8、-0后跟数字串后跟数字串 9、-后多于后多于3个数字个数字 3、在、在-7f至至7f之间之间 10、小于、
21、小于-7f 11、大于、大于 7f第二步:为有效等价类设计测试用例第二步:为有效等价类设计测试用例 测试用例测试用例 期望结果期望结果 覆盖范围覆盖范围 0 x23 显示有效输入显示有效输入 1,3 -0 x15 显示有效输入显示有效输入 2,3第三步:为无效等价类至少设计一个测试用例第三步:为无效等价类至少设计一个测试用例 测试用例测试用例 期望结果期望结果 覆盖范围覆盖范围 2 显示无效输入显示无效输入 4 G12 显示无效输入显示无效输入 5 123311 显示无效输入显示无效输入 6 -1012 显示无效输入显示无效输入 7 -011 显示无效输入显示无效输入 8 -0134 显示无效输入显示无效输入 9 -0 x777 显示无效输入显示无效输入 10 0 x87 显示无效输入显示无效输入 113.3 3.3 软件测试步骤软件测试步骤(1 1)单元测试)单元测试(2 2)集成测试)集成测试 集成测试是一种软件集成化技术集成测试是一种软件集成化技术 方式方式:自顶向下或自底向上自顶向下或自底向上 设计测试设备设计测试设备 驱动模块驱动模块 承接模型承接模型(3 3)有效性测试有效性测试 被测模块被测模块驱动模块驱动模块承接模块承接模块承接模块承接模块-代替原来的被控模块代替原来的被控模块-代替原来的控制模块代替原来的控制模块