测试用例和测试设计方法
问题
- 什么是测试用例?
- 如果软件按照测试用例运行达不到预期的结果,怎么办?
- 开发人员说缺陷修复了,你认可吗?
- 测试用例真的有必要耗费时间进行设计和编写吗?有用吗?
- 时间不够用的情况下,还要进行详细的测试用例设计吗?
- 测试用例需要经常更新吗?(必须更新,尤其是发现过缺陷的测试用例。“杀虫剂效应”,一个发现过缺陷的测试用例,就相当于杀虫剂。必须使用“更强的杀虫剂”——新的测试用例(与之前的用例中数据类型保持一致)进行重新测试。)
- 现在有一个文本框,有一个规则:XXXXXXX;请对这个规则,进行输入内容的等价类划分(尽可能详细的划分)
一、什么事测试用例
1、测试用例的定义
- 简单的说,测试用例就是:
- 设计一个情况,软件程序在这种情况下,必须能够正常运行并达到程序所设计的预期的结果
- 如果程序在这种情况下不能正常运行,而且这种问题会重复发生,那就表示软件程序人员已经测出软件有缺陷,这时候就必须将这个问题标示出来,并且通知软件开发人员。软件开发人员接获通知后,将这个问题修改完成于下一个测试版本内
- 软件测试工程师取得新的测试版本后,必须利用同一个用例来测试这个问题,确保该问题已修改完成。
2、测试用例模版和包含的内容
测试用例编号 | 测试项 | 依赖用例 | 测试步骤 | 输入数据 | 预期结果 | 测试结果 | 测试人 | 备注 |
---|
| | | 1、 2、 | | | | | | | | | | | | | | |
- 测试用例应该包含以下内容:
- 标识符:有测试设计过程说明和测试程序说明引用的唯一标识符
- 测试项:描述被测试的详细特性、代码模块等,应该比测试设计说明中所列的特性更加具体。还要指出引用的产品说明书或者测试用例所依据的其他设计文档。
- 输入说明:该说明列举执行测试用例的所有输入内容或者条件。
- 输出说明:描述进行测试用例预期的结果。
- 环境要求:是指执行测试用例必要的硬件、软件、测试工具、人员等。
- 特殊要求:描述执行测试必须的特殊要求。
- 用例之间的依赖性:如果一个测试用例依赖于其他用例,或者受其他用例的影响,就应该在此注明。
用例设计模板中的说明:
-
标识符(用例编号):一般编号规则:TestCase_ 项目名称_ 模块名称_ 功能名称_ 0001 -
测试项:测试用例的测试目的。一般情况下,用一句话表明目的。 例如:使用谷歌浏览器打开百度首页;在qq登陆界面输入正确的用户名密码能登陆上。(表明你的测试模块、测试对象、方式、事件。)(A:人名,B:人名,C:时间,D:地点,E:事件) -
依赖用例:一般功能流程上,下游的功能测试依赖于上游的功能测试的用例。 例如:增加了一个数据的测试用例,将会被删除该数据的测试用例依赖。 -
测试步骤:用最朴素的语言,写出来软件的操作步骤。要尽量详细。 例如:在用户名文本框输入:XXX;在省份下拉列表选择:北京 城市下拉列表选择:北京… -
测试数据:单独整合测试数据。必须和测试步骤中的数据保持一致。 -
预期结果。准确:对象的准确性,内容的准确性。原则上每一个操作,都要有一个结果。在重要的步骤之后,设定预期结果。 例如:页面跳转到XXX;程序弹出对话框,提示:用户名或密码错误,请重新输入!**一般和测试目的密切相关。**测试目的决定了测试步骤和预期结果。 -
测试结果:要求在测试执行完成后添加。没有执行保持为空。测试结果只有两个:通过/失败——Pass/Failed。和预期结果保持一致即为通过;不一致即为失败。 -
测试人:测试的执行人。可以和设计者相同,也可以不同。 -
备注:为了测试用例正常执行而做的特殊准备。 例如:专门制造网络不畅情况下,软件错误提示。
3、设计测试用例的作用
- 用例设计和编写的作用
- 有效性:测试用例是测试人员测试过程中的重要参考依据。
- 可复用性: 良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
- 易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
- 可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
- 可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪/管理测试人员的工作效率的标准。
二、 测试用例编写注意事项
1、测试用例设计和编写注意事项
- 不要设计“穷举测试用例”
- 在详细测试用例与有效测试时间中找到平衡点
- 好的测试用例应该多关注“反向测试问题”
- 测试用例库应该不断更新和维护
- 测试用例可以复用,但要注意数据有效性与环境变化
- 测试用例是设计出来的,不是写出来的
- 多去学习经验丰富的测试工程师说设计的测试用例
- 针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法
三、黑盒测试用例设计方法(一)
1、黑盒测试用例设计方法概述
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GlV7ohL0-1625214625755)(/Users/acetian/Library/Application Support/typora-user-images/image-20210617150714844.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Ho0Ilux-1625214625759)(/Users/acetian/Library/Application Support/typora-user-images/image-20210617150735876.png)]
2、等价类划分法
做加法器功能测试时,测试了1+1,1+2,1+3和1+4之后,还有不必要测试1+5和1+6吗,能否放心地认为它们是正确的?
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iInuI5ru-1625214625762)(/Users/acetian/Library/Application Support/typora-user-images/image-20210617153434236.png)]
等价类划分法原理
- 把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。
- 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误。
- 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。
等价类划分法设计步骤
-
确定等价类的原则
- 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
- 在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
- 在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类
- 在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)
- 在确定已划分的等价类中,各元素在程处理中的方式不同的情况下,则应再将该等价类进一步地划分为更小的等价类
-
等价类划分法
-
划分等价类和列出等价类表
-
确定测试用例
- 为每个等价类规定一个唯一的编号
- 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
- 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖
等价类划分的原则:
-
例如:一个文本框规定,输入字符个数为6~18位。 一个有效等价类:范围内个数 两个无效:小于6;大于18个 -
例如:请输入11位的手机号 11位就是有效 不是11位,就是无效 -
布尔量:表示“真”或者“假” -
例如:登陆中要输入用户名和密码 -
例如:用户名要求6~18,由字母、数字、下划线组成:字母区分大小写;以大写字母开头 以百度的注册页面为例: 用户名:设置后不可更改;中英文均可;最多14个英文字母或7个汉字;(用户名不可重复;不可为空;) 将等价类划分组成表格分析:
有效等价类 | 数据 | 无效等价类 | 数据 |
---|
中文、英文 | 王jiji | 数字、特殊符号 | 123455/@##¥¥#¥ | 14英文 | Wangjiji | 英文超过14 | asdasffdsfsafsfds | 不能为空 | W | 空 | | 不能重复 | | 使用重复的数据进行测试 | | 7个中文 | 一样一 | 中文超过7 | 但是方法是跟风狗 |
测试用例模版: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A2ufzSHq-1625214625766)(/Users/acetian/Library/Application Support/typora-user-images/image-20210618151221317.png)] 例如: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eDt9gdbY-1625214625768)(/Users/acetian/Library/Application Support/typora-user-images/image-20210618161326165.png)]
用例问题
- 用例按照测试分类:功能(Function)、界面(UI)、性能(Performance)、安全(Security)、接口(Interface)。
- 测试项:必须是确定的。测试项中可以不写目的产生的结果。写了不算错。
- 身份证号业务知识,最后一位是是校验码(机密)(0~9,罗马数字X)身份证号(新版和旧版),数字和X,并没有字母。例如非法的身份证号:130112198902301542
- 测试项一般只写一个测试目的。测试目的必须是明确的,不能一次测试多个点。测试中,一个反向的(无效等价类)测试数据,只要违反一个需求。例如非法的身份证号:130112198922301542
- 依赖用例。下游的用例,依赖上游的用例(已经存在的测试用例),用例依赖可以跨越模块(A设计员可能会依赖B设计员的测试用例)。
- 测试步骤。表明操作的对象和方式,数据。
- 测试数据。没有数据,空着不写;例如输入要求不为空,不输入就不写。(需在测试项中标注某一个内容为空)如果要对空格进行测试。( 数据 )(建议不要将空格放在数据的最前面或者最后面)(123 345)
- 测试结果。不执行,就不填。
- 用例中要不要显示 正向或者反向。不需要
- 等价类划分。不要出现重复的情况。也不要出现缺失的输入部分。
3、边界值分析法
边界值分析法
-
如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据 -
如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据 -
分析规格说明,找出其他可能的边界条件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-gtTnfQYO-1625214625772)(/Users/acetian/Library/Application Support/typora-user-images/image-20210619154547902.png)]
边界值的选择原则
- 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据
- 如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少1、比最大个数多1的数作为测试数据
- 根据规格说明的每个输出条件,使用前面的原则①
- 根据规格说明的每个输出条件,使用前面的原则②
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
实战案例:
-
一个程序读入3个整数,把这3个数值看作一个三角形的3条边的长度值。 -
这个程序会给出弹窗提示信息,说明这个三角形是普通的、是等腰的、是直角的,还是等边的,以及相应的错误提示信息 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qV6aM3vH-1625214625775)(/Users/acetian/Library/Application Support/typora-user-images/image-20210623121106618.png)]
-
边界值的核心。“常在河边走,哪有不湿鞋?” -
边界值分析法。
边界值只是一个特定的数据。例如,文本框需要输入6-18位字符。边界值有:
1)6个字符
2)18个字符
次边界。边界附近的值,按照系统规定的单位或者计算方式,一个数据的差异。
例如,字符就是个,一个字符,没有半个字符的说法;人民币金额,最小单位是0.01元,ATM机取款和存款,最小单位就是100元,只能是100元的整数倍。
思考:
1)6<=x<=12,请问测试中x的边界值要选取哪几个进行测试?
5,6,7,11,12,13
2)6<x<12,请问测试中x的边界值要选取哪几个进行测试?
5,6,11,12
3)文本框输入字符的个数要求是不大于150字。测试的时候如何选择边界值?0<=x<=150
- 三角形判断(怎么判断三角形:找计算公式)
1)构成三角形:任意两边之和大于第三边
2)直角
3)等腰
4)等边
5)钝角
6)锐角
边长作为特殊的数据。所有的边长遵循的规则是完全一致的。
- 四边形:
平行四边形:
正方形:
长方形:
普通四边形
- 五边形:
特殊的五边形:
四、黑盒测试用例设计方法(二)
1、因果图法
(1)什么是因果图
- 因果图法
- 因果图法是一种适合于描述对于多种输入条件组合的测试方法
- 根据输入条件的组合、约束关系和输出条件的因果关系,分析输入条件的各种组合情况,从而设计测试用例的方法
- 它适合于检查程序输入条件涉及的各种组合情况。
(2)因果图的符号
-
第一步:根据功能说明书中规定的原因和结果之间的关系画出因果图 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RefsjTFC-1625214625777)(/Users/acetian/Library/Application Support/typora-user-images/image-20210624153646011.png)] 第二步:根据功能说明在因果图中加上约束条件
- 其中互斥、包含、唯一、要求时对原因的约束,屏蔽是对结果的约束。它们的含义如下:
- 互斥:表示不同时为1,即a,b,c中至多只有一个1
- 包括:表示至少有一个1,即a,b,c中不同时为0
- 唯一:表示a,b,c中有仅有一个1
- 要求:表示若a=1,则b必须为1。即不可能a=1且b=1。
- 屏蔽:表示若a=1,则b必须为0
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-enIVBb6T-1625214625780)(/Users/acetian/Library/Application Support/typora-user-images/image-20210625104248334.png)]
(3)因果图使用实例
2、判定表法
(1)什么是判定表法
判定表驱动法:
-
是分析和表达多逻辑条件下执行不同操作的情况的工具。它由以下几个内容组成:
- 条件桩(Condition Stub):列出了问题得所有条件。通常认为列出的条件的次序无关紧要。
- 动作桩 (Action Stub):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
- 条件项(Condition Entry):列出了问题规定可能采取的操作。这些操作的排列顺序没有约束。
- 动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1vEQB2Y9-1625214625806)(/Users/acetian/Library/Application Support/typora-user-images/image-20210625203120985.png)]
建立判定表的步骤:
- 第一步:确定规则的个数
- 假如有n个条件,每个条件有两个取值(0,1),故有2n种规则
- 第二步:列出所有的条件桩和动作桩
- 第三步:简化,合并相似规则或者相同动作
(2)判定表使用实例
需求:订购单的检查。
- 如果金额超过500元,又未过期,则发出批准单和提货单;
- 如果金额超过500元,但过期了,则不发批准单;
- 如果金额低于500元,则不论是否过期都发出批准单和提货单,在过期的情况下还需要发出通知单。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6pRXyRLW-1625214625809)(/Users/acetian/Library/Application Support/typora-user-images/image-20210628164206905.png)]
适合使用判定表设计测试用例的条件:
- 规格说明以判定表的形式给出,或很容易转换成判定表
- 条件的排列顺序不影响执行哪些操作
- 规则的排列顺序不影响执行哪些操作
- 当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
- 如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
二、判定表法
1、应用场合:主要适用于多条件的内容组合与结果分析。
2、组成:由条件项、动作项、条件桩、动作桩四部分组成。
3、使用的条件:所有的条件桩在表中的位置和顺序互相不影响;所有的动作桩的顺序不会因为条件顺序的变化而产生不同。
4、实现的步骤:
1)识别出操作条件(原因),和对应的动作(结果)
2)分析条件的条件项(组合数量):如果有n个条件,每个条件有成立和不成立两种情况,那么最后一共会有2^ n个数量
3)简化和优化结果。排除一些不可能存在的情况。
5、实例:上述需求
1)分析条件和动作
条件1 | 条件2 | 动作 |
---|
金额>500 | 未过期 | 发出批准单,提货单 | 金额>500 | 过期 | 不发批准单,提货单 | 金额<=500 | 未过期 | 发出批准单,提货单 | 金额<=500 | 过期 | 发出批准单,提货单,通知单 |
2)写入条件桩、动作桩、条件项、动作项:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-81NTuIhA-1625214625813)(/Users/acetian/Library/Application Support/typora-user-images/image-20210628162148194.png)]
3) 判定表进行简化和优化。(对其中不合理或者重复的进行取舍)
不管金额的高低,只要未过期,就会发送批准单和提货单。(在测试时间不足的情况下,可以选择二者中一个情况进行测试,在测试时间充足的情况下,每一个都要测试),所以优化之后,条件项就减少成为3个:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0bhm0jJ0-1625214625816)(/Users/acetian/Library/Application Support/typora-user-images/image-20210628163522220.png)]
4)将判定表中的每一列(条件项和对应的动作项)作为测试用例的数据和操作以及对应的预期结果。
6、测试用例的设计方法:没有哪一种方式是单独使用的。
1)所有的软件,都是因为某种操作才会导致一定的结果。——考虑使用因果图
2)所有的软件都有文本框。——考虑必须一定使用等价类、边界值。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bu5Yk2Mi-1625214625820)(/Users/acetian/Library/Application Support/typora-user-images/image-20210630212533712.png)]
1)合并1、2、3、4为一项。在疲倦的情况下,一律休息即可。
2)合并7、8为一项。在都不疲倦的情况下,不感兴趣就跳下一章。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cth6Nl8H-1625214625823)(/Users/acetian/Library/Application Support/typora-user-images/image-20210630213100587.png)]
3、场景法
(1)场景法基本原理
原理:
- 现在的软件几乎都是用事件触发来控制流程的。测试时,可以生动地描绘出事件触发时的情景,有利于设计测试用例,同时使测试用例更容易理解和执行。
- 基本流:软件功能按照正确的事件流实现的一条正确流程。通常一个业务仅存在一个基本流,且基本流仅有一个起点和一个终点。
- 备选流:除了基本流之外的各支流,包含多种不同的情况。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PTHR2y2L-1625214625826)(/Users/acetian/Library/Application Support/typora-user-images/image-20210630230124668.png)]
- 场景列表
- 场景1:基本流
- 场景2:基本流备选流1
- 场景3:基本流备选流1备选流2
- 场景4:基本流备选流3
- ······
设计用例的步骤
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流深成不同的场景
- 对每一个场景生成相应的测试用例
- 对生成的所有测试用例重新复审,去掉多余的测试用例
- 测试用例确定后,对每一个测试用例确定测试数据值
- *场景法适用于解决业务流程清晰的系统或功能
重点:
? 基本流(软件功能正确实现的流程)
? 备选流(基本功能流程之外的过程)
注意:
? 1、场景中必须有基本流
? 2、场景中必须有内容从用例的开始,到用例的结束
(2)场景法设计实例
设计测试用例:
? 每一个场景,都是一个测试用例
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eubMgAe9-1625214625830)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701095804382.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1uhij5cN-1625214625833)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701100201556.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Adwl27ZK-1625214625836)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701100453425.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WdcH83IW-1625214625839)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701100724333.png)]
五、黑盒测试用例设计方法(三)
一、正交试验法
1、正交法原理介绍
正交实验法
- 概念:正交实验法就是利用排列整齐的表——正交表来对试验进行整体设计、综合比较、统计分析,实现通过少数的试验次数找到较好的生产条件,以达到最好效果。
- 这种试验设计法是从大量的试验点中挑选适量的具有代表性的点,利用已经造好的表格——正交表来安排试验并进行数据分析的方法。
n阶拉丁方
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RiLIz2oA-1625214625840)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701103557280.png)]
基本思想:
- 在一项试验中,把影响试验结果的量称为试验因素(因子),简称因素。在试验过程中,每一个因素可以处于不同的状态或状况,把因素所处的状态或状况,称为因素的水平,简称水平。
- 每列中不同数字出现的次数相等。这一特点表明每个因素的每个水平与其它因素的每个水平参与试验的几率是完全相同的,能有效地比较试验结果并找出最有的试验条件。
- 在任意2列其横向组成的数字对中,每种数字对出现的次数相等。这个特点保证了试验点均匀地分散在因素与水平的完全组合之中。
一、正交实验法
1、日本人,统计学家提出。
2、使用的工具:正交表。
3、统计和分析实验数据,从大量实验中找到合适不的实验数据组合。(原本用于工业生产的数据组合与实验室的数据挑选。)
4、”大量的实验中,挑选出来一部分具有代表性的点,进行实验,分析数据。“
5、数学原理——《线性代数》《概率论》《数理统计》
6、核心概念:
1)影响实验结果的——实验因素(因子)、因素
2)每一个因素的不同取值(状况)——水平。
? 例如,字的显示效果——字体、字号、颜色,称为因素。
? 字体选择时,可以选择宋体、楷体、黑体、隶书······称为水平。
? 字号选择时,······称为水平。(100个)
? 颜色选择时,·······称为水平。(256个)
? 测试字的显示效果将会有:212* 100* 256=?
? 3)正交表:每列中,同一个数字,出现的次数相等;任意两列组成的数字对(水平对)出现的次数也是相同的。
2、正交试验法实现步骤
正交实验法实现的基本步骤
- 确定因素:这里的因素是指对软件运行结果有影响的软件
- 确定因素的取值范围或集合(该步是为步骤3做准备的)
- 因素的取值范围是指软件输入的取值范围或集合以及可用的硬件资源
- 确定每个因素的水平
- 根据因素的取值范围或集合,采用等价类划分、边界值分析以及其他软件测试技术,在每个因素的取值范围或集合内挑选出有效等价类、无效等价类、正好等于、刚刚大于或刚刚小于边界值等有代表性的测试值
- 选择正交表
- 根据确定的因素和水平,选择适合的正交表
- 如果没有合适的正交表可以或需要的测试用例个数太多,要对因素和水平进行调整
正交实验法
- 正交表:一种特制的表,一般的正交表记为[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a57ViktZ-1625214625841)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701125533653.png)]
- m是水平数,k是因素数,n是需要进行实验的行数
- 行数:正交表中的行的个数,即试验的次数,也是通过正交实验法设计的测试用例的个数
- 因素数:正交表中列的个数,即要测试的功能点。
- 水平数:任何单个因素能够取得的值的最大个数,即要测试功能点的输入值
正交表的种类:
正交表的特性
7、实施步骤:
? 1)分析所有对结果有影响的因素。从多个角度和方式进行分析(不要放过文本框、按钮等需求中提及或者没有提及)
2)分析每个因素的水平数量。充分利用等价类、边界值(需求中说明和未说明的都要分析)
3)选择正交表。只有特定的因素数和水平数的组合才有对应的正交表。所以在现实中用到的时候,找最贴近的正交表(正交表的因素数和水平数一般要大于实际的因素数和水平数。)
? -1- 正交表的数字关系。n代表试验次数,m代表水平数,k因素的数量。这三个数字之间没有任何数学关系。
? -2- 仅适合用于每一个因素的水平数都相同的正交表。
3、实际案例
正交实验法案例:
-
有一个工业产品,其生产工艺受到操作方式、温度、洗涤时间三个因素的影响,并且每个因素都有三种可能的取值,具体如下所示,请设计试验组合。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-t0eRgrpp-1625214625842)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701141500000.png)]
8、小案例:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6qXxZzIW-1625214625843)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701141500000.png)]
完全排列组合:3* 3 *3=27
使用小工具完成正交试验的设计:(19_3_4:三水平,四因素,9次试验)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI1AgqmE-1625214625844)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701144338947.png)]
每一列中,同一个数字出现的次数相等(3次)
任意两列中,同一个数字对出现的次数相等(1次)
4、正交实验助手
【正交设计助手V3.1绿色版】
二、功能图法
1、功能图法原理介绍
功能图法又叫做状况迁徙图。
-
来源:在遇到有事务流或由于某种条件成立导致状态改变的软件时,如何进行测试用例的设计就比较麻烦。 -
状态迁徙图法的目标
- 设计足够多的测试用例达到对系统状态的覆盖、状态-条件组合的覆盖以及状态迁徙路径的覆盖
-
以操作系统的进程调度算法为例: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-isDVaVTm-1625214625845)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701152243829.png)]
功能图法步骤
- 列出所有可能的输入事件,以ip N的方式命名(N为1,2,3,4·······)
- 把软件的打开的初始状态,定义为“空闲”状态
- 在“空闲”状态上加所有新状态,分别加所有可能的输入(只加一次)
- 循环执行上一步
- 直到再没有任何新状态产生,列出所有的状态,生成状态表
- 组合任意可能的状态组合,写出相应的测试用例
二、功能图法
1、又叫做状态迁徙图法。
2、使用场合:软件的状态会根据某些内容、条件、操作的变化而变化。
3、目标:尽可能覆盖软件的状态、状态-条件的组合、状态变迁路径。
4、步骤:
? 1)识别和列举所有的输入(操作)事件。以IPN(input)(N=1 2 3)
? 2)定义空闲状态(初始状态)。一般以软件刚启动时打开的界面状态为空闲状态。
? 3)为空闲状态加操作(只加一次)
? 4)为第3)步所产生的新状态加操作(只加一次,并且曾经加过的操作,不再重复添加)
5)循环为所有的新增状态加操作,直到没有新状态产生为止。
6)组合任意的状态,以列表的形式展现,设计和编写测试用例。
5、小案例:
1)识别出可以进行的操作
? IP1:输入账号
? IP2:输入密码
? IP3:点击登录
? IP4:点击关闭按钮
? 2)定义QQ登录界面为 空闲 状态。
? 3)给空闲状态加操作。第一轮分析后:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OKICjkFN-1625214625846)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701164744337.png)]
? 产生了新的状态。针对真的状态进行分析(第二轮):
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eBHY9y3R-1625214625848)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701165512936.png)]
? 得到一个新的状态。所以继续进行分析:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eN9xaj3N-1625214625850)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701165908917.png)]
? 虽然得到了一个全新的界面(状态),但是和空闲状态发生了“隔断”,因此将其视为空闲状态的结果。可以结束分析过程。
? 4)将状态变化过程列表化,准备设计测试用例。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ca1F70VS-1625214625853)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701171001484.png)]
2、功能图法分析过程
案例:以QQ登陆界面为例,说明功能的变迁。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hO80epwW-1625214625854)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701163132196.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ON9yxzEP-1625214625855)(/Users/acetian/Library/Application Support/typora-user-images/image-20210701164744337.png)]
三、其他用例设计方法
1、其他用例设计方法
测试大纲法
探索性测试法
- 基于测试人员经验与直觉的测试方法
- 是对测试用例设计的有效补充
- 探索性测试也必须生成测试用例
猴子测试(随意性测试)
- 一种没有书面测试用例、记录期望结果、检查列表、脚本或指令的测试
- 缺点
- 测试往往不太真实
- 不能达到一定的覆盖率
- 许多测试都是冗余的
- 需要使用同样的随机数才能重建测试
三、其他用例设计方法
1、测试大纲法
1)特点:着眼于需求。进行详细的需求分析,将其转化为思维导图(树形结构)。
2)无需用例设计。一般从根节点开始分析,到叶节点为止。这样的一条路径就是一条测试用例。
3)一般用于快速的测试和过程记录。用例一般进行后补。
2、探索性测试法
基于经验和直觉。
是计划内测试用例设计的补充。
探索性测试执行前也需要设计测试用例。
3、猴子测试法(随意测试、随便测试)
没有测试用例(无意识测试)
不能达到指定的覆盖度。
想要重复操作,极其困难
四、用例设计方法综合选择
- 首先进行等价类划分
- 在任何情况下都必须使用边界值分析法
- 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法(如下拉列表、按钮等)
- 对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果(如软件设置等)
- 状态迁徙图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据
- 对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程(如用ATM机进行转账,开户等)
- 可以用错误推测法追加一些测试用例
- 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当在补充足够的测试用例
首先明确用例设计方法都有哪些?
- 等价类划分法
- 边界值分析法
- 因果图法
- 判定表法
- 场景法
- 正交试验法
- 状态迁徙图法(功能图法)
记住方法的名称很简单,但是如何使用却是一个大问题:如何使用。用例设计方法的使用不是孤立存在的,而是存在于项目中!尤其是一个项目中。
以教育APP为例说明各种用例设计方法的应用。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MPra5Ped-1625214625857)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702110151575.png)]
1)启动页中。有如下需求:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1fV1IDh0-1625214625859)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702110551191.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EjXMklAD-1625214625860)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702110228128.png)]
用例设计方法:采用场景法进行设计。
设计场景:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PQ8kKrp4-1625214625861)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702110901242.png)]
2)在登陆界面。看需求:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8vpU7MW3-1625214625863)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702111231628.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vNkwP4R0-1625214625864)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702111113564.png)]
用例设计方法:采用等价类划分法和边界值分析法、因果图分析法。
等价类划分法:
- 手机号的有效性。(手机号包含各种不合法字符);
- 验证码包含各种不符合需求的字符
边界值分析法:
- 手机号超过/不足长度限制;
- 验证码超过/不足长度限制;
- 验证码有效期为30分钟;所以超过30分钟后使用验证码,就是边界值的使用。
- 弹窗提示1s消失;超过/不足的测试都是边界值的应用。
因果图法:
- 提交数据时,APP网络中断,有网络异常的提示;
- 提交数据时,服务端崩溃或者无法提供正常服务,有服务器报错提示或者等待提示
- 提交数据时,手机号不符合要求(不存在),有手机号错误的提示。
- 提交数据时,验证码输入不是收到的验证码、超时,有验证码错误提示
3)课程内容页。需求如图所示:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bpp9Y0PZ-1625214625866)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702154947259.png)]
用例设计方法:场景法、等价类划分、边界值分析法。
场景法:
- 该课程今日有作业、有提问的内容展示。老师发布作业的时候,学生提问。
- 该课程今日有作用、无提问的内容展示。老师发布作业的时候,学生没有提问。
- 该课程今日无作业、有提问的内容展示。老师没有发布作业的时候,学生提前提问。
- 该课堂今日无作业、无提问的内容展示。老师没有发布作业的时候,学生也不提问。
等价类划分法、边界值分析法:
- 日期的显示。有没有出现2017年2月有29天的现象?
- 日期的显示。会不会出现2017年2月1日和2017年1月31日重复或者相隔一天的现象?
总结:所有测试用例的设计方法,没有独立使用的。都是融合在一起使用。往往在一个软件的界面中,都可以使用好几种测试用例的设计方法。
正交试验法是一种极其特殊的用例设计方法。一般没地方用。下面图中的功能,适合使用:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uERHFxgI-1625214625867)(/Users/acetian/Library/Application Support/typora-user-images/image-20210702161022765.png)]
|