【软件工程】黑盒测试——等价类划分法
黑盒测试——等价类划分法
图:封面
开发语言及实现平台或实验环境
在 Windows 7 或 Windows 10 操作系统上,使用 C,C++,C#或 Java 语言 及对应的开发环境(IDE)
实验目的
- 认识黑盒测试方法中等价类划分测试方法原理 2. 掌握黑盒测试方法中等价类划分测试方法过程
实验要求
- 要求学生理解并掌握弱一般等价类测试和强一般等价类测试方法、原理 和测试过程
- 具体为每一组,每组二——五人,根据实验题目编写出对应的 c 语言或 c++语言程序,组间相互交换程序,按黑盒测试的方法进行测试。
实验原理
对编写的实验内容,采用等价类划分测试方法进行黑盒测试。
实验材料
- 三角形问题
问题描述:三角形问题接受三个整数,a、b 和 c 作为输入,用作三角
形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰 三角形、不等边三角形或非三角形。
作为输入:三角形的三条边必须满足如下条件: C1:1<=a<=100
C2:1<=b<=100
C3:1<=c<=100
C4:a<b+c C5:b<a+c C6:c<a+b - NextDate 函数
问题描述:NextDate 是一个由三个变量(月份、日期和年份)的函数。
函数返回输入日期后边的那个日期。 作为输入:变量月份、日期和年都具有整数值,满足以下条件。 C1:1<=月份<=12
C2:1<=日期<=31
C3:1912<=年<=2050 - 佣金问题 问题描述:前亚利桑那洲境内的一位步枪销售商销售密苏里州制造商
制造的步枪机(lock)、枪托(stock)和枪管(barrel)。
枪机卖 45 美元,枪托卖 30 美元,枪管卖 25 美元。 销售商每月至少要售出一支完整的步枪, 且生产限额是大多数销售商在一个月内可销售 70 个枪机、80 个枪托和
90 个枪管。 每访问一个镇子后,销售商都给密苏里州步枪制造商发出一份很短的
电报,通知几个枪机被售出。这样步枪制造商就知道当月的销售情况,并 计算销售商的佣金如下:
不到(含)1000 美元的部分为 10%; 1000(不含)~1800(含)美元的部分为 15%;
超过 1800 美元的部分为 20%。 佣金程序生成月份销售报告,汇总售出的枪机、枪托和枪管总数,销
售商的总销售额以及佣金。
实验步骤
- 预习相关课堂和实验内容,了解测试对象。
- 编写实验材料源代码。
- 划分等价类,设计测试用例。
- 根据问题需要建立桩模块和驱动模块。
- 测试。
- 填写试验报告。
实验代码
三角形问题
1 | package procs; |
NextDate
1 | package procs; |
佣金问题
1 | package procs; |
测试用例设计
三角形问题:测试用例
使用弱健壮(Weak Robust)的等价类测试用例设计方法:
- 划分有效等价类和无效等价类(序号是每一个等价类唯一的编号)
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
是否满足边长输入要求 | 1. 1<=a<=100 2. 1<=b<=100 3. 1<=c<=100 |
4. a<1 || a>100 5. b<1 || b>100 6. c<1 || c>100 |
是否为非三角形 | 7. a+b > c 8. a+c > b 9. b+c > a |
10. a+b <= c 11. a+c <= b 12. b+c <= a |
是否为等腰三角形 | 13. a=b 14. b=c 15. c=a |
16. a!=b && b!=c && c!=a |
是否为等边三角形 | 17. a=b && b=c && c=a | 18. a != b 19. b != c 20. c != a |
对有效等价类设计测试用例:
测试用例(a, b, c) | 预期输出 | 覆盖编号 |
---|---|---|
7, 8, 9 | 不等边三角形 | 1, 2, 3, 7, 8, 9 |
7, 7, 9 7, 8, 8 9, 8, 9 |
等腰三角形 | 1, 2, 3, 7, 8, 9 13 14 15 |
7, 7, 7 | 等边三角形 | 1, 2, 3, 7, 8, 9 13 14 15 17 |
对无效等价类设计测试用例:
测试用例(a, b, c) | 预期输出 | 覆盖编号 |
---|---|---|
0, 1, 1 1, 1, 101 1, 0, 1 1, 101, 1 1, 1, 0 |
非三角形 | 4 5 6 |
7, 8, 9 | 非等腰三角形 | 16 |
以上组成对三角形问题的弱健壮等价类测试用例设计。
NextDate:测试用例
- 划分有效等价类和无效等价类(序号是每一个等价类唯一的编号)
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
是否满足月份输入要求 | 1. month >= 1 2. month <= 12 |
3. month < 1 4. month > 12 |
否满足日期输入要求 | 5. day >= 1 6. day <= 31 |
7. day<1 8. day>31 |
否满足年份输入要求 | 9. year>=1912 10. year<=2050 |
11. year<1912 12. year>2050 |
对有效等价类设计测试用例:
测试用例(year, month, day) | 预期输出 | 覆盖编号 |
---|---|---|
1981, 6, 15 | 1981-6-16 | 1, 2, 5, 6, 9, 10 |
对无效等价类设计测试用例:
测试用例(year, month, day) | 预期输出 | 覆盖编号 |
---|---|---|
1911, 6, 15 | 年份超出范围 | 11 |
2051, 6, 15 | 年份超出范围 | 12 |
1981, 0, 15 | 月份超出范围 | 3 |
1981, 13, 15 | 月份超出范围 | 4 |
1981, 6, 0 | 日期超出范围 | 7 |
1981, 6, 32 | 日期超出范围 | 8 |
以上组成对NextDate的弱健壮等价类测试用例设计。
佣金问题:测试用例
nLock: 步枪机的销量
nStock: 枪托的销量
nBarrel: 枪管的销量
- 划分有效等价类和无效等价类(序号是每一个等价类唯一的编号)
输入条件 | 有效等价类 | 无效等价类 |
---|---|---|
是否满足最低销售数量要求 | 1. nLock >= 1 2. nStock >= 1 3. nBarrel >= 1 |
4. nLock < 1 5. nStock < 1 6. nBarrel < 1 |
步枪机是否满足生产限额 | 7. nLock <= 70 | 8. nLock > 70 |
枪托是否满足生产限额 | 9. nStock <= 80 | 10. nStock > 80 |
枪管是否满足生产限额 | 11. nBarrel <= 90 | 12. nBarrel > 90 |
对有效等价类设计测试用例:
测试用例(nLock, nStock, nBarrel) | 预期输出 | 覆盖编号 |
---|---|---|
35, 40, 45 | 销售总数是:120, 总销售额:3900,佣金总和:640.0 | 1, 2, 3, 7, 9, 13 |
对无效等价类设计测试用例:
测试用例(nLock, nStock, nBarrel) | 预期输出 | 覆盖编号 |
---|---|---|
0, 40, 45 | 步枪机不满足最低销售数量 | 4 |
35, 0, 45 | 枪托不满足最低销售数量 | 5 |
35, 40, 0 | 枪管不满足最低销售数量 | 6 |
75, 40, 45 | 步枪机数量超出生产限额 | 8 |
35, 85, 45 | 枪托数量超出生产限额 | 10 |
35, 40, 95 | 枪管数量超出生产限额 | 12 |
以上组成对佣金问题的弱健壮等价类测试用例设计。
测试代码及结果分析
三角形问题:测试代码
1 | package exps; |
三角形问题:测试结果
以上为对三角形问题代码的弱健壮等价类测试,满足预期。
NextDate:测试代码
1 | package exps; |
NextDate:测试结果
以下为控制台中输出的测试结果:
符合测试预期。
佣金问题:测试代码
1 | package exps; |
佣金问题: 测试结果
测试结果,符合预期。
##【实验总结】
等价类测试的一般测试步骤
- 按照输入条件建立有效等价类和无效等价类,列出所有划分出的等价类
- 为每一个等价类规定一个唯一的编号
- 设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止
划分等价类的方法
规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类
e.g. 考试0 - 100, 大于100、小于0无效,[0,100]有效
- 规定了输入值的集合或规定了“必须如何”的条件下,可以确立一个有效等价类和一个无效等价类
- 输入条件是一个布尔量的情况下,可以确定一个有效等价类,
- 一组变量n, n个有效等价类
- 必须遵守,1个有效等价类,1个无效等价类
- 规定了必须遵守的,需要细分