文章目录
1、什么是测试用例?2、测试用例模板和包含的内容3、设计测试用例的作用4、测试用例编写注意事项5、黑盒测试用例设计方法5. 1 等价类划分法5.2 边界值分析法5.3 因果图法5.4 判定表法5.5 场景法5.6 正交实验法5.7 功能图法5.8 其他用例设计方法5.9 用例设计方法综合选择1、什么是测试用例?
测试用例的定义:设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期结果。
用例按照测试分类:功能(Function)、界面(UI)、性能(Performance)、安全(Security)、接口(Interface)。
2、测试用例模板和包含的内容
测试用例一般用Excel表格制订,一般包括以下内容:
(1)标识符(用例编号):一般编号规则:TestCase项目名称_模块名称_功能名称_0001
(2)测试项:测试用例的测试目的。一般情况下,用一句话表明目的,简洁。例如:在QQ登录界面输入正确的用户名密码能登录上。表明你的测试模块、测试对象、方式、事件。测试项必须是确定的,不能写成:检查黑名单管理主界面的元素是不是齐全。测试项中最好不写目的产生的结果。测试项一般只写一个测试目的,测试目的必须是明确的,不能一次测试多个点。测试中,一个反向的(无效等价类的)测试数据,只要违反一个需求。
(3)依赖用例:一般功能流程上:下游的功能测试依赖于上游的功能测试的用例。例如:增加了一个数据的测试用例,将会被删除该数据的测试用例依赖。用例依赖可以跨越模块(A设计员可能回依赖B设计员的测试用例)。
(4)测试步骤:用最朴实的语言,写出软件的操作步骤。要尽量详细,表明操作的对象和方式、数据。例如:在用户名文本框输入:XXX,在省份下拉列表选择:广东,城市下拉列表选择:深圳。
(5)测试数据:单独整合测试数据。必须和测试步骤中的数据保持一致。没有数据,空着不写。例如输入要求不能为空,那么不输入就不行,那么在测试项中可以标注某一个内容为空,如果要对空格进行测试,建议不要将空格放在数据的最前面或者最后面,应该为(123 456)。
(6)预期结果:准确——对象的准确、内容的准确性。原则上每一个操作,都要有一个结果。在重要的步骤之后,设定预期结果。例如:页面跳转到XXX;程序弹出对话框,提示:用户名或密码错误,请重新输入!一般和测试目的密切相关。测试目的决定了测试步骤和预期结果。
(7)测试结果:要求在测试执行完成后添加。没有执行保持为空。测试结果只有两个:通过/失败(Pass/Failed)。和预期结果一致即为通过,否则为失败。
(8)测试人:测试的执行人,可以和设计者相同,也可以不同。
(9)备注:为了测试用例正常执行而做的特殊准备。例如:专门制造网络不畅情况,软件错误提示。
3、设计测试用例的作用
(1)有效性:测试用例是测试人员测试过程中的重要参考依据。
(2)可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
(3)易组织性: 即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
(4)可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
(5)可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的标准。
4、测试用例编写注意事项
(1)不要涉及“穷举测试用例”
(2)在详细测试用例与有效测试时间中找到平衡点
(3)好的测试用例应多关注“反向测试问题”
(4)测试用例库应该不断更新和维护
(5)测试用例可以复用,但要注意数据有效性与环境变化
(6)测试用例是设计出来的,不是写出来的
(7)多去学习经验丰富的测试工程师所设计的测试用例
(8)针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法
5、黑盒测试用例设计方法
黑盒测试用例设计方法概述
(1)测试数据选择:等价类划分法、边界值分析法
(2)测试步骤设计:因果图法、判定表法、正交实验法、功能图法、场景法
5. 1 等价类划分法
原理:把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例
确定等价类的原则:
(1)在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
例如:一个文本框规定输入字符个数为6~18位,一个有效等价类:范围内位数,两个无效等价类:小于6位以及大于18位
(2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类。例如:输入11位的手机号码,11位就是有效,不是11位就是无效
(3)在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。布尔量:表示“真”或“假”
(4)在规定了输入数据的一组值(假定n个),并且程序要求对每一个输入值分别处理的情况下,可确定n个有效等价类和一个无效等价类。例如:登陆中要输入用户名和密码。
(5)在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。例如:用户名要求6~18位,由字母、数字、下划线组成,字母区分大小写,以大写字母开头。
(6)在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步划分为更小的等价类
等价类划分法的步骤:
1、划分等价类和列出等价类表
(1)有效等价类
(2)无效等价类
2、确定测试用例
(1)为每个等价类规定一个唯一的编号
(2)设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖。
(3)设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。
5.2 边界值分析法
边界值只是一个特定的数据。例如,文本框需要输入6到18位字符,边界值有:6个字符和18个字符。
次边界:边界附近的值。按照系统规定的单位或计算方式,一个数据的差异。例如:ATM的取款和存款,最小单位是100元,只能是100的整数倍。
边界值的选择原则:
(1)如果输入条件规定了值的范围,则应该取刚达到这个范围的边界的值,以及刚刚超过这个范围边界的值作为测试输入数据。
(2)如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据。
(3)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
(4)如果程序中用了一个内部数据结构,则应选择这个内部数据结构边界尚的值作为测试用例。
5.3 因果图法
因果图法是一种适合描述对于多种输入条件组合的测试方法。根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法它适合于检查程序输入条件涉及的各种组合情况(1)原因和结果的关系
①恒等:原因a成立,结果b一定成立
②非:原因a成立,结果b一定不成立
③或:原因a、b、c三者只要有一个成立,结果d就一定成立
④与:原因a、b、c都成立,结果d才会出现
(2)原因之间的约束。假如原因成立用1表示,不成立用0表示。
①互斥(eclusive):也就是a+b+c<=1
②包含(include):也就是1<=a+b+c<=3
③唯一(only):a+b+c=1
④要求(request):原因a成立,要求b一定先成立
(3)结果之间的约束。假如结果成立用1表示,不成立用0表示。
①屏蔽(mask):结果之间a结果出现,b结果一定不出现,当你收到注册成功的提示,就一定不会收到数据填写错误的提示。
(4)因果图实例分析
案例:自动售卖机卖啤酒和橙汁,处理单价5角;投5角硬币,按下按钮,出饮料;投1元,按下按钮,出饮料,找零5角。
①分析原因和结果:
画出原因和结果之间的关系(部分关系):
按照需求描述原因、结果之间的关系:
因果图使用中的局限性:
当原因和结果很多的时候,他们之间的关系连线就回很多,导致因果图的可读性变差。因此用作局部的小功能(原因和结果不是很多的时候)分析。
列出所有的原因和结果的列表,设计初步的测试用例步骤:
情况:按下按钮“橙汁”,出橙汁。这种情况是一种bug,不能做测试设计。
因果图的优势在于能够发现设计中存在的不足。
经过分析发现:
①只选择饮料,没有投币的时候,软件没有任何结果。
②只投币,没有选择饮料的时候,软件也没有任何的结果。
③我们不能把软件的缺陷,设计成测试用例。
5.4 判定表法
判定表驱动法是分析和表达多逻辑条件下执行不通操作的情况的工具。它由以下几个内容组成:
①条件桩:列出了问题的所有条件。通常认为列出的条件的次序无关紧要。
②动作桩:列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
③条件项:列出针对它左列条件的取值。在所有可能情况下的真假值。
④动作项:列出在条件项的各种取值情况下应采取的动作。
❶应用场合:主要适用于多条件的内容组合与结果分析。
❷组成:由条件项、动作项、条件桩、动作桩四部分组成。
❸使用的条件:所有的条件桩在表中的位置和顺序互相不影响。所有动作桩的顺序不会因为条件顺序的变化而产生不同。
建立判定表的步骤:
第一步:先识别出操作条件(原因)和对应的动作(结果)
第二步:分析条件的条件项(组合数量):如果有n个条件,每个条件有成立和不成立两种情况,那么最后一共会有2^n个数量。
第三步:简化和优化结果,排除一些不可能存在的情况。
实例:订购单的检查
如果金额超过500元,又未过期,则发出批准单和提货单;如果金额超过500元,但过期了,则不发批准单;如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。
1、分析条件和动作
2、写入条件桩、动作桩、条件项、动作项:
3、对判定表进行简化和优化(对其中不合理或重复的进行取舍)
不管金额的高低,只要未过期,就会发送批准单和提货单。(在测试时间不充足的情况下,可以选二者中的一个情况进行测试,但在测试时间充足的情况下,每一个都要测试)。
所以优化之后,条件项就减少成为3个:
4、将判定表中的每一列(条件项和对应的动作项)作为测试用例的数据和操作以及对应的预期结果。
适合使用判定表设计测试用例的条件:
规格说明以判定表的形式给出,或很容易转换成判定表条件的排列顺序不影响执行操作(结果)规则的排列顺序不影响执行操作(结果)当某一规则的条件已满足, 并确定要执行的操作后,不必检验别的规则(即不管金额是否超过500,最后的结果都是发出批准单和提货单)。如果某一规则要执行多个操作,这些操作的执行顺序无关紧要。
注意:
测试用例的设计方法:没有哪一种方式是单独使用的。
①所有的软件都是因为某种操作才会导致一定的结果。-- 考虑使用因果图
②所有的软件都有文本框。-- 考虑使用等价类、边界值。
判定表的实例:
以下图表是一个杂志的阅读指南,指导读者良性阅读。读完表格后,请对表格内容进行优化,将重复的内容去掉,并说明原因。
①合并1、2、3、4为一项。在疲倦的情况下,一律休息。
②合并7、8为一项。在都不疲倦的情况下,不感兴趣就跳下一章。
简化后的判定表为:
5.5 场景法
场景法的原理:模仿用户的使用场景和使用行为方式,去触发软件各种情景。
基本流:软件功能正确实现的流程。通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点。
备选流:基本功能流程之外的过程。
注意:
1、场景中必须有基本流
2、场景中必须有内容从用例的开始,到用例的结束。
场景列表:
场景1 基本流场景2 基本流 备选流1场景3 基本流 备选流1 备选流2场景4 基本流 备选流3。。。。。。
案例:ATM机存取款
基本流:
包含了备选流的过程:
基本流:
插卡——输入密码——选择取款服务——选择取款金额——等待出钞——取出卡片
备选流:
1、卡片不是银行卡
2、卡片不是银联的卡
3、密码输错一次
4、密码输错两次,第三次输入正确
5、密码输入错误三次,账号冻结或者吞卡
6、选择存款服务
7、选择查询服务
8、选择转账服务
9、选择修改密码服务
10、选择取款金额
11、选择其他金额
12、账户金额
13、ATM机没钱了
14、账户取款金额达到取款机的当日取款上限
15、账户取款金额达到账户当日取款交易上限
16、取款机掉线了
17、取款机停电了
18。。。。。。
场景设计:
场景1:基本流
场景2:基本流 备选流5
场景3:基本流 备选流4
场景4:基本流 备选流1
场景5:基本流 备选流2 备选流4
。。。。。。
设计测试用例:
每一个场景,都是一个测试用例
以场景5为例,设计步骤:
假定ATM只能识别银联卡。(用地铁卡先进行插卡)
1、插卡(先用地铁卡)
2、换卡(银联卡),再进行插卡
3、输入密码(第一次输入错误)
4、再次输入密码(第二次输入错误)
5、第三次输入密码(输入正确)
6、选择服务——取款
7、选择取款金额——500
8、等待出钞
9、取卡
为用例的步骤设计数据
5.6 正交实验法
正交实验法的本质:从大量的实验组合中,挑选出来一部分具有代表性的点,进行试验,分析数据。
核心概念:
1、影响实验结果的——实验因素
2、每一个因素的不同取值(状况)——水平
例如,字的显示效果-- 字体、字号、颜色,称为因素。
字体选择时,可以选择宋体、楷体、微软雅黑–称为水平(212个水平)
字号选择时,可以选择4号、5.5号-- 称为水平(100个)
颜色选择时,可以选择红色、蓝色-- 称为水平(256个)
测试字的显示效果将会有:212100256=?
3、正交表:每列中不同数字(水平)出现的次数相等。任意两列组成的数字对(水平对)出现的次数也是相等的。
实施步骤:
1、分析所有对结果影响的因素,从多个角度和方式进行分析(不要放过文本框、按钮等需求中提及或者没有提及)
2、分析每个因素的水平数量。充分利用等价类、边界值(需求中说明和未说明的都要分析)
3、选择正交表。只有特定的因素数和水平数的组合才有对应的正交表。所以在现实中用到的时候,找最贴近的正交表(正交表的因素数和水平数一般都要大于实际的因素数和水平数)。
①n代表实验次数,m代表水平数,k代表因素的数量。这三个数字之间没有任何数学关系。
②仅适用于每一个因素的水平数都相同的正交表
案例:
完全排列组合:333=27
使用小工具(正交设计助手)完成正交实验的设计(L9_3_4:3水平,四因素,9次实验):
每一列中,同一个数字出现的次数相等(3次)(如A出现3次,60出现3次)
任意两列中,同一个数字对(如A 15数字对、60 15数字对)出现的次数相等(1次)
5.7 功能图法
功能图法又叫状态迁徙图。
使用场合:软件的状态会根据某些内容、条件、操作的变化而变化。
目标:尽可能覆盖软件的状态,状态-条件的组合、状态变迁路径。
以操作系统的进程调度算法为例:
步骤:
1、识别和列举所有的输入(操作)事件。以IP N(input)(N=1 2 3)
2、定义空闲状态(初始状态)。一般以软件启动时打开的界面状态为空闲状态
3、在“空闲”状态上加所有可能的输入(只加一次)
4、为第3步所产生的的新状态加操作(只加一次,并且曾经加过的操作,不再重复添加)
5、循环给所有的新增状态加操作,直到没有新状态产生为止
6、组合任意的状态,以列表的形式展现,设计和编写测试用例
小案例:
以QQ登录界面为例,说明功能的变迁
1、识别出可以进行的操作:
IP1:输入账号
IP2:输入密码
IP3:点击登录
IP4:点击关闭按钮
2、定义QQ登录界面为 空闲 状态
3、给空闲状态加操作。第一轮分析后:
产生了新的状态,针对新的状态进行分析(第二轮)
得到一个新的状态:QQ号、密码已输入。所以继续进行分析。
虽然得到了一个全新的界面(状态),但是和空闲状态发生了“隔断”,因此将其视为空闲状态的结束。可以结束分析过程。
4、将状态过程列表化,准备设计测试用例。
设计用例的时候:
①A列:从QQ的登录界面,直接点击关闭按钮,QQ登录退出
②D列:从QQ的登录界面,先输入QQ号(状态变为QQ号已输入);在输入密码(状态变为QQ号、密码已输入),点击登录,状态就会变为QQ主界面。
5.8 其他用例设计方法
1、测试大纲法:
①着眼于需求,进行详细的需求分析,将其转化为思维导图(树形结构)
②无需用例设计。一般从根节点开始分析,到叶节点位置,这样的一条路径就是一条测试用例。
③一般用于快速的测试和过程记录。用例一般进行后补。
2、探索性测试法:
基于经验和直觉。
是计划内测试用例设计的补充。
探索性测试执行前也需要设计测试用例。
3、猴子测试(随意测试):
没有测试用例(无意识的行为)
不能达到指定的覆盖度
想要重复操作,极其困难。
5.9 用例设计方法综合选择
首先明确用例设计方法都有哪些?
1、等价类划分法
2、边界值分析法
3、因果图法:如果程序的功能说明中含有输入条件的组合情况,则可选用因果图法和判定表法
4、判定表法:如果程序的功能说明中含有输入条件的组合情况,则可选用因果图法和判定表法
5、场景法:对于业务流清晰的系统,可用场景法贯穿整个测试案例过程
6、正交实验法:对于参数配置类的软件,要用正交实验法选择较少的组合方式达到最佳效果
7、状态迁徙图法(功能图法):通过不停时期条件的有效性设计不同的测试数据
用例设计方法的使用不是孤立存在的,而是存在于项目中,尤其是一个项目中。
以教育APP为例,说明各种用例设计方法的应用:
1、在启动页中,有如下需求:
①读取版本更新信息。匹配当前APP与线上需要更新的APP版本是否一致。
②读取用户信息。未登录用户,则不用获取;已登录用户,验证是否登录过期。
用例设计方法:采用场景法进行设计。
①APP的安装版本比最新版本要低。启动就需要进行版本检测,并进行提示。
②APP的安装版本与最新版本一样。默认检测成功。
③APP启动检测用户登录状态,如果登录过期或未登录,启动完成后直接跳转登录界面。
④APP启动检测用户登录状态,如果登录信息有效,启动完成后直接跳转首页界面。
2、在登录界面,看需求:
①手机号:暂时只支持大陆手机。
②验证码:长度为6位数字。
③短信验证码文本内容:【正教】456712(正教验证码),30分钟内有效,为确保您账号安全,请勿把验证码告诉他人。感谢您关注正教!
④登录按钮点击后,系统可能弹窗提示。
用例设计方法:采用等价类划分法和边界值分析法、因果图法
等价类划分法:
①手机号的有效性(手机号包含各种不合法字符);
②验证码包含各种不符合需求的字符;
边界值分析法:
①手机号超过/不足长度限制;
②验证码超过/不足长度限制;
③验证码有效期为30分钟,超过30分钟后使用验证码,就是边界值的使用。
④弹窗提示1S消失,超过或者不足的测试都是边界值的应用。
因果图法:
①提交数据时,APP网络中断,有网络异常的提示
②提交数据时,服务端崩溃或者无法提供正常服务,有服务器报错提示或者等待提示
③提交数据时,手机号不符合要求(不存在),有手机号错误的提示
④提交数据时,验证码输入不是收到的验证码、超时,有验证码错误提示。
3、课程内容页,需求如图所示:
用例设计方法:场景法、等价类划分法、边界值分析法
场景法:
①该课程今日有作业、有提问的内容展示。用例设计:老师发布作业的时候,学生提问。
②该课程今日有作业、无提问的内容展示。用例设计:老师发布作业的时候,学生没有提问。
③该课程今日无作业、有提问的内容展示。用例设计:老师没有发布作业的时候,学生提问。
④该课程今日无作业、无提问的内容展示。用例设计:老师没有发布作业的时候,学生也不提问。
等价类划分法、边界值分析法:
①日期的显示:有没有出现2月有29天的现象?
②日期的显示:会不会出现2月1日和1月31日重复或者中间间隔一天?
总结:所有测试用例的设计方法,没有独立使用的。都是融合在一起使用。往往在一个软件的界面中,都可以使用好几种测试用例的设计方法。