黑盒测试:测试者在不考虑程序内部结构的情况下,仅一句程序功能的需求规范来设计测试用例。
- 测试用例:是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
- 测试用例表:是用来提前设计出所有测试用例,再根据测试用例表,慢慢核实每一行是否满足需求。
主要分为等价类划分、边界值分析、决策表法、因果图分析法与正交实验设计法五种测试方法:
- 情景设计法此方法为本文设计的测试工作中最常用的测试用例设计方法。情景设计法的核心思想是借用软件设计的事件触发思想,利用事件触发来控制流程形成情景,有利于测试人员进行测试用例的设计。
- 等价类划分法作为常用的黑盒测试用例设计方法,等价类划分法是指将所有程序的可能输入划分为若干个子集,再从各子集中选取具有代表性的数据作为测试参数的输入。
- 功能图分析法在功能图分析法中使用了类似于白盒测试方法中的逻辑覆盖和路径测试的概念。逻辑覆盖是以程序的逻辑结构为基础的测试用例设计方法。该方法要求测试人员对程序的逻辑结构有一定的了解。由于覆盖测试的目标不同,可将逻辑覆盖分为语句覆盖、判定覆盖、判定条件覆盖、条件组合覆盖及路径覆盖。
- 边界值分析法此方法与等价类划分法较为相关,针对边界情况在数据的边界值及其左右选择数据作测试用,做到较好地覆盖。此方法关注更多的是特殊的边界数据,所以与等价类划分法相结合,可以得到很好地用例设计结果。以上即针对本文涉及的软件进行的测试用例编写方法。此外还有错误推测法、正交设计法等,在此不做详细介绍。
等价类划分
等价类划分:把程序划分成为若干个部分,从每个部分选取少许代表性数据当测试用例。
划分:
- 有效等价类:即 合理的、有意义的输入数据结构的集合。
- 无效等价类:即 不合理的、无意义的输入数据结构的集合。
设计测试用例的步骤:
- 为每个等价类规定唯一的编号;
- 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步知道所有的有效等价类都被覆盖为止。
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
测试用例等价类表:
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|
测试用例表:
测试用例编号 | 输入 | 期望输出 | 覆盖的等价类 |
---|
例子
在某网站申请免费信箱时,要求用户必须输入用户名、密码以及确认密码,对每一项输入条件的要求如下:
- 用户名:要求为4~10位,可使用英文字母、数字、-、_,并且首字母必须为字母或数字;
- 密码:要求位6~10位,只能使用英文字母、数字、-、_;
- 确认密码:区分大小写。
等价类表:
输入条件 | 有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|---|
用户名 | 4~10位 | 1 | 少于4位 | 7 |
多于10位 | 8 | |||
首字符为字母 | 2 | 首字符为除字母、数字之外的其他字符 | 9 | |
首字符为数字 | 3 | 组合中含有除英文字母、数字、-、_之外的其他特殊字符 | 10 | |
密码 | 6~10位 | 4 | 少于6位 | 11 |
多于10位 | 12 | |||
英文字母、数字、-、_组合 | 5 | 组合中含有除英文字母、数字、-、_之外的其他特殊字符 | 13 | |
确认密码 | 内容与密码相同 | 6 | 内容与密码不同 | 14 |
测试用例表:
测试用例编号 | 用户名 | 密码 | 确认密码 | 预期输出 | 覆盖的等价类 |
---|---|---|---|---|---|
T1 | NEMO_-2020 | NEMO_-123 | NEMO_-123 | 注册成功 | 1,2,4,5 |
T2 | 2020_-NEMO | NEMO_-123 | NEMO_-123 | 注册成功 | 1,3,4,5 |
T3 | NEM | 12345678 | 12345678 | 用户名要求4~10位 | 7 |
T4 | NEMO1234567 | 12345678 | 12345678 | 用户名要求4~10位 | 8 |
T5 | _NEMO | 12345678 | 12345678 | 用户名首字符必须为字母或数字 | 9 |
T6 | NEMO& | 12345678 | 12345678 | 用户名中含有非法字符 | 10 |
T7 | NEMO | 123 | 123 | 密码要求6~10位 | 11 |
T8 | NEMO | 12345678910 | 12345678910 | 密码要求6~10位 | 12 |
T9 | NEMO | 12345678& | 12345678& | 密码中含有非法字符 | 13 |
T10 | NEMO | NEMOOO | nemooo | 确认密码不一致 | 14 |
注意:等价类表→测试用例表→上机测试。
边界值分析
边界值分析法:是对等价类划分的进一步补充,通过选择等价类边界值的测试用例来发现更多的错误,因为大量的错误大多发生在输入输出与边界,而不是其取值范围内。
设计测试用例的步骤:(其实就是针对小于、等于和大于边界值的测试用例进行测试)(画个数轴最省事)
例如,
取值范围-4~-1
边界值-4、-1
小于-4:取-5
等于-4:取-4
大于-4:取-1,这里不用取-3了,-1就够了,当然-3也行
小于-1:取-4
等于-1:取-1
大于-1:取0
所以最终取:-5、-4、-1、0(即 刚好达到该范围的边界值,以及刚刚超过这个范围的边界值)
如果输入条件规定取值的范围,则选取刚好达到该范围的边界值,以及刚刚超过这个范围的边界值;
例如,若输入值的范围是“-0.1~1.0”,则可选取“-1.001”、“-1.0”、“1.0”、“1.001”作为测试输入数据。
如果规定的是输入值的个数,则选取最大个数,最小个数,以及比最大个数大一个的个数和比最小个数小一个的数;
例如,一个输入文件可有1~255个记录,则可以分别设计有1个记录、255个记录以及0个记录和256个记录的输入文件。
如果规定的是输入域或输出域的有序集合,则选取集合的第一个元素和最后一个元素最为实验用例;
注意:是“有序”集合,所以取第一个和最后一个。
如果程序中使用了一个内部数据结构,则应当选取这个内部数据结构的边界值;
例如,如果程序中定义了一个数组,其元素下标的下界是0,上界是100,那么应该选择达到这个数组下标边界的值,如0和100作为测试用例.
分析规格说明书,找出其他可能的边界值条件。
测试用例表:
测试用例编号 | 输入 | 预期输出 |
---|
例子
持卡人境外消费交易单笔金额满2000元人民币或等值外币,即可享20元人民币或等价外币返现;
境外消费单笔满3000元人民币或等值外币,即可享30元人民币或等价外币返现;
境外消费单笔满5000元人民币或等值外币,即可享50元人民币或等价外币返现;
每张卡片每个自然月最高返现500元人民币或等值外币。每笔消费交易返现一次,并且单笔消费额不包含货币转换费。
测试用例表:(取值范围0~N+)
测试用例编号 | 输入(消费)(RMB) | 预期输出 |
---|---|---|
Test1 | 单笔消费-1 | 错误,单笔消费不得小于0 |
Test2 | 单笔消费0 | 没有返现 |
Test3 | 单笔消费2000 | 返现20 |
Test4 | 单笔消费2001 | 返现20 |
Test5 | 单笔消费3000 | 返现30 |
Test6 | 单笔消费3001 | 返现30 |
Test7 | 单笔消费5000 | 返现50 |
Test8 | 单笔消费5001 | 返现50 |
Test9 | 当月消费0 | 返现0 |
Test10 | 当月消费50000 | 返现500 |
Test11 | 当月消费50001 | 返现500 |
注意:以上所有的一切都只是准备测试用例,即 接下来该测试什么,而不是说黑盒测试就是画个表就完了。
设计完测试用例之后,再一个一个上机对着测试用例输入进行测试,看看是否符合期望输出。
决策表法
由于前两种较为常见,所以先介绍这么多,后面的待日后补充。