为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

Ch3功能性测试

2012-09-16 50页 ppt 4MB 43阅读

用户头像

is_556683

暂无简介

举报
Ch3功能性测试null功能性测试功能性测试内容简介内容简介边界值测试 等价类测试 因果图法 基于决策表的测试1.边界值分析1.边界值分析Boundary Value Analysis1.边界值测试1.边界值测试边界值分析 健壮性测试 最坏情况测试 特殊值测试 举例 随机测试常见的边界值常见的边界值对16-bit 的整数而言 32767 和 -32768 是边界 屏幕上光标在最左上、最右下位置 报表的第一行和最后一行 数组元素的第一个和最后一个 循环的第 0 次、第 1 次和倒数第 2 次、最后一次1.1边界值分析1.1边界值分析依据原理:错...
Ch3功能性测试
null功能性测试功能性测试内容简介内容简介边界值测试 等价类测试 因果图法 基于决策表的测试1.边界值分析1.边界值分析Boundary Value Analysis1.边界值测试1.边界值测试边界值分析 健壮性测试 最坏情况测试 特殊值测试 举例 随机测试常见的边界值常见的边界值对16-bit 的整数而言 32767 和 -32768 是边界 屏幕上光标在最左上、最右下位置 报表的第一行和最后一行 数组元素的第一个和最后一个 循环的第 0 次、第 1 次和倒数第 2 次、最后一次1.1边界值分析1.1边界值分析依据原理:错误更可能出现在输入变量的极值附近 基本思想:使用在最小值、略高于最小值、正常值、略低于最大值、最大值处输入变量值。 生成测试用例 使所有变量取正常值,只使一个变量取极值(依据“单缺陷”假设:失效极少是由两个或多个缺陷同时发生引起的) n个变量函数:1个变量取最小值、略高于最小值、正常值、略低于最大值、最大值,n-1个变量取正常值;对每个变量重复此过程,4n+1个测试用例 1.1例如:1.1例如: 1.1对边界值分析的说明1.1对边界值分析的说明值域取决于变量的性质 容易确定值域:离散值、有界值 人工确定值域:三角形问题,最大边长? 对布尔值无意义(可选决策表) 边界值分析的局限性 NextDate():2月,闰年1.2健壮性测试1.2健壮性测试对边界值分析的扩展1.3最坏情况测试1.3最坏情况测试当多个变量取极值时会出现什么情况? 生成测试用例: 对每个变量:首先进行包含最小值、略高于最小值、正常值、略低于最大值、最大值5元素集合测试,然后对这些集合进行笛卡尔积计算,生成测试用例 n变量函数的最坏测试情况测试,会产生5n个测试用例 1.3两变量函数的最坏情况测试用例1.3两变量函数的最坏情况测试用例1.3两变量函数的健壮最坏情况测试用例1.3两变量函数的健壮最坏情况测试用例1.4特殊值测试1.4特殊值测试测试人员依赖经验、领域知识给出特殊值 特殊值测试特别依赖测试人员的能力 例如: NextDate函数:闰年2月28日,2月29日1.5举例(找零钱最佳组合)1.5举例(找零钱最佳组合)假设商店商品价格[X]皆不大于100元(整数),若顾客买一件商品,付款[Y]在100元内,求找给顾客的最少货币张数? 货币面值: 50元[R50] 20元[R20] 10元[R10] 5元[R5] 2元[R2] 1元[R1]分析输入分析输入X > 100 0 < X < = 100 X <= 0 Y > 100 X<= Y <= 100 Y < X 分析输出分析输出0 <= R50 <= 1 0 <= R20 <= 2 0 <= R10 <= 1 0 <= R5 <= 1 0 <= R2 <= 2 0 <= R1 <= 1分析边界分析边界无效边界 X > 100 X <= 0 Y > 100 Y < X分析边界分析边界有效边界 设找部分钱后剩余的金额为S(初始S=Y) S >= 50 找R50 20 <= S < 50 找R20 10 <= S < 20 找R10 5 <= S < 10 找R5 2 <= S < 5 找R2 1 <= S < 2 找R1分析后无效情形 分析后无效情形 X > 100 错误 X <= 0 错误 0 < X <= 100, Y > 100 错误 0 < X <= 100, Y < X 错误分析后有效情形分析后有效情形S = 50 S = 49 S = 20 S = 19 S = 10 S = 9 S = 5 S = 4 S = 2 S = 1 S = 0 测试用例设计测试用例设计测试用例设计测试用例举例(找零钱最佳组合 )举例(找零钱最佳组合 )思考1:是否可以考虑使用等价类划分来测试? 思考2:如果是等价类测试,则等价类应该如何划分? X: X>100 ; 0100 ; 0规定
了取值范围,或者值的个数,则可以确立一个有效等价类和两个无效等价类,例如: 数据范围是1~50 有效等价类为“>=1&&<=50” 两个无效等价类为“<1”和“>50” 2.2.1确立等价类的原则 (3)2.2.1确立等价类的原则 (3)③如果输入条件是一个布尔量,则可以确立一个有效等价类和一个无效等价类 ④如果规定了输入数据的一组值,而且程序要对每一个输入值分别进行处理,这时要对每一个规定的输入值确立一个有效等价类,而对于这组值之外的所有值确立一个无效等价类 例:程序输入x取值于一个固定的枚举类型{1,3,7,15},且程序 中对这4个数值分别进行了处理,则有效等价类为x=1、x=3、 x=7、x=15,无效等价类为x≠1,3,7,15的值的集合。2.2.1确立等价类的原则 (4)2.2.1确立等价类的原则 (4)⑤如果规定了输入数据必须遵守的规则,则可以确立一个有效等价类(即遵守规则的数据)和若干无效等价类(从不同角度违反规则的数据),例如: 测试密码域,要求密码必须是数字或字母 有效等价类为“密码是数字和字母的组合”(还可以细分) 无效等价类为“密码包括中文”、“密码包括其它符号”等 ⑥如果确知已划分的等价类中的各元素在程序中的处理方式不同(例如字母还要区分大小写等),则应进一步划分成更小的等价类 2.2.2将等价类转化成测试用例2.2.2将等价类转化成测试用例等价类表等价类表等价类测试用例设计等价类测试用例设计针对是否对无效数据进行测试,可以将等价类测试分为 等价类测试和健壮等价类测试。 标准等价类测试——不考虑无效数据值,测试用例使用 每个等价类中的一个值。 健壮等价类测试——主要的出发点是考虑了无效等价类。对有效输入,测试用例从每个有效等价类中取一个值; 对无效输入,一个测试用例有一个“无效值”,其他值均取“有效值”。 健壮等价类测试存在两个问题: (1)需要花费精力定义无效测试用例的期望输出 (2)对强类型的语言没有必要考虑无效的输入,程序可以自己检测。2.3等价类划分实例2.3等价类划分实例保险费率计算 三角形 NextDate2.3.1保险费率计算2.3.1保险费率计算按照输入域划分等价类的例子。 某保险公司承担人寿保险,该公司保费计算方式为:保费=投保额*保险率,保险率依点数不同而有别,10点以上(含10点)费率为0.6%,10点以下费率为0.1% 点数的计算是年龄、性别、婚姻、抚养人数所得的点数的总和 输入:年龄、性别、婚姻、抚养人数 输出:保险率输入数据说明 输入数据说明 第一步:输入和输出变量确认第一步:输入和输出变量确认按照输入域划分等价类的例子。 输入:年龄、性别、婚姻、抚养人数 输出:保险率 等价类划分原则:按照输入变量来确认等价类(有效等价类和无效等价类)第二步:等价类划分第二步:等价类划分是否可以有更多无效等价类?第二步:等价类划分第二步:等价类划分第三步:设计测试用例第三步:设计测试用例按照输入域划分等价类的例子。 1、设计测试用例,尽可能的覆盖尚未覆盖的有效等价类。 (1)(8)(10)(12) (2)(9)(11)(13) (3)(8)(10)(14) 2、设计测试用俐,使得每一个新设计的测试用例只包含一个无效等价类,其他的选择有效等价类。 (4)(8)(10)(12) (5)(9)(11)(13) (6)(8)(10)(14) (7)(8)(10)(14) (1)(8)(10)(15) (2)(9)(11)(16) (3)(8)(10)(16) 说明:在设计无效部分的测试用例的时候,有效等价类部分,可以任意选择。第四步:选取测试用例第四步:选取测试用例思考思考1、是否可以按照输出域来设计测试用例? 2、按照输入域设计的结果和按照输出域设计的结果会有何不同? 2.3.2三角形问题的等价类测试用例 2.3.2三角形问题的等价类测试用例第一步:划分等价类 R1={:有三条边a、b和c的等边三角形} R2={:有三条边a、b和c的等腰三角形} R3={:有三条边a、b和c的不等边三角形} R4={:三条边a、b和c不构成三角形} 第二步:选取测试用例 三角形问题的弱健壮等价类测试用例三角形问题的弱健壮等价类测试用例三角形问题的强健壮等价类测试用例三角形问题的强健壮等价类测试用例三角形问题的另一种等价类划分三角形问题的另一种等价类划分 D1 = {: a = b = c } D2 = {: a = b,a≠c } D3 = {: a = c,a≠b } D4 = {: c = b,a≠c } D5 = {: b ≠ a ≠ c } D6 = {:a≥b+c } D7 = {:b≥a+C } D8 = {:c≥a+b } 2.3.3NextDate函数的等价类测试用例2.3.3NextDate函数的等价类测试用例确定等价类: 无效等价类: M2 = {月份:月份<1} M3 = {月份:月份>12} D2 = {日期.:日期<1} D3 = {日期:日期>31} Y2 = {年:年<1812} Y3 = {年:年>2012}有效等价类: M1 = {月份:1≤月份≤12} D1 = {日期:1≤日期≤31} Y1 = {年:1812≤年≤2012} NextDate函数的弱一般等价类测试用例NextDate函数的弱一般等价类测试用例NextDate函数的弱健壮等价类测试用例NextDate函数的弱健壮等价类测试用例NextDate函数的强健壮等价类测试用例NextDate函数的强健壮等价类测试用例NextDate函数的等价类另一种划分法NextDate函数的等价类另一种划分法M1 = {月份:每月有30天} M2 = {月份:每月有31天} M3 = {月份:此月是2月} D1 = {日期:1≤日期≤28} D2 = {日期:日期=29} D3 = {日期:日期=30} D4 = {日期:日期=31} Y1 = {年:年=1900} Y2 = {年:年是闰年} Y3 = {年:年是平年}弱一般等价类测试用例弱一般等价类测试用例强一般等价类测试用例强一般等价类测试用例测试用例的个数: M×D×Y = 3 * 4 * 3 = 36 指导方针和观察 指导方针和观察 等价类测试的弱形式(一般或健壮)不如对应的强形式的测试全面。 如果实现语言是强类型的(无效值会引起运行时错误),则没有必要使用健壮形式的测试。 如果错误条件非常重要,则进行健壮形式的测试是合适的。 如果输入数据以离散值区间和集合定义,则等价类测试是合适的。当然也适用于如果变量值越界系统就会出现故障的系统。 通过结合边界值测试,等价类测试可得到加强。 如果程序函数很复杂,函数的复杂性可以帮助标识有用的等价类,就像NextDate函数一样。 强等价类测试假设变量是独立的,相应的测试用例相乘会引起冗余问题。如果存在依赖关系,则常常会生成“错误”测试用例,就像NextDate函数一样。 在发现“合适”的等价关系之前,可能需要进行多次尝试,就像NextDate函数例子一样。在其他情况下,存在“明显”或“自然”等价关系。如果不能肯定,最好对任何合理的实现进行再次预测。 作业1作业1作业2作业2现在要对一个自动饮料售货机软件进行黑盒测试,该软件的规格说明如下: 一个自动售货机软件可以销售单价1元5角的盒装饮料。该售货机只接收1元和5角两种硬币,若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,则送出相应的饮料;若投入的硬币少于1元5角,则显示错误信息并退出硬币;若投入的硬币多于1元5角,则送出饮料的同时退还多余的硬币。 请给出测试的等价划分类,包括有效等价类和无效等价类,以及基于等价类划分的测试用例作业3作业3某一Pascal语言版本规定: 标识符是由字母开头,后跟字母或数字的任意组合构成。有效字符数为8个,最大字符数为80个 标识符必须先声明,后使用 在同一说明语句中,标识符至少必须有一个 要求:用等价类划分的方法,列出输入域等价类表,并设计相应的测试用例作业4作业4Windows文件名可以包含除了\/:*?”<>|之外的任意字符。假设合法的文件名长度1-255个西文字符,试用等价类划分法设计Windows文件名的测试用例(不考虑一个文件名包含两个或两个以上非法字符的情况)。作业5作业5作业6作业6 给出一个输出集合等价类划分的例子。假设一个销售书籍的奖励系统,销售三种软件工程类书籍,每本书的单价不同,《软件测试》每本25元;《程序设计》每本30元;《软件工程》每本40元。每月销售额不到(含)500元的部分奖励10%,500(不含)到700元(含)元的部分为15%,超过7000元的部分为20%。该系统生成月份销售,汇总售出的各类书籍的总数,总销售额以及奖金。nullnullnullnullnull3.决策表3.决策表3.1决策表3.1决策表是分析和表达多逻辑条件下执行不同操作情况的工具 在一些数据处理问题当中,某些操作的实施依赖于多个逻辑条件的组合,即:针对不同逻辑条件的组合值,分别执行不同的操作。决策表很适合处理这类问题。例如:“阅读指南”决策表例如:“阅读指南”决策表规则选项3.2决策表的四个组成3.2决策表的四个组成条件桩 条件条目(条件项) 动作桩 动作条目(动作项)决策表决策表不关心 条目3.3建立判定表的步骤3.3建立判定表的步骤确定规则的个数(有n个条件就有2n个规则) 列出所有条件桩、动作桩 填入条件项 填入动作桩、动作项 化简决策表的合并决策表的合并若表中有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系,可设法将其合并。三角形问题的决策表三角形问题的决策表测试用例测试用例NextDate函数的决策表-第一次尝试NextDate函数的决策表-第一次尝试M1 = {月份:每月有30天} M2 = {月份:每月有31天} M3 = {月份:此月是2月} D1 = {日期:1≤日期≤28} D2 = {日期:日期=29} D3 = {日期:日期=30} D4 = {日期:日期=31} Y1 = {年:年是闰年} Y2 = {年:年是平年}缺点缺点256条规则 扩展条目决策表扩展条目决策表——第二次尝试扩展条目决策表——第二次尝试M1 = {月份:每月有30天} M2 = {月份:每月有31天} M3 = {月份:此月是2月} D1 = {日期:1≤日期≤28} D2 = {日期:日期=29} D3 = {日期:日期=30} D4 = {日期:日期=31} Y1 = {年:年=2000} Y2 = {年:年是闰年} Y3 = {年:年是平年}第二次尝试决策表第二次尝试决策表第三次尝试第三次尝试M1 = {月份:每月有30天} M2 = {月份:每月有31天,12月除外} M3 = {月份:此月是12月} M4 = {月份:此月是2月} D1 = {日期:1≤日期≤27} D2 = {日期:日期=28} D3 = {日期:日期=29} D4 = {日期:日期=30} D5 = {日期:日期=31} Y1 = {年:年是闰年} Y2 = {年:年是平年}null第三次尝试决策表第三次尝试决策表第三次尝试决策表精简第三次尝试决策表精简NextDate函数的决策表测试用例NextDate函数的决策表测试用例决策表适用范围决策表适用范围总结因为决策表具有逻辑严格性,所以在所有功能性测试方法中,这种方法是最严格的。 决策表最突出的优点是,能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏 利用决策表能够设计出完整的测试用例集合 运用决策表设计测试用例可以将条件理解为输入,将动作理解为输出作业1作业1作业2作业2作业3作业34.因果图4.因果图 Cause Effect Graphing4.1因果图4.1因果图因果图法产生的背景: 等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。 因果图法能够帮助测试人员按照一定的步骤,高效率的开发测试用例,以检测程序输入条件的各种组合情况,它是将自然语言转化为形式语言规格说明的一种严格方法,可以指出规格说明存在的不完整性和二义性。因果图法介绍因果图法介绍因果图法是基于这样的一种思想:一些程序的功能可以用判定表(或称决策表)的形式来表示,并根据输入条件的组合情况规定相应的操作。即:因果图法不过是决策表法的前期阶段。我们也可以直接应用决策表。 因果图法的定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。因果图的基本符号因果图的基本符号原因结果ci和ei均可取值0或1,0表示某状态出现,1表示某状态不出现因果图中使用4种因果关系符号来表达因果关系:因果图的基本符号因果图的基本符号因果图中的4种基本关系 在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。 恒等:若 c1 是1,则 e1 也为1,否则 e1 为0。 非:若 c1 是1,则 e1 为0,否则e1为1。 或:若 c1 或 c2 或 c3 是1,则 e1 为1,否则 e1 为0。 与:若 c1 和 c2 都是1,则 e1 为1,否则 e1 为0。 约束符号(1)约束符号(1)因果图中用来表示约束关系的约束符号:a、b至多有一个可能为1 不能同时为1a、b、c至少有一个必须为1 不能同时为0a、b必须有一个 且仅有一个为1a为1时b必须为1结果a是1,则结果b强制为0约束符号(2)约束符号(2)因果图中的约束 在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件之间的约束有E(Exclusive or)、I(In)、O(Only)、R(Request)四种约束,对于输出条件的约束只有M(Mandate)约束。 (1)原因与原因之间的约束 E约束(异):输入a和b中最多有一个可能为1,即a和b不能同时 为1。 I 约束(或):输入a、b、c中至少有一个必须为1,即 a、b、c不能同时为0。 O约束(唯一):输入a和b必须有一个且仅有一个为1。 R约束(要求):输入a是1时,输入b必须是1,即a为1时,b不能为0。 (2)结果与结果之间的约束 M约束(强制):若结果a为1,则结果b强制为0。4.2因果图生成测试用例的步骤4.2因果图生成测试用例的步骤分析程序规格说明中哪些是原因,哪些是结果。原因常常是输入条件或输入条件的等价类;结果是输出条件。 根据语义连接原因和结果 标明约束条件 因果图转换成判定表 把判定表每一列写成测试用例画因果图例1例1某软件说明书的一个要求: 第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。nullStep1:列出原因和结果Step2:画因果图nullStep3:加约束条件nullStep4: 建立判定表不可能出现 应排除例2(中国象棋走马下法)例2(中国象棋走马下法)以中国象棋中马的走法为例子,具体说明: 1、如果落点在棋盘外,则不移动棋子; 2、如果落点与起点不构成日字型,则不移动棋子; 3、如果落点处有自己方棋子,则不移动棋子; 4、如果在落点方向的邻近交叉点有棋子(绊马腿),则不移动棋子; 5、如果不属于1-4条,且落点处无棋子,则移动棋子; 6、如果不属于1-4条,且落点处为对方棋子 (非老将) ,则移动棋子并除去对方棋子; 7、如果不属于1-4条,且落点处为对方老将,则移动棋子,并提示战胜对方,游戏结束。 请绘制出因果图和判定表,并给出相应的测试用例。课堂练习(中国象棋走马下法)课堂练习(中国象棋走马下法)第一步:分析原因和结果 原因: 1、落点在棋盘外; 2、不构成日字; 3、落点有自方棋子; 4、绊马腿; 5、落点无棋子; 6、落点为对方棋子; 7、落点为对方老将。 结果: 21、不移动; 22、移动; 23、移动己方棋子消除对方棋子; 24、移动并战胜对方。课堂练习(中国象棋跳马下法)课堂练习(中国象棋跳马下法)第二步:画出因果图 可以判定程序中应该包括12个函数或方法课堂练习(中国象棋走马下法)课堂练习(中国象棋走马下法)第三步:转换成判定表 作业1作业1自动售货机问题 给出因果图,由因果图画出决策表,并给出测试用例作业2作业2某软件的一个模块的需求规格说明书中描述: (1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。 (2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。 请绘制出因果图和判定表,并给出相应的测试用例。
/
本文档为【Ch3功能性测试】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索