测试用例八大设计方法和实例.docx
- 文档编号:26044047
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:30
- 大小:332.21KB
测试用例八大设计方法和实例.docx
《测试用例八大设计方法和实例.docx》由会员分享,可在线阅读,更多相关《测试用例八大设计方法和实例.docx(30页珍藏版)》请在冰豆网上搜索。
测试用例八大设计方法和实例
测试用例八大设计方法和实例
测试用例设计方法
1等价类划分
1.1理论知识
等价类划分是一种典型的黑盒测试方法。
这一方法完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭示程序中的错误都是等效的。
等价类合理地假设:
某个等价类的代表值,与该等价类的其他值,对于测试来说是等价的。
因此,可以把全部的输入数据划分成若干的等价类,在每一个等价类中取一个数据来进行测试。
这样就能以较少的具有代表性的数据进行测试,而取得较好的测试效果。
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例.该方法是一种重要的,常用的黑盒测试用例设计方法.
1)分类:
划分等价类:
等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:
测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:
有效等价类和无效等价类.
有效等价类:
是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能.
无效等价类:
与有效等价类的定义恰巧相反.
设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性.
2)划分等价类的方法:
下面给出六条确定等价类的原则:
①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类.
②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类.
③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类.
④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类.
⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则).
⑥在确知已划分的等价类中各元素在程序处理
输入的检查,往往会屏蔽对于其他错误输入的检查。
因此,必须针对每一个无效等价类分别设计测试用例
1.2实例
1、保险费率计算
人人保险公司承担人寿保险已有多年历史,该公司保费计算方式为投保额*保险率,保险率又依点数不同而有别,10点以上费率为0.6%,10点以下费率为0.1%:
输入数据说明
年龄
20~39岁
6点
40~59岁
4点
60岁以上20岁以下
2点
性别
MALE
5点
FEMALE
3点
婚姻
已婚
3点
未婚
5点
扶养人数
一人扣0.5点最多扣3点(四舍五入取整数)
一、分析输入数据型式。
年 龄:
一或两位数字。
性 别:
以英文「Male」、Female」、「M」、「F」表示。
婚 姻:
「已婚」、「未婚」。
扶养人数:
空白或一位数字。
保险费率:
10点以上,10点以下。
二、划分输入数据
1.年龄
数字范围
1~99
等价类
20~39岁
40~59岁
60岁以上20岁以下
2.性别
类型
英文字之集合
等价类
类型:
英文字
集合:
「Male」、「M」
集合:
「Female」、「F」
3.婚姻
等价类
已婚
未婚
4.扶养人数
选择项
扶养人数可以有,也可没有
范围
1~9
等价类
空白
1~6人
6人以上
5.保险费率
等价类
10点以上
10点以下
三、设计输入数据。
有效等价类
无效等价类
无效等价类
1.年龄
20~39任选一个
2.年龄
40~59任选一个
3.年龄
60岁以上、20岁以下任选一个
小於1,选一个
大於99,选一个
4.性别
英文Male,M,F,Female任选一个
非英文字如「男」
5.性别
英文Male,M任选一个
非Male,M,Female,F之任意字元,如「Child」
6.性别
英文Female,F任选一个
非Male,M,Female,F之任意字符,如「Child」
7.婚姻
「已婚」
非「已婚」或「未婚」之任意字符,如「离婚」
8.婚姻
「未婚」
非「已婚」或「未婚」之任意字符,如「离婚」
9.扶养人数
空白
10.扶养人数
1~6
小於1,选一个
11.扶养人数
7~9
大於9,选一个
12.保险费率
10点以上(0.6%)
13.保险费率
10点以下(0.6%)
四、根据以上分析设计测试用例:
用例编号
年龄
性别
婚姻
扶养
人数
保险
费率
备注
1.
27
Female
未婚
空白
0.6%
有效
⏹年龄:
20~39岁
⏹性别:
集合「Female,F」
⏹婚姻:
集合「未婚」
⏹扶养人数:
空白
⏹保险费率:
0.6%
2.
50
Male
已婚
2
0.6%
有效
⏹年龄:
40~59岁
⏹性别:
集合「Male,M」
⏹婚姻:
集合「已婚」
⏹扶养人数:
1~6人
3.
70
F
未婚
7
0.1%
有效
⏹年龄:
60岁以上或20岁以下
⏹性别:
集合「Female,F」
⏹婚姻:
集合「未婚」
⏹扶养人数:
6人以上
4.
0
M
已婚
4
无法
推算
年龄类无效,因此无法推算保险费率
5.
100
Female
未婚
5
无法
推算
年龄类无效,因此无法推算保险费率
6.
1
男
已婚
6
无法
推算
性别类无效,因此无法推算保险费率
7.
99
Child
未婚
1
无法
推算
性别类无效,因此无法推算保险费率
8.
30
Male
离婚
3
无法
推算
婚姻类无效,因此无法推算保险费率.
9.
75
Female
未婚
0
无法
推算
扶养人数类无效,因此无法推算保险费率
10.
17
Male
已婚
10
无法
推算
扶养人数类无效,因此无法推算保险费率
2边界值分析法
2.1理论知识
边界值分析方法是对等价类划分方法的补充,也是一种黑盒测试方法,适度等价类分析方法的一种补充,由长期的测试工作经验得知,大量的错误是发生在输入或输出的边界上。
因此针对各种边界情况设计测试用例,可以查出更多的错误。
(1)边界值分析方法的考虑:
长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是发生在输入输出范围的内部.因此针对各种边界情况设计测试用例,可以查出更多的错误.
使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据.
(2)基于边界值分析方法选择测试用例的原则:
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据.
2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据.
3)根据规格说明的每个输出条件,使用前面的原则1).
4)根据规格说明的每个输出条件,应用前面的原则2).
5)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例.
6)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例.
7)分析规格说明,找出其它可能的边界条件.
2.2实例
找零钱最佳组合
假设商店货品价格(R)皆不大于100元(且为整数),若顾客付款在100元内(P),求找给顾客之最少货币个(张)数?
(货币面值50元(N50),10元(N10),5元(N5),1元(N1)四种)
一、分析输入的情形。
R>100
0 R<=0 P>100 R<=P<=100 P 二、分析输出情形。 N50=1 N50=0 4>N10>=1 N10=0 N5=1 N5=0 4>N1>=1 N1=0 三、分析规格中每一决策点之情形,以RR1,RR2,RR3表示计算要找50,10,5元货币数时之剩余金额。 R>100R<=0 P>100 P RR1>=50 RR2>=10 RR3>=5 四、由上述之输入/输出条件组合出可能的情形。 R>100 R<=0 0 0 0 0 0 0 0 0 0 0 五、为满足以上之各种情形,测试资料设计如下: 1.货品价格=101 2.货品价格=0 3.货品价格=-1 4.货品价格=100,付款金额=101 5.货品价格=100,付款金额=99 6.货品价格=50,付款金额=100 7.货品价格=51,付款金额=100 8.货品价格=90,付款金额=100 9.货品价格=91,付款金额=100 10.货品价格=95,付款金额=100 11.货品价格=96,付款金额=100 12.货品价格=99,付款金额=100 13.货品价格=100,付款金额=100 3错误推测法 1、定义: 基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法. 2、错误推测方法的基本思想: 列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。 1) 例如,输入数据和输出数据为0的情况;输入表格为空格或输入表格只有一行。 这些都是容易发生错误的情况。 可选择这些情况下的例子作为测试用例。 2) 例如,前面例子中成绩报告的程序,采用错误推测法还可补充设计一些测试用例: I. 程序是否把空格作为回答 II. 在回答记录中混有标准答案记录 III. 除了标题记录外,还有一些的记录最后一个字符即不是2也不是3 IV. 有两个学生的学号相同 V. 试题数是负数。 3) 再如,测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况: I. 输入的线性表为空表; II. 表中只含有一个元素; III. 输入表中所有元素已排好序; IV. 输入表已按逆序排好; V. 输入表中部分或全部元素相同。 4因果图方法 4.1理论知识 前面介绍的等价类划分方法和边界值分析方法,都是着重考虑输入条件,但未考虑输入条件之间的联系,相互组合等.考虑输入条件之间的相互组合,可能会产生一些新的情况.但要检查输入条件的组合不是一件容易的事情,即使把所有输入条件划分成等价类,他们之间的组合情况也相当多.因此必须考虑采用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例.这就需要利用因果图(逻辑模型). 因果图方法最终生成的就是判定表.它适合于检查程序输入条件的各种组合情况. 利用因果图生成测试用例的基本步骤: (1)分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),并给每个原因和结果赋予一个标识符. (2)分析软件规格说明描述中的语义.找出原因与结果之间,原因与原因之间对应的关系.根据这些关系,画出因果图. (3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不不可能出现.为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件. (4)把因果图转换为判定表. (5)把判定表的每一列拿出来作为依据,设计测试用例. 从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加. 前面因果图方法中已经用到了判定表.判定表(DecisionTable)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确. 判定表通常由四个部分组成. 条件桩(ConditionStub): 列出了问题得所有条件.通常认为列出得条件的次序无关紧要. 动作桩(ActionStub): 列出了问题规定可能采取的操作.这些操作的排列顺序没有约束. 条件项(ConditionEntry): 列出针对它左列条件的取值.在所有可能情况下的真假值. 动作项(ActionEntry): 列出在条件项的各种取值情况下应该采取的动作. 规则: 任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列. 判定表的建立步骤: (根据软件规格说明) 1确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有种规则. 2列出所有的条件桩和动作桩. 3③填入条件项. 4④填入动作项.等到初始判定表. 5⑤简化.合并相似规则(相同动作). B.Beizer指出了适合使用判定表设计测试用例的条件: ①规格说明以判定表形式给出,或很容易转换成判定表. ②条件的排列顺序不会也不影响执行哪些操作. ③规则的排列顺序不会也不影响执行哪些操作. ④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则. ⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要. 4.2符号 4.3实例 4.3.1实例一 某软件规格说明中包含这样的要求: 第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。 但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。 分开原因和结果 原因: 1----第一列字符是A; 2----第一列字符是B; 3----第二列字符是一数字。 结果: 21----修改文件; 22----给出信息L; 23----给出信息M。 4.3.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、移动棋子,并提示战胜对方,结束游戏。 添加中间节点11,目的是作为导出结果的进一步原因,简化因果图导出的判定表 考虑结果不能同时发生,所以对其施加唯一约束O。 原因5、6、7不能同时发生,所以对其施加异约束E. 三、根据因果图建立判定表: (分为两表) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 原因 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 2 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 3 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 4 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 结果 11 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 21 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 用例 1 2 3 4 5 6 7 8 9 `0 11 12 13 14 15 16 原因 11 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 5 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 6 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 7 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 结果 22 0 0 1 0 0 0 0 23 0 0 0 0 1 0 0 24 0 0 0 0 0 0 1 用例 注: 1、以上判定表中由于表格大小限制没有列出最后所选的测试用例;2、第2表中部分列被合并表示不可能发生的现象;3、通过中间节点将用例的判定表简化为两个小表。 减少工作量。 四、根据判定表写测试用例表(略) 5路径覆盖 熟悉测试理论的人都知道,路径覆盖是白盒测试中一种很重要的方法,广泛应用于单元测试。 那么基于路径覆盖的分析方法是不是只能应用于单元测试呢,能不能将其推而广之呢。 一般而言,在单元测试中,路径就是指函数代码的某个分支,而实际上如果我们将软件系统的某个流程也看成路径的话,我们将可以尝试着用路径分析的方法来设计测试用例。 采用路径分析的方法设计测试用例有两点好处: 一是降低了测试用例设计的难度,只要搞清了各种流程,就可以设计出高质量的测试用例来,而不用太多测试方面的经验;二是在测试时间较紧的情况下,可以有的放矢的选择测试用例,而不用完全根据经验来取舍。 下面就具体的介绍一下如何用路径分析的方法编写测试用例。 首先是将系统运行过程中所涉及到的各种流程图表化,可以先从最基本的流程入手,将流程抽象成为不同功能的顺序执行。 在最基本流程的基础上再去考虑次要或者异常的流程,这样将各种流程逐渐细化,这样既可以逐渐加深对流程的理解,还可以将各个看似孤立的流程关联起来。 完成所有流程的图表化后就完成了所有路径的设定。 找出了所有的路径,下面的工作就是给每条路径设定优先级,这样在测试时就可以先测优先级高的,再测优先级低的,在时间紧迫的情况下甚至可以考虑忽略一些低优先级的路径。 优先级根据两个原则来选取: 一是路径使用的频率,使用越频繁的优先级越高;二是路径的重要程度,如果失败对系统影响越大的优先级越高。 将根据两个原则所分别得到的优先级相加就得到了整个路径的优先级。 根据优先级的排序就可以更有针对性的进行测试。 为每条路径设定好优先级后,接下来的工作就是为每条路径选取测试数据,构造测试用例。 一条路径可以对应多个测试用例,在选取测试数据时,可以充分利用边界值选取等方法,通过表格将各种测试数据的输入输出对应起来,这样就完成了测试用例的设计。 对于测试人员而言,测试用例的设计是一件非常困难的工作,而同时测试用例的设计好坏又直接关系到整个系统的设计质量。 本文介绍了一种更理论化的设计方法来尽量简化这种工作,将一般应用于单元测试的路径分析方法推广到集成测试、系统测试等后续测试过程中,希望能给大家一点启示。 6功能图 功能图方法是一种黑盒、白盒混合用例设计方法,是功能图FD形式化地表示程序的功能说明,并机器地生成功能图的测试用例。 功能图模型由状态
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 测试 八大 设计 方法 实例
![提示](https://static.bdocx.com/images/bang_tan.gif)