【一】基本术语
【1】术语一:
(1)动态测试:通过运行软件的组件或系统来测试软件
==》需要不断地去运行系统来检测软件是否存在bug或缺陷。 eg.运行抖音,腾讯课堂能否进入课堂等。
(2)静态测试:对组件的规格说明书进行评审,对静态代码进行走查。
》比如通过阅读等方式去检测软件是否存在bug或缺陷。 eg.阅读和看需求规格说明书,看代码是否有书写错误。
(3)正式评审又叫组内评审:对评审过程以及需求文档的一种特定评审。
多次用例评审有三种方式:
交叉评审:在测试组内测试人员相互进行先评审(人员一般就是测试组里面的)
组内评审(又称正式评审):在项目组内进行评审(项目经理,测试经理,开发经理,开发人员等等与项目组相关的人员)
会议评审:有客户方参与。
(4)度量:测试所使用的方法或者标准。用了哪些测试方法,版本迭代过程中是否 0 bug才能上线,bug率也会作为度量的指标,bug密度。》1000条测试用例出现了多少条bug也会作为度量当前产品的质量。
(5)评审员:参与评审的人,每个人都可以是评审员
(6)记录员:记录评审会议上的会议纪要。
【2】术语二:
(1)技术评审:同行间对技术进行的评审,目的是技术实现达成共识。
==》对当前更新或者迭代的功能代码进行一个评审
==》对接口的代码进行一个评审
(2)走查::由文档作者逐步陈述文档内容,以收集信息并对内容达成一致
==》由产品经理对需求文档进行主讲
==》由软件测试工程师对测试用例进行主讲
(3)复杂性:系统或组件的设计或内部结构比较复杂, 导致难以理解,维护或验证的程度
(4)圈复杂度:程序中独立路径的数量。可以衡量一个组件模块的判定结构的复杂程度。(独立路径的数量就是圈复杂度)
==》开发人员编写的代码越复杂,圈复杂度越高
==》开发人员编写的代码越简单,圈复杂度越低
独立路径:独立路径是指从入口到出口的路径
1-4-6 ==》1指向4,4指向6
1-4-5-6
1-2-5-6
1-2-3-7-6
1-2-3-2-5-6 ==》不能1-2-3-2-3 ,走过一次就不能走了
一共5条独立路径 ==》圈复杂度等于5
1.圈复杂度的第一个通用计算公式:V = E - N + 2 (E:结构图的边数,N:节点数)
上面这个结构图一共10条边,7个节点
V = E - N + 2 = 10 - 7 + 2 = 5 ==》圈复杂度等于5
2.圈复杂度的第二个计算公式:V = 区域数
上面这个结构图所有的节点和线将整个区域分为了5块,最外面也属于一块区域。
3.圈复杂度的第三个计算公式:V = P + 1 (P是判定节点数,指向两个或两个以上的节点,判定节点指包含条件的节点,就是一个节点有是有否,一个节点有两个不同的方向,比如1指向2和4,2指向3和5,所以1和2是判定节点,图中一共有1,2,3,4四个判定节点 ==》4+1=5 ==》圈复杂度就是5)
练习:
圈复杂度等于3,独立路径:3条
单元测试,白盒测试
&与的符号:必须都满足条件,||或的符号,满足一个条件就可以了
a-d-g ==》(这条路径是n不满足的条件下走的)x=101,y=500,z=5000
a-b-c ==》(这条路径是y满足的条件下走的)输入x=101,y=501
a-d-e-f ==》x=101,y=500,z=5001
(5)控制流:执行组件或系统的一系列顺序的路径,以下为控制流程图(控制流图也叫控制流程图,是一个过程或程序的抽象表现)
==》开发人员根据要发生的场景画出控制流程图,比如登陆界面,输入密码失败,进入到重置密码界面,然后需要输入手机验证码等一系列场景,根据这些场景画出控制流程图
(6)数据流:表示数据对象的顺利或状态发生变化的过程
==》数据流从哪里来?从用户哪里来,用户首次注册的时候输入的数据
==》数据流最终会到哪里去?数据保存到数据库里面去,下次用户登陆的时候就会调取数据库的数据。
(7)计算对象:计算对象是结构图或程序图,而程序图又包括控制流图与流程图
【二】功能测试用例 设计方法 》等价类
常用的设计方法:
等价类(重点)
边界值(重点)
判定表
因果图
场景法(几乎不用)
正交表(几乎不用)
状态迁移图(几乎不用)
软件测试工程师》根据需求文档编写测试点》根据测试点编写测试用例或者测试案例》根据测试用例去执行,然后发现bug
在公司如何进行评审测试用例:==》公司中最多的还是组内评审(项目组成员进行评审)
组内评审 ==》用例评审的会议 ==》发会议邀约 ==》谁写的用例谁主讲
【1】等价类
指某个输入域的集合,在集合中各个输入的条件都是等效的
输入域 ==》需求:考试成绩在0-100分之间进行打分 ==》0-100就是一个输入域 ==》0-100之间的数字属于这个输入域的集合
在0-100之间输入2,55,99,88都是等效的 ==》等价类当中的等价都是等价的
(1)有效等价类:对程序规格说明有意义的、 合理的输入数据(比如在0-100之间合理的输入数据2,55)
(2)无效等价类:对程序规格说明无意义的 、 不合理的输入数据(比如在0-100之间不合理的输入数据102,-1,dcs,小明)
规定了输入规则时,可以划分出一个有效的等价类(符合 规则)和若干个无效等价类(从不同角度违反规则)
eg1.密码由6-10位英文字符,或数字字符,或下划线组成
有效等价类:密码在6-10位字符之间
无效等价类:密码小于6位,或密码大于10位(从字符的长度方面违反),特殊字符,中文字符(从字符的类型方面违反)
eg2.输入值为布尔值(真或假)
有效等价类:输入框输入真或假
无效等价类:输入框输入非真或非假
eg2.规定了输入数据的一组值(如文化程度:初 中、高中、 大学)
有效等价类:输入框输入初中,高中,大学
无效等价类:输入框输入小学或者研究生
【2】等价类划分的测试用例的设计思路:
根据等价类用例设计方法去进行用例的设计
eg.QQ密码由6-10位英文字符,或数字字符,或下划线组成 ==》输入条件
(1)找输入条件
==》QQ密码由6-10位英文字符,或数字字符,或下划线组成
(2)为每个输入条件找有效、无效等价类,并为每个等价类进行编号
(3)用最少的用例覆盖最多的有效等价类
==》根据上面的需求开始编写测试用例
1.在公司里面一般会采用excel,xmind思维导图,脑图去编写测试用例
2.有的公司可能直接会在用例管理工具里面编写
==》测试用例通常包括
1.用例编号:dcs_001,dcs_002,dcs_003
2.用例标题:通常以验证开头
3.用例步骤:验证用例标题需要执行什么样的步骤,主要验证的是密码功能,账号默认是正确的,输入正确的密码是从有效等价类1,2,3,4里挑选组成的(输入错误的密码是从无效等价类5,6,7里挑选组成的)
4.预期结果:
5.场景:正常场景:正向的,登陆成功的,里面都是有效等价类,没有包含无效等价类 / 异常场景:无效等价类
(4)每一个无效等价类都是一个用例
(5)并非所有有效等价类都有无效
(6)等价类的覆盖可以重复覆盖
【3】等价类测试用例编写规范
看清楚需求,也就是要求,不要扣细枝末节然后把需求改了
(1)用例编号:dcs_001,dcs_002,dcs_003
(2)用例标题:
==》通常以验证开头
==》用例标题不能一直重复出现,要把明确的验证点写出来
==》用例标题不能出现或,一个用例标题只能存在一个条件。
验证在档案管理系统中输入年月份长度大于6位的数字字符进行检索,检索失败,1990011
验证在档案管理系统中输入年月份长度为6位特殊字符(非数字)进行检索,检索失败,@@%%¥¥
验证在档案管理系统中输入年份小于1990,月份为01-12月之间进行检索,检索失败,188702(此条用例包含一个无效等价类-->尽量每条用例包含一条无效等价类)
验证在档案管理系统中输入年份小于1990,月份大于12月进行检索,检索失败,188791(此条用例包含两个无效等价类-->尽量不要让一条用例包含两条无效等价类)
(3)用例步骤:验证用例标题需要执行什么样的步骤,主要验证的是密码功能,账号默认是正确的,输入正确的密码是从有效等价类1,2,3,4里挑选组成的(输入错误的密码是从无效等价类5,6,7里挑选组成的)
》1)等价类当中的等价都是等价的,在编写测试用例的时候,尽量不要重复相同的有效等价类,没有什么意义(例如有效等价类:密码在6-10位字符之间,验证输入1234567和12345678是相同的效果,重复没有什么意义)》只需要验证一次有效等价类就可以了
==》2)在编写测试用例无效等价类的时候,例如密码在6-10位字符之间,小于6位和大于10位无效等价类,各自验证一次12345五位密码和12345abcde十位密码就可以了 》再去验证1234四位密码和123456abcde十一位密码没有什么意义》只需要验证两次无效等价类就可以了
==》3)6-10位(从字符的长度方面违反),特殊字符,中文字符(从字符的类型方面违反)都要考虑到 ==》在编写测试用例的时候,每个不同的有效等价类都要验证一遍,不要漏掉 ==》QQ密码由6-10位英文字符,或数字字符,或下划线组成 ==》英文字符,数字字符,下划线都要验证到
》4)用例步骤用阿拉伯序号1,2,3表示就可以,用例步骤中例如 1.输入正确的密码如:1234567;》1234567后面不要加‘ ; ’ 因为测试的时候会把1234567;看作一个整体
(4)预期结果:
==》用例标题验证的正确密码,而在用例步骤的时候输入错误的密码,预期结果验证的登陆失败,写用例时要注意检查要首尾呼应,不要自相矛盾。
(5)场景:正常场景:正向的,登陆成功的,里面都是有效等价类,没有包含无效等价类 / 异常场景:无效等价类
案例练习:
现有一个档案管理系统,容许用户通过输入年月对档案文件进行检索,系统对查询条件年月的输入限定为1990年1月~2049年12 月,并规定:日期由6位数字字符组成,前4位表示年,后2位表示月
有效等价类取值:
199001
199012
200006
204901
204912
无效等价类取值:
19900 ==》小于6位数字字符
2049121 ==》大于6位数字字符
!@@¥¥%% ==》包含特殊字符
1990ab ==》包含英文字符
1990多测师 ==》包含中文字符
189901 ==》年份小于1990
205001 ==》年份大于2049
199000 ==》月份小于01
204913 ==》月份大于12
输入年月份为空 ==》最容易出现bug的异常场景
【4】常见的能够划分等价类的地方
(1)数值的范围:1990-2049
(2)重复次数:银行卡取钱密码3次输入错误
(3)字符串长度:规定当前输入框输入字符串长度为6-8位字符
(4)字符串组中字符的个数最低为1个,最高为3个:[‘a’,‘b’,‘c’]
(5)文件命名:支持.jpg ,.jpeg , .bmp格式
(6)文件大小:支持上传的文件大小为1M-500M
(7)屏幕的颜色种类:黑色,橙色,蓝色
(8)超时时间:60s ==》ui自动化
【5】等价类的优缺点
优点:考虑了单个输入域的各类情况,避免了盲目或随机选取输入数据的不完整性和覆盖的不稳定性
缺点:方法虽然简单易用,但是没有对组合情况进行充分的考虑。需要结合其他测试用例设计的方法进行补充。比如边界值
【二】功能测试用例 设计方法 ==》边界值
【1】边界值定义
(1)上点:边界上的点
(2)离点:离上点最近的点(即上点左右两边最邻近的点)
(3)内点:在域范围内的点
一个输入域,用边界值用用例设计方法设计测试用例需要用到几个点?几个值? ==》点:上点(有两个值),离点(有两个值),内点 ==》 值:5个值
eg.在输入框中对0-100分进行打分
上点:边界上的点0,100
离点:-1 101
内点:88
闭区间【0,100】 ==》正常测试点:0,100 ==》异常测试点:-1,101 ==》内点(正常测试点):88
开区间(0,100) ==》正常测试点:1,99 ==》异常测试点:0,100 》内点(正常测试点):88
半闭半开区间【0,100)》正常测试点:0,99 》异常测试点:-1,100 》内点(正常测试点):20
半开半闭区间(0,100】》正常测试点:1,100》异常测试点:0,101 ==》内点(正常测试点):20
工作中你认为是bug? 开发认为不是bug,你是如何处理?总结:三个方向:
(1)自我原因,检查自己的测试过程或疏忽的问题,如:页面404,服务未启动,自己配置错了等。
(2)开发原因:
a.你把报错的图片截取出来
b.把测试步骤记录下来,重现bug步骤
c. 查看后台的日志,把日志错误查找出来
d、在和开发进行沟通,说明原因;如果电话沟通不了,现场沟通,操作bug说明报错。
e.如果开发还是不认,需要找开发经理,协调测试,请求其他开发辅助解决;
(3)既不是开发原因,也不是测试原因,是产品原因
与开发沟通,开发是按需求开发,测试是按需求测试,测试的时候发现测试不了,少了某个步骤或环节,测试不了,找到开发,开发不认。找产品确定功能点,是不是产品遗漏了,如果是产品少了需求,就要从产品通过邮件发送整个项目组,补上需求,给开发加上工期,测试在测试。