- ??📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ?留言 📝 如有错误敬请指正!
- 📢交流讨论:欢迎加入我们一起学习!
- 📢资源分享:耗时200+小时精选的「软件测试」资料包
- 📢 软件测试学习教程推荐:火遍全网的《软件测试》教程
?
一.概念
1.什么是测试用例?
在测试过程中很重要的一类文档,它是测试工作的核心、是一组在测试时输入输出的标准、是软件需求的具体对照。
2.测试用例的作用:
检验软件是否满足客户需求、体现一个测试人员的工作量、展现测试用例的设计思路
3.测试用例所包含的内容:
用例编号、用例名称、测试背景、前置条件、优先级、重要级、测试数据、测试步骤、预期结果、实际结果、备注。
4.测试用例的编写流程:
需求分析->提取测试点->测试用例编写->测试用例评审
二.需求分析
1.什么是需求?
客户的需要的东西以及对东西的要求
2.需求的种类有什么?
业务需求:关注系统是否满足业务要求
用户需求:关注系统是否满足用户习惯
功能需求:关注系统是否满足功能要求
三.测试用例的设计方法和编写
1.如何设计编写测试用例?
对各个功能模块进行测试点分析提取测试点再堆测试点进行用例编写
【测试点:通过需求分析后对得出的需要进行测试的具体内容】
比如对PC端QQ账号的登录模块,提取测试点就有:
①正常登陆 ②账号为空时点击登录 ③密码为空时点击登录 ④账号密码都为空时点击 登录 ⑤密码错误时点击登录 ⑥找回密码功能是否有效 ⑦记住密码功能是否有效 ⑧ 自动登录功能是否有效
2.编写测试用例该注意什么?
①根据项目的实际情况设计测试用例表格
②用例格式不要生搬硬套
③根据具体情况编写
3.编写测试用例的常用方法:
①等价类划分法:等价类是输入的集合,比如在注册时,密码规定为6-16位英文字母或数字及下划线,那么小于6位的一串字符就是一个等价类,大于16位的一串字符是另一个等价类,在6-16位之间且符合规范的一串字符也是一个等价类,在6-16位之间的但包含除英文字母和数字和下划线之外的字符是另外一个等价类。
在每个等价类中选取一定数目的值作为代表。等价类分为有效等价类和无效等价类,输入符合条件的值对功能进行检验,输入无效等价类中的值可以找出程序错误的地方。
②边界值分析法:对输入的边界值或稍大(小)于边界值的值进行分析。比如某公司在招聘时筛选简历时对年龄的要求是20岁到35岁,那么19、20、21、34、35、36都是边界值,对其进行输入测试观察结果是否符合要求。
③场景法:通过运用场景来对系统的功能点或业务流程的描述,从而提升测试效果。场景法一般分为基本流和备用流,覆盖所有的场景。
④错误猜测法:通过直觉和经验对结果进行分析。
四.测试用例评审:
1.什么是用例评审?
①简单的说,评审就是对测试用例进行检查
②评审包括:同行评审、小组评审、部门评审和第三方评审等
③不同的评审有不同的角色参与其中
2.评审的意义:
①通过评审发现用例的不足
②方便测试人员改进用例
③达到在测试时提高测试质量的目的
3.评审的流程是什么?
评审后改进测试用例,再进行评审再改进测试用例,这样一直循环直到评审都通过,这时候才结束评审,也标志着测试用例编写的完成
二.测试用例管理:
1.为什么要管理测试用例?
①测试用例数目巨大
②测试用例会根据需求的改变而改变
③测试用例需要补充完善
2.如何管理测试用例?
①原始的Excel管理
②专业的项目管理系统(eg:ALM、禅道、testlink、Bugzilla、JIRA)一般都为web格式
三.还是举个例子实在
如图所示为CSDN的web端登录界面部分的截图:
? ??
如图所示为提取的测试用例点以及编写的相应的测试用例:
测试点:
?
测试用例:
?
等价类
因材施教的例子:
原则上讲,老师都应该根据每个学生的学习情况制定相应符合的学习方案,但是实际上学生太多,老师管不过来,只能讲学生分为三六九等,优等生强调知识面的扩展和综合能力的提升,中等生强调夯实基础,查缺补漏,差等生强调优先掌握重点,暂时逃过难点.......
思路:输入的集合是无穷的,不能全部都覆盖到
等价类:依据需求将输入划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的整个等价类测试通过,这样就可以通过较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题
弊端:等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充?
有效等价类:对于程序的规格说明书是合理的,有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明书中所规定的功能和性能
无效等价类:根据需求说明书,不满足需求的集合
超市买水果
有效等价类:苹果,香蕉,桃子...
无效等价类:青菜,大米,饮料... ?
边界值
日常语言的漏洞:
考完试发成绩了,老师布置寒假作业:超过60分的,所有题目抄写一遍,低于60分的,所有题目抄写三遍
于是小明就没有作业~~~,因为他刚好60分
边界值:边界值分析法就是对输入或者输出的边界值进行测试的一种黑盒测试方法,通常边界值分析法是作为对等价类划分方法的补充,这种情况下,其测试用例来自等价类的边界?
1. 输入框长度为1-11,边界值取值:0,1,11,12
2. 运动员参赛项目为1-3项,边界值取值:0项,1项,3项,4项
3. 查询面页面有999行,每50行为一页,边界值取值:0行,1行,50行,51行,999行?
因果图
因果图:因果图是一种简化了的逻辑图,能直观的表明程序输入条件(原因)和输出动作(结果)之间的相互关系,因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件,程序的输出又依赖于输入条件的各种情况
因果图需要掌握的基本知识:
恒等
恒等:如果原因为真,那么结果必为真
与
与:只有当两个原因都为真的时候结果才为真??
或?
或:两个原因中有一个为真,那么结果就为真?
非?
非:只有原因为假,结果才为真?
因果图设计测试用例的步骤:
分析所有可能的输入和可能的输出
找出输入与输出之间的关系
画出因果图
把因果图转化成判定表
把判定表对应到每一个测试用例 ?
?案例:
淘宝在双十一退出打折优惠活动,订单已提交,订单金额大于300或有红包,则优惠
1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
输入:订单已提交,订单金额大于300,有红包
输出:优惠,不优惠
2. 然后进行第二步,找出输入域输出之间的关系,通过分析得出以下对应关系
订单已提交,订单金额大于300,则优惠
订单已提交,订单金额小于等于300,无红包,不优惠
订单已提交,订单金额小于等于300,有红包,优惠
订单已提交,有红包,优惠
?订单未提交,不优惠
3. 为了方便画出因果图和判定图,对所有输入和输出编号,编号如下:
?1:订单已提交
?2:订单金额大于300
?3:有红包
?21:优惠
?22:不优惠?
4. 画因果图
? ? ? ? ? ? ?
5. 画判定表
? ? ? ? ? ? ? ? 1 2 3 4 5 6 7 8
? ? ? ? 条件 1 Y Y Y Y N N N N
? ? ? ? ? ? ? ? ?2 Y Y N N Y Y N N
? ? ? ? ? ? ? ? ? 3 Y N Y N Y N Y N
中间结果 ? ?11 Y Y Y N Y Y Y N
动作 ? ? ? ? ? 21 Y Y Y N N N N N
? ? ? ? ? ? ? ? ? 22 N N N Y Y Y Y Y
?6. 最终的测试用例
1,2,3,4,5(包括6,7,8)
正交排列
因果图法测试用例太多怎么办?
正交法的目的是为了减少用例数量,用尽量少的用例,覆盖输入的两两组合
正交试验设计是研究多因素多水平的一种设计方法,它是根据正交性,由实验因素的全部水平组合中挑选出部分有代表性的点进行实验,通过对这部分实验结果的分析了解全面试验的情况,找出最优的水平组合,正交试验设计是一种基于正交表的,高效率,快速,经济的试验.
因素(Factor):在一项试验中,凡是考虑的变量都称为因素(变量)
水平(位级) ?Level :在试验范围内,因素被考查的值称为水平(变量的取值)
正交表的构成:
行数(Runs):正交表中行的个数,即试验的次数,用N表示
因素数(Factors): 正交表中列的个数,用C表示
水平数(Levels): 任何单个因素能够取到的值的最大个数,正交表中包含的值为从0到数"水平数-1"或者从1到"水平数",用T表示
正交表的表示形式: L=行数(水平数*因素数) ?L=N(TC)
正交表的两条性质:
每一列中各数字出现的次数都一样多
任何两列锁构成的各有序数对出现的次数都一样多
正交法设计测试用例的步骤:?
1、有哪些因素(变量)
2、每个因素有哪几个水平(变量的取值)
3、选择一个合适的正交表
4、把变量的值映射到表中
5、把每一行的各因素水平的组合作为一个测试用例
6、加上你认为可疑且没有在表中出现的用例组合?
案例
以注册为例:
1.因素:姓名,邮箱,密码,确认密码,验证码
2.水平: 填写,不填写
实验说明 选择正交表 因素与水平 ? ? ?
序号 1 2 3 4 5
因素名称 姓名 EMAIL 密码 确认密码 验证码
水平1 填写 填写 填写 填写 填写
水平2 不填写 不填写 不填写 不填写 不填写
3.表中的因素数:5
表中至每个因素数的水平数=2
行数取最少的一个,即试验次数最少的一个
L=N(TC)=(2-1)*5+1=6(25) ? ? N试验次数 ? T水平数 ? C因素数
?4.生成测试用例
实验计划表 ? ? ? ? ? ?
所在列 1 2 3 4 5 6
因素 姓名 EMAIL 密码 确认密码 验证码 实验结果
实验1 填写 填写 填写 填写 填写 ?
实验2 填写 填写 不填写 填写 不填写 ?
实验3 填写 不填写 填写 不填写 不填写 ?
实验4 不填写 填写 不填写 填写 不填写 ?
实验5 不填写 不填写 填写 不填写 填写 ?
实验6 不填写 不填写 不填写 不填写 填写 ?
场景设计法
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流,该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,使测试用例更容易理解和执行
案例
以注册为例
错误猜测法
错误猜测法是经验丰富的测试人员喜欢使用的一种测试方法
基于经验和直觉,找出程序中你认为会出现的错误,有针对性地设计测试用例,经验可能来自于对某项业务的测试较多,也可以来自售后用户的反馈意见,或者从故障管理库中整理出bug,整理出产品越往哪些地方越容易出现问题,问题越多的地方,潜在的bug越多
案例
以注册为例
1、校验中特殊字符空格的处理?
2、密码校验中的大小写?
3、姓名中的特殊字符?
4、密码发送是否明文
?
?最后我邀请你进入我们的软件测试学习交流群:785128166, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路
感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
??