黑盒测试用例的设计方法
等价类
- 概念
- 等价类划分是把所有程序 输入域划分成若干个子集合(等价类),然后从每一个子集合(等价类)中选取少数具有代表性的数据作为测试的输入数据。
- 在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。
1.保证质量,减少测试用例数量,提高效率
- 等价类划分 有效等价类(正面,不会报错) 和 无效等价类(负面,抛出错误)
- 等价类划分用例设计步骤和原则: 1. 分析需求,先确定有效等价类和无效等价类 2. 确定等价类后,建立等价类表,列出有划分出的等价类 3. 再从划分出的等价类中选择测试用例
- 设计用例覆盖有效等价类:一条用例尽可能多的覆盖有效等价类。减少测试用例的数量,避免重复,提高效率。
- 设计用例覆盖有效等价类:一条用例只能覆盖一个无效等价类。为了确定哪个因素触发错误,每一种错误都被正确处理
- 等价类划分处理原则
有效类:每个范畴中取有效类组合,作为一种有效的情况
无效类:(每个范畴中)每个无效类和其余范畴中的有效组合,生成各种无效的情况下 - 应用场景
当测试需要数据量过大,且数据操作可以分类时进行等价类划分
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
红包金额 | 1)0.01~200 | 2)小于0.01 |
3)数字 | 4)大于200 | |
5)不能超过两位小数 | 6)超过两位小数 | |
7)非数字(中文、字母、字符) | ||
----------------------------------------------- | ------------ | -------- |
有效:红包金额0.01~200之间的不超过2位小数的数字 | 50.25 | 1,3,5 |
无效:金额小于0.0.1 | 0 | 2 |
金额大于200 | 300 | 4 |
超过两位小数 | 99.9999 | 6 |
金额非数字 | @#¥,中 | 7 |
边界值
- 概念
边界值分析法是对等价类划分法的一个补充,边界值一般是从等价类的边缘值去寻找。 - 原则和步骤
- 确定边界值:应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据。范围相关,比如1~100。
- 有效等价类的边界、无效等价类的边界
- 注意 次边界值:IP地址(0-255),时间格式(0-23),2的幂值()256,1024,65536) 特殊边界值:0,负数,空值,空格等
- 边界值的作用
大量的错误是发生在输入和输出范围的边界上,而不是在输入范围的内部,因此对各种边界情况设计测试用例,可以查处更多的错误。提出更多bug。 - 应用场景
如果有需求规定了取值范围或规定类取值的个数时,可利用边界值进行测试。 - 上点、内点、离点
上点:边界上的值 内点:边界以内的值 离点:指得就是离上点最近得点,如果是开区间,那么离点就在域内,如果是闭区间,那么离点就在域外。
开区间:取里面值。用()表示
闭区间:取外面值。用[]表示
举例:500-1000
1.上点
500和1000
2.内点
比如500.1、501、750、999、999.9
3.离点
闭区间:[499,1001]
开区间:(501,999)
左开右闭:(501,1001]
输入条件 | 有效等价类 | 边界值 | 无效等价类 | 边界值 |
---|---|---|---|---|
红包金额 | 1)0.01~200 | 0.01,0.02,199.99,200 | 2)小于0.01 | 0 |
3)数字 | 4)大于200 | 200.01 | ||
5)不能超过两位小数 | 6)超过两位小数 | 0.009 | ||
7)非数字(中文、字母、字符) | ||||
----------------------------------------------- | ----------------------- | -------- | ||
有效:红包金额0.01~200之间的不超过2位小数的数字 | 0.01,0.02,199.99,200 | 1,3,5 | ||
无效:金额小于0.0.1 | 0 | 2 | ||
金额大于200 | 200.01 | 4 | ||
超过两位小数99. | 99.009 | 6 | ||
金额非数字 | @#¥,中 | 7 | ||
金额为空 | ||||
负数 | ||||
空格 |
流程分析(场景法)
- 概念
- 通过描述的业务流程(业务逻辑),设计用例来列出不同业务场景,作为测试用例的测试数据
- 分析业务的时候用。比如去银行取款的流程。设计测试用例常用的测试方法
- 使用
- 画出流程图
圆角矩形:开始或结束
矩形:表示步骤(操作、输入、输出结果)
菱形:判断条件(是、否),(审核/审批/评审)环节
箭头:流向 - 遍历场景,提取测试用例
- 覆盖正常的路径 --取到钱的路径 —判断的地方–Y
- 走每一个分支 --判断的地方 --找菱形–N
- 出错步骤重新回到主流程,建议多走一步正确的补助
- 注意 场景法的重点是测试流程,因此每个流程一个用例验证即可,流程测试没有问题并不能说明系统功能没有问题,还需要针对单步的功能进行测试
- 场景举例
场景一:插入合法银行卡,输入正确的密码,输入正确且充足的金额,ATM足够。–取到钱
场景二:插入不合法银行卡。 –退卡提示错误
场景三:插入合法银行卡,输入密码之后取消。–退卡
场景四:插入合法银行卡,输入错误的密码之后不取消,不超过3次。–提示密码错误,重输入密码 场景五:插入合法银行卡,输入错误的密码之后不取消,出错3次。–吞卡
场景六:插入合法银行卡,输入正确的密码之后不取消,输入不合法金额。–提示错误,重新输入 场景七:插入合法银行卡,输入正确的密码之后不取消,输入合法金额,账户金额不足。–提示错误,重新输入
场景八:插入合法银行卡,输入正确的棉麻之后不取消,输入合法金额,账户金额充足,ATM不足余额。–重新输入
错误推测(反推法)
- 概念 基于对被测试软件系统设计的理解、过往经验以及个人直觉,推测出软件可能存在的缺陷,从而有针对性地设计测试用例方法。强调的是对被测软件的需求理解以及设计实现的细节把握。要素:经验、知识、直觉。 考虑程序可能触发错误场景 —不能正常运行 不单独使用。可以作为其他方法的补充。
- 举例(登录页面)
首先列出可能导致结果出错的情况(登录失败)
- 账号密码错误(异常字符,为空)
- 验证(图片、短信)
- 网络问题
- 浏览器兼容性
- 性能弱(并发大量用户)
- 账号黑名单(举报)
- 登录失败错误次数(冻结账号)
- 服务器异常(无响应)
- 第三方登录问题
- 单点登录(不能重复登录。同一个QQ不能两个手机登录)
因果图、判定表将判定表的每一列作为依据,设计测试用例。检查输入条件的各种组合情况
- 两者必须结合使用,单独是没办法使用的
- 因:输入条件
- 果:输出结果
正交试验
1.介绍正交试验法是研究多因素、多水平的一种试验法,它是利用正交表来对试验进行设计,通过少数的试验替代全面试验,根据正交表的正交性从全面试验中挑选适量的、有代表性的点进行试验,这些有代表性的点具备了“均匀分散,整齐可比”的特点。
本规范只讨论各因素是相互独立的正交试验法,各因素相互影响的正交试验法在我们设计测试用例的时候用不到,所以不提。正交表是一种特制的表格,一般用Ln(mk)表示,L代表是正交表,n代表试验次数或正交表的行数,k代表最多可安排影响指标因素的个数或正交表的列数,m表示每个因素水平数,且有n=k*(m-1)+1。
- 为了在条件组合比较多的时候,选取具有代表性测试用例来执行,达到减少测试用例编写数量的需求
- 因素:因素可以看成一个变量(学了python自会理解) 姓名、性别、年龄就是因素
- 水平:水平可以看成变量所对应的值(学了python自会理解) 这个人叫吴子君,性别女,年龄18。吴子君、女、18就是水平2.使用对于单因素或两因素试验,因其因素少,试验的设计、实施与分析都比较简单。但在实际工作中,常常需要同时考察3个或3个以上的试验因素,若进行全面试验,试验的规模很大,由于时间和成本的限制我们不可能进行全面试验,但是具体挑其中的哪些测试用例进行测试我们心里拿不准,总担心不做不挑选的那些测试用例会遗漏一些严重缺陷。为了有效的、合理地减少测试的工时与费用,我们利用正交试验法来设计测试用例。正交试验法就是安排多因素试验、寻求最优水平组合的一种高效率的试验设计方法。我们用测试实例来进行说明使用正交试验法设计测试用例的好处。
测试需求:
某所大学通信系共2个班级,刚考完某一门课程,想通过“性别”、“班级”和“成绩”这三个查询条件对通信系这门课程的成绩分布,男女比例或班级比例进行人员查询:根据“性别”=“男,女”进行查询根据“班级”=“1班,2班”查询根据“成绩”=“及格,不及格”查询
按照传统设计——全部测试分析上述测试需求,有3个被测元素,被测元素我们称为因素,每个因素有两个取值,我们称之为水平值。所以全部测试用例个数是:2 * 2 * 2=8
序号 | 性别 | 班级 | 成绩 |
---|---|---|---|
1 | 女 | 1班 | 及格 |
2 | 女 | 1班 | 不及格 |
3 | 女 | 2班 | 及格 |
4 | 女 | 2班 | 不及格 |
5 | 男 | 1班 | 及格 |
6 | 男 | 1班 | 不及格 |
7 | 男 | 2班 | 及格 |
8 | 男 | 2班 | 不及格 |
利用正交表设计测试用例,我们得到的测试用例个数是n=3*(2-1)+1=4,对于三因素两水平的刚好有L4(2^3)的正交表可以套用,于是用正交表试验法得出4个测试用例如下:
序号 | 性别 | 班级 | 成绩 |
---|---|---|---|
1 | 女 | 1班 | 及格 |
2 | 女 | 2班 | 不及格 |
3 | 男 | 1班 | 不及格 |
4 | 男 | 2班 | 及格 |
根据实际需要可以在用正交试验法设计用例的基础上补充一些测试用例。4个测试用例与8个测试用例相比测试用例个数是减少了。因素数和水平数越大越能体现用正交表的好处。例如:对于一个四因素且每个因素均为三水平的试验,如果按照全面试验需要进行3 * 3* 3 * 3=81次。但是如果用正交试验法选择L9(34)正交表,n=4*(3-1)+1=9次试验就可以覆盖。从这点可以说明用正交试验法能有效地、合理地减少测试用例和工时,节约测试成本。
优点:根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的特点具备了“均匀分散,整齐可比”的特点。通过使用正交试验法减少了测试用例,合理地减少测试的工时与费用,提高测试用例的有效性。是一种高效率、快速、经济的实验设计方法。
缺点:对每个状态点同等对待,重点不突出,容易造成在用户不常用的功能或场景中,花费不少时间进行测试设计与执行,而在重要路径的使用上反而没有重点测试。虽然正交试验设计有上述不足,但它能通过部分试验找到最优水平组合,因而很受实际工作者的青睐。
状态迁移
对象转移是否符合要求,可以从状态迁移路径覆盖的角度
1、分析需求
2、绘制状态迁移图
3、绘制状态迁移树
4、提取测试路劲
5、利用等价类与边界值为每条路劲设计测试用例
流程图
圆角矩形:开始或结束
矩形:表示步骤(操作、输入、输出结果)
菱形:判断条件(是、否),(审核/审批/评审)环节
平行四边形:表示输入输出
箭头:流向