一 测试用例篇
1.测试用例的概念: 测试用例(Test Case)是为了实施测试而向被测试的系统提供的一组集合,这组集合包含:测试环境、操作步骤、测试数据、预期结果等要素
2.测试用例的好处
测试执行者的依据
使得工作可重复,自动化测试的基础评估需求覆盖率,覆盖率越高,说明测试质量越高,反之就是越低
用例的复用
积累测试的方法思路以供后续借鉴:
使用中带来困扰
测试用例的设计是费时费力的工作,往往设计测试用例所花费的时间比执行所花费的时间还多解决如下问题:
不知道是否较全面的测试了所有功能 测试的覆盖率无法衡量 对新版本的重复测试很难实施 存在大量冗余测试影响测试效率
2.测试用例设计方法
基于需求设计测试用例是测试设计和开发测试用例的基础,第一步就要分析测试需求,验证需求是否正确、完整、无二义性,并且逻辑自洽。在需求正确的基础上细化测试需求,从测试需求提炼出一个个测试点或者测试项,然后根据每一个测试点进行测试用例的设计;
基于需求的设计方法
等价类,边界值,因果图,正交排列,场景设计法,错误猜测法
在分析测试需求时,一般分为功能测试需求和非功能测试需求
1.功能需求测试分析:
对于功能测试中,可以借助功能框图来帮助我们进行测试的需求分析。概括起来,功能测试需求包括以下,通常包括以下几个方面。
(1)系统各个功能界面的验证
(2)借助业务把功能串起来进行测试
(3)功能的一致性,交互性(多功能互操作)的测试
(4)系统的不同输入,结果输出的业务数据测试。
(5)功能的错误操作,异常操作的测试(属于负面测试)
(6)功能实现用到的算法验证,有时需要用运代码评审
(7)用户操作的易用性,用户体验,往往结合功能测试同时验证
针对具体的需求,可以根据业务分类,用户角色(餐厅的会员系统)或者用户操作区域等将系统的功能分解成若干个功能模块,然后按照功能模块分别进行测试需求分析。按照功能模块划分,业务模块划分是最常见的做法
2.非功能需求测试分析
非功能测试需求主要涉及性能,安全性,可靠性,兼容性,易维护性和可移植性等。从测试需求分析来看,每一类非功能特性测试都需要根据需求单独分析。他们之间可能会存在相互影响,如安全性越高,就越有可能给易用性,性能带来更大的挑战。
这里要说明的是对于每一个应用软件系统,非功能特性的质量需求都是存在的,但是不同的项目类型对各个非功能特性的要求是不一样的,这个需要根据具体的项目、具体需求和不同产品应用的特点进行分析。
(1)纯客户端软件,比如字处理软件(Word,PPT),媒体(音频/视频)播放软件(电脑自带的)等。这类软件对系统的功能测试要求是最低的,但是对兼容性和稳定性,可移植性有一定的要求。
(2)企业内部的客户端/服务端(C/S)应用系统。比如电子邮件,即时通信系统(飞Q,企业QQ)等,在系统功能测试需求上比纯客户端复杂,要求功能正确,稳定性能好。但是整体上看,对性能,安全性,兼容性要求不高。
(3)外部大型复杂网络应用系统,比如电子商务,网上银行,视频网站(腾讯,优酷)等,除了有复杂的系统的功能测试需求外,在系统的性能,安全性,兼容性,容错性,可靠性等都有很高的要求
3.具体的设计方法
1.等价类
依据需求将输入(特殊情况下会考虑输出)划分为若干个等价类,从等价类中选出一个测试用例,如果这个测试用例测试通过,则认为所代表的等价类测试通过,这样就可以用较少的测试用例达到尽量多的功能覆盖,解决了不能穷举测试的问题
有效等价类:对于程序的规格说明书是合理的、有意义的输入数据构成的集合,利用有效等价类验证程序是否实现了规格说明中所规定的功能和性能
无效等价类:根据需求说明书,不满足需求的集合
等价类只考虑输入域的分类,没有考虑输入域的组合,需要其他的设计方法和补充。
如何用等价类的方法设计测试用例
组合规则:有效等价类这里的时候,尽可能一条测试用例覆盖尽可能多的覆盖有效等价类
无效等价类组合的时候,一条测试点,只能覆盖一个无效等价类
如下例所示 我们测试一个用户名为6-15的字母
我们再来一个例子 输入框6~15字母加数字(等价类)
2.边界值
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
1)我们分为上点,离点,内点
上点:无论是开区间还是闭区间还是半开半闭。上点就是边界上的点
内点:无论是开区间还是闭区间还是半开半闭,内点就是边间内的点
离点:离点就是边界左右的一个点,如果是闭区间,离点就是范围外的点,如果是开区间,离点就是范围内的点
日常语言中的"边界"漏洞
考完试发成绩了, 老师布置寒假作业: 超过60分的, 所有题目抄写1遍, 低于60分的, 所有题目抄写3遍.于是小明就没有写作业~~, 因为他刚好60分
1. 输入框长度为1-11,取边界值为:1、11、12、0
2. 运动员的参赛项目为1-3项,取边界值为:0项、1项、3项、4项
3. 查询面页面有999行,每50行为一页,取边界值为:输出0行、1行、50行、51行、999行
设计边界值的测试用例
3.错误猜测法
错误猜测法是对被测试软件设计的理解,过往经验以及个人直觉,推测出软件可能存在的缺陷,从而针对性地设计测试用例的方法。
这个方法强调的是对被测试软件的需求理解以及设计实现的细节把握,还有个人的经验和直觉。
错误推测法和目前流行的“探索式测试方法”的基本思想一致,这类方法在敏捷开发模式下的投入产出比很高,被广泛应运于测试。
这个方法的缺点是难以系统化,并且过度依赖个人能力。
以注册为例
1、校验中特殊字符空格的处理?
2、密码校验中的大小写?
3、姓名中的特殊字符?
4、密码发送是否明文
4.场景设计法
现在的软件几乎都是用事件触发来控制流程的,事件触发时的情景便形成了场景,而同一事件不同的触发顺序和处理结果就形成事件流。该方法可以比较生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,是测试用例更容易理解和执行。
典型的应用是是用业务流把各个孤立的功能点串起来,为测试人员建立整体业务感觉,从而避免陷入功能细节忽视业务流程要点的错误倾向
我们以淘宝的购买案例来看
5.因果图
因果图是一种简化了的逻辑图,能直观地表明程序输入条件(原因)和输出动作(结果)之间的相互关系。因果图法是借助图形来设计测试用例的一种系统方法,特别适用于被测试程序具有多种输入条件、程序的输出又依赖于输入条件的各种情况。
因果图需要掌握的基本知识
1.恒等
恒等:如果条件为真,那么结果必定为真。,条件为假,结果必为假 例如:动物园运来大熊猫,动物园一定有大熊猫
2.与:
只有2个条件都为真,那么结果为真 ,其中一个为假,结果为假例如:北京姑娘,必须有车且有房
3.或:
条件全为假,结果才为假,条件中有一个为真,结果为真
4.非
,条件为假,结果才为真
因果图法设计测试用例的步骤如下。
(0)充分理解需求
(1)分析所有可能的输入和可能的输出。
(2)找出输入与输出之间的对应关系。
(3)把因果图转换成判定表。
(4)把判定表对应到每一个测试用例
案例
案例1
假设业务单据的处理规则为:“淘宝618活动,订单已提交,订单合计金额大于300元或有红包,则进优惠
1. 对于这条业务规则,首先通过分析所有可能的输入和可能的输出,可以得到如下结果:
● 输入:订单已提交、订单没有提交 金额大于等于300,金额小于300、有红包,没有红包。
● 输出:优惠、不优惠。
2. 然后,进行第二步,找出输入与输出之间的对应关系。通过分析,可以看出有以下的对应关系。
(1)订单已提交,订单金额大于等于300元,有红包,有优惠
(2)订单已提交,订单金额小于等于300元,无红包,有优惠
(3)订单已提交,订单小于300元,有红包,有优惠
(4)订单已提交,订单小于300元,没有红包,没有优惠
(5)订单未提交,订单金额大于等于300元,有红包,没有优惠
(5)订单未提交,订单金额大于等于300元,无红包,没有优惠
(5)订单未提交,订单小于300元,有红包,没有优惠
(5)订单未提交,订单小于300元,有红包,没有优惠
3.画判定表
案例2:
继续以注册的需求为例:
姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册需要设计多少用例?2x2x2x2x2。
因果法设计测试用例可以帮助测试人员理清输入和输出的关系,但是对于比较复杂的输入和输出,会耗费大量时间
6.正交表法
正交试验设计(Orthogonal experimentaldesign)是研究多因素多水平的一种设计方法,它是根据正交性,由试验因素的全部水平组合中挑选出部分有代表性的点进行试验,通过对这部分试验结果的分析了解全面试验的情况,找出最优的水平组合。正交试验设计是一种基于正交表的、高效率、快速、经济的试验
因素(Factor):(变量)
水平(位级)(Level):(变量的取值)
正交表的构成:行数(Runs):正交表中的行的个数,即试验的次数,用N代表。
因素数(Factors):正交表中列的个数,用C代表。
正交法的目的是为了减少用例数目。用尽量少的用例覆盖输入的两两组合。
水平数(Levels):任何单个因素能够取得的值的最大个数。正交表中的包含的值为从0到数“水平数-1”或从1到“水平数”,用T代表
正交表的两条性质:
每一列中各数字出现的次数都一样多。
任何两列中的各有序数对出现的次数都一样多
正交法设计测试用例的步骤:
1、确认哪些因素(变量)
2、确认因素有哪几个水平(变量的取值)
3、通过工具去画正交表
4、将正交表去转换成测试用例
案例
继续以注册的需求为例:
姓名、邮箱、密码、确认密码、验证码必须全部输入,才能进行注册
因素:姓名、邮箱、密码、确认密码、验证码
水平:填写,不填写
7.设计案例
‘针对物体的测试用例’
1.设计水杯的测试用例
我们依然从这六个方面去考虑