测试用例设计相关知识
三、测试用例设计
1.测试用例
①测试用例的定义:设计一种情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期结果。
②测试用例模板:测试模块、用例编号、用例描述、用例名称、测试步骤、输入数据、预期结果。测试结果、测试人、备注。
标识符(用例编号):一般编号规则:TsetCase_项目名称_模块名称_功能名称_0001
测试项:测试用例的测试目的,一般情况下,用一句话表明目的.
依赖用例:一般功能流程上,下游的功能测试依赖于上游的功能测试的用例。
测试步骤:用最朴实的语言,写出来软件的操作步骤,要尽量详细。
测试数据:单独整合测试数据,必须和测试步骤中的数据保持一致。
预期结果:准确、对象的准确性,内容的准确性。原则上每一个操作都要有一个结果,在重要的步骤之后,设定预期结果。一般和测试目的密切相关!!!测试的目的决定了测试步骤和预期结果。
测试结果:要求在测试执行完成后添加,没有执行保持为空。测试结果只有两个(通过或失败,Pass/Failed)。和预期结果一致则为通过,不一致即为失败。
测试人:测试的执行人。
备注:为了测试用例正常执行而做的特殊准备。
③用例设计和编写的作用:
有效性:测试用例是测试人员测试过程中最重要的参考依据。
可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
可评估性:测试用例的通过率是检验代码质量的保证。
可管理性:测试用例也可作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的标准。
④测试用例设计和编写注意:
杀虫剂效应:一个发现过缺陷的测试用例,就相当于杀虫剂,会产生抗药性,则需要“更强的杀虫剂”,也就是新的测试用例(与之前的用例中数据类型保持一致)进行重新测试。
集群效应:一个测试用例发现bug,则需要在这个测试用例模块进行深入测试,也许会发现更多的缺陷。
2.黑盒测试用例设计方法
测试数据选择:等价类划分法、边界值分析法
测试步骤选择:因果图法、判定表法、正交实验法、功能图法、场景法
①等价类划分法
原理:将程序的输入域划分为若干个部分,然后从每个部分中选取代表性数据作为测试用例。每一类代表性数据在测试中的作用等价于这一类中的其他值,如果某一类的一个例子发现了错误,则其他例子也可能会发现同样的错误,反之亦然。
原则:
#在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。
例:一个文本框规定,输入字符个数为6~18位。
一个有效等价类:范围内个数
两个无效等价类:小于6;大于18个
#在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。
例:请输入11位的手机号。
一个有效等价类:11位就是有效
一个无效等价类:不是11位就是无效
#布尔量:表示“真”或“假”,真就是有效,假就是无效
#在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
例:登录中要输入用户名和密码
一个无效等价类:用户名和密码不匹配,可再分类
n个有效等价类:用户名和密码 都要对,可划分为n个
#在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
例:用户名要求6~18,由字母、数字、下划线组成;字母区分大小写,以大写字母开头
#在确知已划分的等价类中,各元素在程序处理中的方式中的方式不同的情况下,则应再将该等价类进一步地划分为更小地等价类。
②边界值分析法
原理:如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。分析规格说明,找到其他可能的边界条件 。
边界值只是一个特定的数据。例如,文本框输入6~18位字符。
边界值有:
1)6个字符
2)18个字符
次边界:边界附近的值,按照系统规定的单位或者计算方式,一个数据的差异。
思考:
1)6≤X≤12,请问X的边界值要取哪几个值进行测试?
答:无效:5,13 有效:6,7,11,12
2)6<X<12,请问X的边界值要取哪几个值进行测试?
答:无效:6,12 有效:7,8,10,11
3)文本框输入字符的个数要求是不大于150字。测试的时候如何选择边界值。
答:空,1,149,150,151
例子:一个程序读入3个整数,把这3个数值看作一个三角形的3条边的长度值。这个程序会给出弹窗提示信息,说明这个三角形是普通的、是等腰的、是直角的,还是等边的,以及相应的错误提示信息。
三角形判断:
构成三角形:任意两边之和大于第三边;a+b>c a+c>b c+b>a
直角三角形:b²+c²=a²
等腰三角形:a=b且a+b>c
等边三角形:a=b=c
钝角三角形:有且仅有一个角大于90°;b²+c²<a²
锐角三角形:三个角都是锐角;b²+c²>a²
四边形判断:任意三边之和大约第四边。平行四边形;菱形
五边形判断:有没有特殊形状,如果有,如何判断?
③因果图法
原理:因果图法是一种适合于描述对于多种输入条件组合的测试方法,适合于检查程序输入条件设计的各种组合情况。根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例。
方法:
第一步:根据功能说明书规定的原因和结果之间的关系画出因果图。
1)恒等。原因A成立,结果B一定成立。
2)非。原因A成立,结果B不一定成立。
3)或。原因A、B、C只要有一个成立,结果D就一定成立。
4)与。原因A、B、C都成立时,结果D才成立。
第二步:根据功能说明在因果图上添加一些约束关系。
原因之间的约束:(假如原因成立用1表示,不成立用0表示,有原因A、B、C)
1)互斥(Exclusive)。A+B+C≤1
2)包含(Include)。A+B+C≥1
3)唯一(Only)。A/B/C=1
4)要求(Request)。原因B成立,要求原因A一定要先成立。若A=1,则B=1
结果之间的约束:
1)屏蔽(Mask)。结果之间出现A结果,B结果一定不出现。
案例分析:有一个饮料自动售货机(处理单价为5角钱)的控制处理软件,它的规格说明如下。若投入5角钱的硬币,按下“橙汁”或“啤酒”的按钮,则相应的饮料就送出来,若投入1元钱的硬币,同样也是按“橙汁”或“啤酒”的按钮,则自动售货机在送出相应饮料的同时退回5角钱的硬币。
阅读合分析功能说明书,识别出“原因”和“结果”,并加以编号。
分析原因和结果:
画出因果关系图(部分):
根据需求描述结果、原因之间的约束:
因果图使用中的局限性:当原因和结果很多的时候,他们之间的关系连线就会很多,导致因果图的可读性变差。因此用作局部的小功能分析(原因和结果不是很多的时候)。
列出所有的原因和结果的列表,设计初步的测试用例步骤。
|
| Case1 | Case2 | Case3 | Case4 | Case5 | Case6 | Case7 | Case8 |
投币 | 投5角 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 |
投1元 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 1 | |
按钮 | 选橙汁 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
选啤酒 | 0 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | |
|
|
|
|
|
|
|
|
|
|
结果 | 出橙汁 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | 0 |
出啤酒 | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | |
找零5角 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | 0 |
因果图的优势在于能够发现设计中存在的不足。
经分析发现:
1)只选择饮料,没有投币的时候,软件没有出现任何结果。
2)只投币,没有选择饮料的时候,软件没有出现任何结果。
3)我们不能把软件缺陷设计成测试用例。
参考:
④判定表法
原理:是分析和表达多逻辑条件下执行不同操作的情况的工具。
1、应用场合:主要适用于多条件的内容组合与结果分析。
2、组成:由条件桩、动作桩、条件项、动作项四部分组成。
条件桩:列出了问题的所有条件。
动作桩:列出了问题可能采取的操作。
条件项:列出针对它左列条件的取值。
动作项:列出在条件项的各种取值情况下应该采取的动作。
3、使用的条件:所有的条件桩在表中的位置和顺序互相不影响;所有动作桩的顺序不会因为条件桩顺序的变化而产生不同。
4、实现的步骤
1)识别出操作条件(原因)和对应的动作(结果)
2)分析条件的条件项(组合数量):如果有n个条件,每个条件有成立和不成立两种情况,那么最后一共会有2∧n个数量
3)简化和优化结果。排除一些不可能存在的情况。
实例:
需求:订购单的检查。
如果金额超过500元,又未过期,则发出批准单和提货单;
如果金额超过500元,但过期了,则不发批准单;
如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。
(1)分析条件和动作
条件1 | 条件2 | 动作 |
金额>500 | 未过期 | 发出批准单和提货单 |
金额>500 | 过期 | 不发批准单 |
金额≤500 | 未过期 | 发出批准单和提货单 |
金额≤500 | 过期 | 发出批准单和提货单,提货单 |
金额超过500 | 超过500 | 1 | 1 | 0 | 0 |
不超过500 | |||||
时效(过期) | 过期 | 1 | 0 | 1 | 0 |
未过期 | |||||
动作 | 批准单 | 0 | 1 | 1 | 1 |
提货单 | 1 | 1 | 1 | 1 | |
通知单 | 1 | 0 | 1 | 0 |
(2)写出条件桩和动作桩、条件项和动作项:
(3)对判定表进行简化和优化(对其中不合理的或不合适的进行取舍)
不管金额的高低,只要未过期,就会发送批准单和提货单,所以优化之后,条件项就减少成为3个:(在测试za时间充足的情况下,可以选二者中其一进行测试,在测试时间充足的情况下,每一项都要测)
金额超过500 | 超过500 | 1 | 1 | 0 |
不超过500 | ||||
时效(过期) | 过期 | 1 | 0 | 1 |
未过期 | ||||
动作 | 批准单 | 0 | 1 | 1 |
提货单 | 1 | 1 | 1 | |
通知单 | 1 | 0 | 1 |
(4)将判定表中的每一列(条件项和对应的动作项)作为测试用例的数据和操作以及对应的预期结果。
测试用例的设计方法:没有哪一种方式是单独使用的。
1) 所有的软件,都是因为某种操作才会导致一定的结果。--考虑使用因果图
2) 所有的软件都有文本框。--必须使用等价类、边界值法。
判定表的实例题目:该判定表为一个杂志的阅读指南判定,指导读者能够良性阅读。
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
问题 | 觉得疲倦吗? | Y | Y | Y | Y | N | N | N | N |
感兴趣吗? | Y | Y | N | N | Y | Y | N | N | |
糊涂吗 | Y | N | Y | N | Y | N | Y | N | |
建议 | 重读 |
|
|
|
| √ |
|
|
|
继续 |
|
|
|
|
| √ |
|
| |
跳一下章 |
|
|
|
|
|
| √ | √ | |
休息 | √ | √ | √ | √ |
|
|
|
|
读完表格后,请对表格内容进行优化,将重复的内容去掉。并且说明原因。
1) 合并1、2、3、4为一项。在疲倦的情况下,一律休息即可。
2) 合并7、8为一项。在都不疲倦的情况下,不感兴趣就跳下一章。
问 题 | 觉得疲倦吗? | 1 | 0 | 0 | 0 |
感兴趣吗? |
| 0 | 1 | 1 | |
糊涂吗 |
|
| 1 | 0 | |
动 作 | 重读 |
|
| 1 |
|
继续 |
|
|
| 1 | |
跳一下章 |
| 1 |
|
| |
休息 | 1 |
|
|
|
⑤场景法
基本原理:现在的软件几乎都是用事件触发来控制流程的。测试时,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点。
备选流:除了基本流之外的各支流,包含多种不同的情况。
重点:
基本流(软件功能正确实现的流程)
备选流(基本功能流程之外的过程)
注意:
1. 场景中必须有基本流
2. 场景中必须有内容从用力开始,到用例的结束。
#案例:ATM机的取款流程
基本流:
⚪ 基本流:插卡-输入密码-选择取款服务-取款金额-出钞=取卡
⚪ 备选流:
1卡片不是银行卡
2卡片不是银联的卡
3密码输错一次
4密码输错两次,第三次输入正确
5密码输入错误三次,冻结账号或者吞卡
6选择存款服务
7选择查询服务
8选择转账服务
9选择修改密码服务
10选择取款金额
11选择其他金额
12 ATM机没钱了
13账户取款金额达到取款机的当日取款上限
⚪ 场景设计:
场景1:基本流
场景2:基本流 备选流5
场景3:基本流 备选流4
场景4:基本流 备选流1
场景5:基本流 备选流2备选流4
..........
⚪ 设计测试用例:
每一个场景,都是一个测试用例。
以场景5为例:设计步骤,假定ATM只能识别银联卡(用一个万事达卡先进行插入)
1. 插卡(先用万事达卡)
2. 换卡(银联卡),插卡
3. 输入密码(第一次输入错误)
4. 再次输入密码(第二次输入错误)
5. 第三次输入密码(输入正确)
6. 选择服务-取款
7. 选择取款金额-500
8. 等待出钞
9. 取卡
⚪为用例步骤设计数据
⑥正交实验法
1、日本的统计学家提出的
2、使用的工具:正交表
3、统计和分析实验数据,从大量实验中找到合适的实验数据组合。(原本用于工业生产的数据组合与实验室的数据挑选。)
4、正交实验法的本质:大量的实验中,挑选出来一部分具有代表性的点,进行试验,分析数据。
5、数学原理:《线性代数》《数理统计》《概率论》
6、核心概念:
1)影响实验结果的——实验因素(因子)、因素
2)每一个因素的不同取值(状况)——水平
例如,字的显示效果——字体、字号、颜色,称为因素
字体选择时,可以选择宋体、楷体、微软雅黑、隶书....称为水平(212个)
字号选择时,一号....称为水平(100个)
颜色选择时,.....称为水平(256)
测试字的显示效果将会有:212×100×256=5,427,200
3)正交表特点:每一列中,同一数字(水平)出现次数相等;任意两列组成的数字对(水平)出现的次数也是相同的。
7、实施步骤:
1)分析所有对结果有影响的因素。从多个角度和方式进行分析(不要放过文本框、按钮等需求中提及或者没有提及)
2)分析每个因素的水平数量。充分利用等价类、边界值(需求中说明和未说明的都要分析)
3)选择正交表。只有特定的因素数和水平数的组合才有对应的正交表。所以在现实中用到的时候,找最贴近的正交表(正交表的因素数和水平数一般要大于实际的因素数和水平数)
①正交表的数字关系。N代表需要进行实验次数,m代表水平数,k因素的数量。这三个数字之间没有任何数学关系。
②仅适合用于每一个因素的水平数都相同的正交表。
8、小案例:
因素 | 操作方式 | 温度(℃) | 洗涤时间(min) |
| Ⅰ | 60 | 15 |
| Ⅱ | 80 | 20 |
| Ⅲ | 100 | 25 |
完全排列组合:3*3*3=27
每一列中,同一个数字出现的次数相等。(3次)
任意两列中,同一个数字对出现的次数相等。(1次)
9.案例
因素 | 辅助瞄准 | 单发狙开火模式 | 左右探头射击 | 探头自动开镜 | 枪口顶墙提示 | ***枪开火模式 | 探头射击模式 |
| 开 | 按下开火 | 开 | 开 | 开 | 按下开火 | 点击侧身 |
| 关 | 松手开火 | 关 | 关 | 关 | 松手开火 | 按住侧身 |
使用小工具完成正交实验设计:(L8_2_7:二水平,七因素)
⑦功能图法(状态迁徙图法)
1、使用场合:软件的状态会根据某些内容、条件、操作的变化而变化。
2、目标:尽可能覆盖软件的状态、状态-条件的组合、状态变迁路径。
3、步骤:
1)识别和列举所有的输入(操作)事件。以IP N(input) (N=1,2,3)
2)定义空闲状态(初始状态)。一般以软件刚启动时打开的界面状态为空闲 状态。
3)为空闲状态加操作(只加一次)
4)为第3)步所产生的新状态加操作(只加一次,并且曾经加过的操作,不再重复添加)
5)循环为所有的新增状态加操作,直到没有新状态产生为止。
6)组合任意的状态,以列表的形式展现,设计和编写测试用例。
4、小案例:
1)识别出可以进行的操作:
IP1:输入账号
IP2:输入密码
IP3:点击登录
IP4:点击关闭按钮
2)定义QQ登录界面为 空闲 状态。
3)给空闲状态加操作。
第一轮分析后:
产生了新的状态。针对新的状态进行分析(第二轮):
得到一个新的状态。所以继续进行新的分析(第三轮):
虽然得到了一个全新的界面(状态),但是和空闲状态发生了“隔断”,因此将其视为空闲状态的结束。可以结束分析过程。
4)将状态变化过程列表化,准备设计测试用例。
状态名/序号 | A | B | C | D |
空闲 | 1 | 1 | 1 | 1 |
QQ号已输入 |
| 2 |
| 2 |
密码已输入 |
|
| 2 |
|
QQ号、密码已输入 |
|
|
| 3 |
QQ主界面 |
|
|
| 4 |
退出 | 2 | 3 | 3 |
|
设计用例的时候:
①A列:从QQ的登陆界面,直接点击关闭按钮,QQ登录退出。
②D列:从QQ的登录界面,先输入QQ号(状体变为QQ号已输入);再输入密码(状态变为QQ号、密码已输入),点击登录,状态就会变为QQ主界面。
③B列:(略)
⑧其他用例设计方法
1、测试大纲法。
1)特点:着眼于需求。进行详细的需求分析,将其转化为思维导图(树形结构)
2)无需用例设计。一般从根节点开始分析,到叶结点为止。这样的一条路径就是一条测试用例。
3)一般用于快速的测试和过程记录。用例一般进行候补。
2、探索性测试
1)基于经验和直觉
2)是计划内测试用例设计的补充
3)探索性测试执行前也需要设计测试用例
3、猴子测试法(随意测试)
1)没有测试用例(无意识的行为)
2)缺点:测试往往不太真实,不能达到一定的覆盖率,许多测试都是冗余的,想要重复操作及其困难
3.用例设计方法综合选择
软件测试工程师面试如何应对测试用例设计方法?
首先明确用例设计方法都有哪些?
1、等价类划分法
2、边界值分析法
3、因果图法
4、判定表法
5、场景法
6、正交实验法
7、状态迁徙图法(功能图法)
如何使用呢?记住方法的名称很简单,但是如何使用却是一个大问题:如何使用。用例设计方法的使用不是孤立存在的,而是存在于一个项目中!
不对缺陷做测试用例!!!
所有测试用例的设计方法。没有独立使用的,都是融合在一起使用。往往在一个软件界面中,都可以受用好几种测试用例设计方法。
正交实验法是一种极其特殊的用例设计方法。一般在含参数、设置的界面才适合用。
#话题测试##学习路径#