-
测试用例的定义
-
简单地说,测试用例就是:
- 设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的预期效果
- 如果程序在这种情况下不能正常运行,而且这种问题会重复发生,那就表示软件程序人员已经测出软件有缺陷,这时候就必须将这个问题标示出来,并且通知软件开发人员。软件开发人员接获通知后,将这个问题修改完成于下一个测版本内
- 软件测试工程师取得新的测试版本后,必须利用同一个用例来测试这个问题,确保该问题已修改完成。
-
面试题:
- 什么是测试用例?
- 如果软件按照测试用例运行达不到预期效果,怎么办?
- 开发人员说缺陷修复了,你认可吗?(回归测试)
-
-
测试用例模板和包含的内容
测试用例编号 测试项 依赖用例 测试步骤 输入数据 预期结果 测试结果 测试人 备注 测试用例应该包含以下内容:
- 标识符(用例编号):一般编号规则:TestCase_项目名称_模块名称_功能名称_0001
- 测试项(言简意赅):测试用例的测试目的。一般情况下,用一句话表明测试目的。例如:使用谷歌浏览器打开百度首页;在QQ登录页输入正确的用户名密码能登陆上。(表明测试模块、测试对象、方式、事件)
- 依赖用例:一般功能流程上,下游的功能测试依赖于上游的功能测试用例。例如:增加了一个数据的测试用例,将会被删除该数据的测试用例依赖
- 测试步骤:用最朴实的语言,写出软件的操作步骤。要尽量详细。例如:在用户名文本框输入:XXX;
- 测试数据:单独整合测试数据。必须和测试步骤中的数据保持一致。
- 预期结果:对象准确,内容准确。原则上每一个操作步骤,都要有一个结果。**在重要的步骤之后,设定预期结果。**例如:页面跳转到XXX;程序弹出对话框,提示:用户名或密码错误,请重新输入!一般和测试目的密切相关。测试目的决定了测试步骤和预期结果。
- 测试结果:要求在测试执行完成后添加。没有执行保持为空。测试结果只有两个:通过|失败;Pass|Fail。
- 测试人:测试执行人。
- 备注:为了测试用例正常执行而做的特殊准备。例如:专门制造网络不畅情况下,软件错误提示。
-
设计测试用例的作用
面试题:测试用例真的有必要耗费时间进行设计和编写吗?
具体作用如下:
- 有效性:测试用例是测试人员测试过程中的重要参考依据、
- 可复用性:良好的测试用例具有重复使用的功能,使得测试过程事半功倍,提高测试效率。
- 易组织性:即使是小的项目,也可能会有几千甚至更多的测试用例,测试用例可能在数月甚至几年的测试过程中被创建和使用。
- 可评估性:从测试的项目管理角度来说,测试用例的通过率是检验代码质量的保证。
- 可管理性:测试用例也可以作为检验测试人员进度、工作量以及跟踪|管理测试人员的工作效率的标准。
-
不要设计“穷举测试用例”
-
在详细测试用例与有效测试时间中找到平衡点
-
好的测试用例应该多关注“反向测试问题"
-
测试用例库应该不断更新和维护
-
测试用例可以复用,但注意数据的有效性与环境变化
-
测试用例是设计出来的,不是写出来的
-
多去学习经验丰富的测试工程师所设计的测试用例
-
针对不同的需求类型和测试对象,灵活采用不同的测试用例设计方法
面试题:
时间不够的情况下,还要进行详细的测试用例设计吗?
测试用例需要经常更新吗?(必须更新,尤其是发现过缺陷的测试用例。“杀虫剂效应”,一个发现过缺陷的测试用例,就相当于杀虫剂。必须使用“更强的杀虫剂”——新的测试用例【与之前的用例中数据类型保持一致】进行重新测试)
-
黑盒测试用例设计方法概述
- 黑盒测试数据选择
- 等价类划分法
- 边界值分析法
- 黑盒测试步骤设计
- 因果图法
- 判定表法
- 正交试验法
- 功能图法
- 场景法
- 黑盒测试数据选择
-
等价类划分法
-
原理
- 把程序的输入域划分成若干组成部分,然后从每个部分中选取少数代表性数据作为测试用例
- 每一类的代表性数据在测试中的作用等价于这一类中的其他值,如果某一类中的一个例子发现了错误,这一等价类中的其他例子也能发现同样的错误。
- 反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误。
-
设计步骤
确定等价类的原则
- 在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
- 在输入条件规定输入值的集合或者规定了“必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价类
- 在输入条件是一个布尔值的情况下,可以确定一个有效等价类和一个无效等价类
- 在规定输入数据的一组值(假定N个),并且程序要对每一个输入值分别处理的情况下,可以确立N个有效等价类和一个无效等价类
- 在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(不同角度违法规则)
- 在确知已划分的等价类中,各元素在程序处理中的方式不同的情况下,则应该再将该等价类进一步划分为更小的等价类
划分等价类和列出等价类表
- 有效等价类
- 无效等价类
确定测试用例
- 为每个等价类规定一个唯一的编号
- 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步骤,最后是的所有有效等价类均被测试用例覆盖
- 设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步骤使得所有无效等价类均被覆盖
简单以百度的注册页面为例:
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XAFNwP9-1632988727235)(C:UsersadminAppDataRoamingTyporatypora-user-imagesimage-20210929230101948.png)]
用户名:设置后不可更改;中英文均可;最多14个数字或者汉字;(用户名不能重复;用户名不能为空;特殊符号)
将等价类划分组成表格分析
有效等价类 数据 无效等价类 中文、英文混合 工藤xinyi 数字、特殊符号、123456 14英文 gongtengxinyi 英文超过14 不能为空 G 空 不能重复 工藤新二 使用重复的数据进行测试 7个中文 工藤新一工藤新二 中文超过7个 简单写一下测试用例,之后做一份详细实战。
测试用例编号 测试项 依赖用例 测试步骤 输入数据 预期结果 测试结果 测试人 备注 TestCase_BaiDu_SY_zhuce_0001 使用谷歌浏览器打开百度注册页面 1.打开谷歌浏览器;
2.在地址栏输入https://passport.baidu.com/v2/?reg&tt=1632927623800&overseas=undefined&gid=0B04BCD-9DDE-49CC-9962-D990973F0FCD&tpl=mn&u=https%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3DUTF-8%26wd%3Dbaidu
3.点击回车https://passport.baidu.com/v2/?reg&tt=1632927623800&overseas=undefined&gid=0B04BCD-9DDE-49CC-9962-D990973F0FCD&tpl=mn&u=https%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3DUTF-8%26wd%3Dbaidu 百度注册页面能够正确显示(和设计图保持一致) TestCase_BaiDu_SY_zhuce_0002 用户名文本输入合法数据出现绿色对勾 TestCase_BaiDu_SY_zhuce_0001 1.在用户名文本框输入:工藤xinyi 工藤xinyi 文本框旁边出现绿色对勾 TestCase_BaiDu_SY_zhuce_0003 TestCase_BaiDu_SY_zhuce_0004 TestCase_BaiDu_SY_zhuce_0005 提示:
1.用例按照测试分类:功能(Function)、界面(UI)、性能(Performance)、安全(Security)、接口(Interface)
2.测试项必须是确定的(不能是不是、是否)。测试项中可以不写目的产生的结果。写上不算错。
3.测试项一般只写一个测试目的。测试目的必须明确,不能一次测试多个点。测试中,一个反向的(无效等价类)测试数据,只需要违反一个需求。例如非法身份证号:130112198922301542
4.依赖用例:用例依赖可以跨越模块
5.测试步骤:表明操作的对象和方式,数据。
6.测试数据:没有数据,空着不写;对空格进行测试(123 456)
7.测试结果:不执行,就不填。
8.用例中不需要显示正反向。
9.等价类划分不要出现重复。也不要出现缺失。
-
-
边界值分析法
-
边界值本身只是一个特定的数据。例如:文本框需要输入6到18位字符。
- 边界值就是6个字符和18个字符
-
次边界:边界附近的值,按照系统规定的单位或者计算方式,一个数据差异性。
-
例如:字符就是个。一个字符,没有半个字符的说法;人民币金额,最小单位是0.01元(1分)
-
思考:6≤X≤12,请问测试中X的边界值选取哪几个进行测试?
5、6、7、11、12、13
-
思考:6<X<12,请问测试中X的边界值选取哪几个进行测试?
6、7、8 、10、11、12
-
思考:文本框输入字符要求不大于150字。
空、1、149、150、151
-
-
边界值的选择原则
- 如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据
- 如果输入条件规定了值的个数,则用最大个数、最小个数、比最少个数少1、比最大个数多1的数作为测试数据
- 根据规格说明的每个输出条件,使用前面的原则一
- 根据规格说明的每个输出条件,应用前面的原则二
- 如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例
- 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构边界上的值作为测试用例。
-



