测试流程第三个环节:设计测试用例:怎么测<------>测试需求的提取:测什么
5、测试用例
-
描述:测试用例(TestCase):是一份关于【具体测试步骤】的文档,是为了达到最佳的测试效果或高效揭露软件中潜藏的bug,精心设计少量且具有代表性的测试场景和测试数据。
-
测试用例=测试场景=测试步骤+测试数据+预期结果
-
分析:测试用例就是设计一种情况,软件在该情况下是可以正常运行,且能够达到预期结果的。如果软件在该情况下不能正常运行,或未达到预期结果,就证明发现了bug,需要提交给开发进行确认和修复。修复完成后,再用同一条用例进行验证,确保已修复完成。
-
测试用例的编写
测试用例编号 测试项 依赖用例 测试步骤 测试数据 预期结果 测试结果 测试人 备注 -
测试用例编号:给设计好的每一个测试用例生成唯一的序列号 0001-9999
参考写法:TestCase_项目名称 _模块名称 _子模块名称 _功能名称 _测试类型 _0001
注意:名称可以简写,比如汉语拼音的首字母;当换了新的功能或新的模块,编号要重新生成;
测试类型:功能测试 Function,性能测试 Performance,界面测试 UI
-
测试项/测试用例标题
思路:关联本条测试用例设计的目的,一句话做概述,描述这一条用例是做什么的
写法:具体的角度+验证功能
例:测试需求:密码:6-18位------>设计用例:验证6位长度密码的注册操作
密码:小于6位------>设计用例:验证5位长度密码的注册操作
密码:大小写字母,数字----->设计用例:验证纯大写字母注册操作 验证纯小写字母注册操作 验证纯数字注册操作 验证字母+数字组合注册操作....
参考话术:验证XXXX的操作 XXXX情况下的验证 XXXX操作的验证
-
依赖用例:可选可写的
概述:指的是当前用例的设计,需要用到其它用例的支持,就把关联的用例编号写到该位置
例:针对信贷系统后台:用户管理模块设计用例------>依赖于前台成功注册用户用例
-
测试步骤:最核心的部分
概述:根据测试项,整理出详细的操作步骤(测试过程),简单清晰明了
例:验证直角三角形判定
测试步骤:
①输入第一条边:3
②输入第二条边:4
③输入第三条边:5
④点击提交按钮
备注:好的测试步骤,任何一个人都是可以执行的,也不会有任何的歧义
-
测试数据/输入数据
概述:指的是测试步骤中用到的数据
-
预期结果
概述:指的是按照测试步骤和测试数据操作完成后,应该会出现的结果
例:预期结果:提示"直角三角形"
-
测试结果
概述:写的是实际结果和预期结果对比后产生的结果值:
通过(成功):实际结果和预期结果一致
不通过(失败):实际结果和预期结果不一致
阻塞:因为一些其它的原因(不是本公司所能解决的),导致当前用例无法执行
-
测试人:写的是执行测试用例人员名字
注意:测试结果和测试人一定是执行测试后,才来进行填写的内容!!!
-
备注:可选可写的
概述:做一些额外的补充说明,比如执行用例时,所需要的硬件,软件,网络环境... 谷歌浏览器10.0
-
-
测试用例的作用
① 有效性:执行测试重要参考
②可复用性:良好的测试用例可以重复使用
①易组织性:再小的项目也会有大量的用例,用例也是随着版本的更新不断完善
④可评估性:用例通过率是检查代码质量的参考标准
⑤可管理性:测试用例的设计也是检查测试工作效率的标准
⑥测试用例的设计对于测试需求的覆盖率:一定是100%
6、黑盒测试用例设计方法
-
提供方法的选择:
- 测试数据:等价类划分法,边界值分析法
- 测试步骤:因果图法,判定表法,正交实验法,场景法,功能图法
-
测试数据的选择:
-
等价类划分法:划分数据区间
思想:依据【需求】,将程序的输入域,划分成若干个部分,从每个部分中再选取【少量且具有代表性】的数据,作为测试用例(测试数据),选取的数据就代表了该整体。
-
等价类划分法分类:
有效等价类 :依据需求,划分出来【有意义,合理的数据】构成的集合区间
例:163邮箱:手机号快速注册:密码:8-16位长度构成的密码数据都是有效的----->有效等价类 数据类型:大小写字母,数字构成的数据----->有效
无效等价类 :依据需求,划分出来【无意义,不合理的数据】构成的集合区间
例:163邮箱:手机号快速注册:密码:长度:两个无效等价类:小于8位的数据 大于16位的数据 数据类型:特殊符号构成的数据----->无效
-
等价类划分原则(了解)
①按照【区间】来划分:如果输入项中规定了【取值范围】或【值的个数】,划分出:一个有效等价类和两个无效等价类
例:成绩输入框:规则:[0,100]分数----->有效:0<=成绩<=100 无效:成绩<0 成绩>100 身份证号码输入框:规则:18位------>有效:18位 无效:大于18位 小于18位
②按照【数值】来划分:如果输入项中规定了n个值,每个值都必须测试,划分出:n个有效,一个无效
例:某一所大学的福利:如果学校中教师的身份:教授,副教授,院长,系主任,都可以得到一套房子
四个有效:教授身份的人构成的集合区间,副教授身份的人构成的集合区间,院长身份的人构成的集合区间,系主任身份的人构成的集合区间
一个无效:除了上述四个身份以外的人构成的集合区间
③按照【数据集合】来划分:如果输入项中规定了输入值的集合,划分出:一个有效,一个无效
例:名字需求:首个字符必须是字母
一个有效:以字母开头的数据构成的集合区间
一个无效:不以字母开头的数据构成的集合区间
④按照【规则】来划分:如果输入项中规定了必须要遵守规则的情况下,划分出:一个有效(满足规则的所有数据),若干个无效(从不同角度违反规则)
例:需求:校内电话拨打外线号码以9开头
有效:9开头+外线号码
无效:非9+外线号码 9+非外线号码 非9+非外线号码
⑤其它情况:
(1)如果输入项是一个布尔量,划分出:一个有效,一个无效
(2)在已知划分好的等价类基础上,有些情况还可以继续进一步划分出更小的等价类
例:名字需求:一个无效:不以字母开头----->以数字开头的所有数据 无效,以特殊符号开头的所有数据 无效......
-
等价类划分法设计测试用例(分析思路)
①建立等价类表:梳理思路,划分出每一个输入项的有效等价类,无效等价类
输入条件 有效等价类 无效等价类 ②给划分出来的每一个等价类生成一个唯一的编号
③==设计一条用例,尽可能多的覆盖有效等价类(能用一条用例完成的,就不考虑第二条),直到把所有的有效等价类全部覆盖完成。==
④==设计一条用例,只覆盖一个无效等价类==
注意:当以某一个输入项进行违反规则设计测试用例时,其他的输入项均看成是满足/符合规则
-
回顾
-
测试需求:"测什么"
-
测试用例:"怎么测"
-
黑盒测试:
测试数据选择:等价类边界值法
测试步骤设计:因果图判定表法 场景法 正交实验法 功能图法
等价类划分法:思想:输入项----->划分集合区间:有效等价类:有意义,合理 无效等价类:无意义,不合理
-
边界值分析法
-
前提:成绩判定 :[90,100] 优秀,[70,90) 良好,[60,70) 及格,[0,60) 不及格
if(grade>=90 && grade<=100){
alert("优秀")
}
-
概述:大量的测试工作经验告诉我们,大部分的错误往往发生在边界(并不是程序的内部),针对边界设计用例,能够发现更多的缺陷。边界值法是对等价类法的补充:通过等价类划分区间,结合边界值选取测试数据(边界数据)
-
边界:指的是输入或输出范围中,恰好处于边界,刚刚超越边界,边界以下的
-
边界值法设计用例(分析思路):
①确定好边界的情况:输入项或输出的边界
②选取边界数据作为测试数据:刚刚等于,刚刚大于,刚刚小于的边界值
-
边界值分析法原则(了解)
①如果输入项规定了【取值范围】:则取刚达到的,刚超越(大于+小于)
例:成绩输入项:需求:0<=成绩<=100 测试数据:0 100 101 -1
价格输入项:[1.0,10.0] 测试数据:1.0 10.0 10.1 0.9
价格输入项:[1.00,10.00] 测试数据:1.00 10.00 0.99 10.01
②如果输入项规定了【值的个数】,则取最大个数值,最小个数值,比最大值大一,比最小值小一
例:一个文件(数据表)能够接收1-255条记录:测试数据:1 255 256 0
③1和2中的原则,也可以用于输出结果的判定
例:软件查询功能:至少每次会显示1条查询结果,最多不超过20条查询结果,测试数据:1 20 0 21
④如果是输入或输出是一个有序序列,测试数据:序列中的第一个元素,序列中最后一个元素
例:三部电梯:一部:1-4楼,二部:1-9楼,三部:1,4,6楼,怎么测?
⑤分析需求规格说明书,找出其它可能存在的边界条件:次边界值:隐藏的边界值
例:月份输入框:1-12 MySQL:数据类型:字段名 tinyint -128到127
小总结:等价类划分法用于测试数据的区间划分,划分完成后就可以借助于边界值分析法,选取具体的测试数据:测试数据=等价类+边界值
-
-
测试用例评审
- 目的:可以让用例的结构更加清楚,覆盖用户场景更加全面(设计不合理,遗漏的找出来),也是提高用例设计水平方式之一
- 参与人员:测试部门相关人员,公司其它人员,客户(第三方)
7、黑盒测试用例设计方法(二)
针对测试步骤的设计方法
1、因果图法
-
思想:适用于【多种输入条件的组合】,设计测试用例,根据输入项的组合情况,以及约束关系,输出条件的因果关系,分析出可能会产生的组合场景,进行用例设计。
-
因果图法分析过程
①根据需求说明书,找出原因(条件)和结果之间的关系,画出因果图
原因和结果关系:
恒等:只要有条件a,一定会有结果b
非:只要有条件a,一定不会有结果b
或:abc三个条件只要满足其中一个,就会有结果d
与:abc三个条件必须同时满足,才会有结果d
②根据需求说明书,给因果图加上约束条件
(1)原因和原因之间的约束条件:
互斥E:abc三个条件,最多成立一个
包含I:abc三个条件,至少成立一个
唯一O:abc三个条件,有且只能成立一个
要求R:a条件的操作,要求b条件必须保持一致
(2)结果和结果之间的约束条件
屏蔽M:只要有结果a,就会屏蔽结果b
③根据因果图,转换出判定表(在表中整理出因果关系)
④判定表中每一个列,都是一条测试用例
小总结:因果图判定表法套路:根据需求说明----->分析因果关系----->画出因果图----->生成判定表----->根据表中的每一个列设计测试用例
2、判定表法
-
概述:"判定表驱动法",用来分析多个条件下,执行不同的组合操作情况------>分析工具:找出原因和结果(因为有些需求是比较明确,我们可以直接跳过因果图,利用判定表分析)
-
判定表组成
条件桩:指的是所有的输入条件(原因)
条件项:指的是每一个输入条件的取值
动作桩:指的是所有的输出结果
动作项:指的是所有输出结果的取值
规则:表中的每一个列,一个规则就是一条测试用例
-
判定表法设计用例:
①假如有n个条件,且每一个条件只有两个取值(0或1),那么故有2n个规则
②确定条件桩和动作桩:列出所有的输入条件和输出结果(问题和结果)
③分别填写条件项和动作项,生成初始化的判定表
④简化、合并、去重相似的规则或相同的动作(简化后的判定表是大家至少要设计的测试场景,不能再少了)
小总结:不管是因果图,还是判定表,最终的目的:实现不同条件之间的组合,产生不同结果的验证操作(因果图判定表法)
回顾
测试数据:等价类边界值法
测试步骤:因果图判定表法:功能:多条件组合情况
3、场景法(功能+业务)
-
概述:模拟用户使用软件时的操作场景(在不同的场景下来测试系统软件),主要测试系统的业务流程(毕竟一个软件的功能相当于是一个业务流程的体现)
-
场景法分析过程
-
场景法一般是由基本流和备选流组成:软件功能操作时,对应的各种{正确+错误}场景
基本流:指的是从执行程序开始,到程序执行结束,整个过程是【没有任何错误的场景】,将软件运行的流程正确的分析和表达出来。
备选流:指的是在基本流的基础上,会发生的【各种错误情况】所生成的场景。
例:ATM取款机:取钱功能:
基本流:正确的操作流程:插卡-------输入密码------选择取钱功能------输入取款金额-----确认出钱------退卡
备选流:各种错误情况:备选流一:密码输错三次,锁卡,备选流二:卡里余额不足,备选流三:取款机器没钱......
-
场景法在设计测试用例时,都是来源于【基本流和备选流之间组成的不同组合】生成的测试场景,一个场景就是一条测试用例
注意:一个完整的软件,基本流是固定的,因为基本流是功能业务最明确的体现,所以基本流是一个正确的操作流程或业务流程,没有任何其他错误的情况。备选流是在基本流的操作过程中出现的其他流程和分支(错误)
-
场景法用例设计:
-
确定基本流和备选流
例:根据案例描述,能够确定一个基本流和四个备选流
-
根据基本流和备选流的组合生成场景
例:根据上述案例,生成的场景有:
场景一:基本流
场景二:基本流+备选流1
场景三:基本流+备选流1+备选流2
场景四:基本流+备选流3
场景五:基本流+备选流3+备选流1
场景六:基本流+备选流3+备选流1+备选流2
场景七:基本流+备选流3+备选流4
场景八:基本流+备选流4
-
针对每一个场景设计测试用例(一个场景是一条用例)
-
如果有相似的场景,记得去重
案例分析2:
用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这是需要使用账号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。
根据上述需求,结合场景法设计测试用例(购物功能)
(1)确定基本流和备选流
基本流:进入购物网站-----选择物品------登录账号------付钱------生成订购单
备选流:
备选流一:账号不存在
备选流二:账号密码错误
备选流三:卡里余额不足
备选流四:卡里没钱
(2)根据基本流和备选流生成场景
场景一(购物成功):基本流
场景二(账号不存在):基本流+备选流1
场景三(账号密码错误):基本流+备选流2
场景四(卡里余额不足):基本流+备选流3
场景五(卡里没钱):基本流+备选流4
(3)根据每一个场景设计测试用例
-
-
-
错误推测法
思想:是一种【基于经验和直觉】的测试方法,来推测程序中所有可能存在错误的地方,从而更有针对性的设计测试用例:列出程序中所有会存在或出现错误的特殊情况
例:针对计算器的除法功能:设计用例:关注一下:除数为0的情况验证
- 探索性测试
思想:测试人员一边学习和了解软件系统的特性,一边进行测试工作的开展,学习和测试是同步进行,从而了解软件更多的相关信息,从而设计测试用例。
4、正交实验法
-
概述:利用【正交表】对实验进行整体分析,设计、综合比较,实现通过【最少的实验次数找到较好的生产条件】,以达到最优的效果。从大量的实验中,选取具有代表性的实验点,放入到正交表,进行数据分析和实验的实施。
-
思想(设计测试用例分析):
-
在实验中,把影响实验结果的量称为实验因素/因子,简称"因素/因子"
解析:在测试中,把影响测试结果的量称为"因素"----->输入项/输入条件
-
在实验中,每个因素所处的不同状态或状况,被称为因素的水平,简称"水平"----->因素的取值
解析:在测试中,水平相当于是每个输入项的取值
-
利用正交设计助手,生成正交表
备注:根据因素和水平的个数,选择合适的正交表:L4_2_3:会创建一个3因素2水平的正交表,生成4次实验:L实验次数_水平个数 _因素个数;如果没有合适的正交表,就选择稍大一点的
-
正交表中生成的每一个实验,就是一条测试用例
例:做实验:Word内容进行排版操作,请根据正交实验法,设计测试用例
第一步:找出影响word内容排版的因素有哪些?
字体大小 字体颜色 字体样式
第二步:确定每个因素的取值(选取一下每个因素的不同状态)
字体大小:水平:12 18 36
字体颜色:黑色 绿色 紫色
字体样式:水平:宋体 黑体 楷体
补充:3因素3水平:有3个因素点,每个因素点是有3个取值; 4因素5水平:有4个因素点,每个因素点是有5个取值
-
-
正交表特性:
-
表中每个列的值出现的次数是一样的,保证每个因素的水平值参与实验几率是一致的
-
表中任意两列横向组成的数据对,出现的次数是一样的,保证因素和水平的组合参与实验的概率也是一致的
-
-
典型的应用场景:软件中【设置模块】的测试用例
练习:利用正交实验助手,完成下列需求的实验生成
5、测试大纲法和Monkey测试
-
测试大纲法
思想:主要用于多个窗口,以及每个窗口之间包含的多种操作,这些窗口操作之间又存在一定的联系,为了更清楚窗口与窗口之间的关系,可以借助于测试大纲法。为了列清楚各种测试条件之间的关系,把过程转化成大纲的形式来进行描述。(弄清楚上一步操作和下一步之间的联系,上一个窗口和下一个窗口之间的关系)
应用场景:测试安装、卸载的功能操作;测试窗口之间的跳转关系;它也是着眼于需求的一种测试方法:梳理清楚需求之间的关系
-
Monkey测试:它是一种没有书面测试用例的测试方法,需要通过一系列的Monkey命令来完成测试,整个测试过程充满随机性。它更偏向于测试程序的稳定性,进行压力测试的一种手段。
缺点:测试过程往往不真实,会有较多的冗余(重复)的操作,测试的覆盖率很难达标。
6、测试用例设计方法综合选择策略(重点掌握)
- 针对任何有输入项数据的选择操作,必须等价类边界值法。
- 如果程序的功能说明中含有输入条件的组合情况,则一开始就要考虑因果图判定表法。
- 对于业务流程清晰的系统软件,可以利用场景法贯穿整个测试流程。
- 对于参数配置类的软件功能,可以利用正交实验法选择较少的参数组合达到最佳的测试效果。
- 利用错误推测法,再追加一些测试用例
- 如果用例的设计没有达到测试需求的全面覆盖,需要再补充足够多的测试用例
回顾
场景法:基本流(正确,没有任何错误场景)+备选流(各种错误的场景)
正交实验法:因素+水平
错误推测法:经验+直觉
探索性测试:学习和了解软件特性+测试工作
测试大纲法:安装,卸载功能测试,窗口与窗口之间跳转
Monkey测试:自动化测试
重点:测试用例设计方法综合选择策略