一、实验目的
掌握黑盒测试用例设计方法
二、实验要求
(1)对被测程序进行黑盒测试用例设计
(2)运用等价类、边界值、决策表、状态图法等进行测试用例设计。
(3)对手机上任意一款音乐软件进行黑盒测试实践。(作业若雷同,后上传者判定0分)
三、实验内容
1、对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结。
要求写出测试用例表、执行情况和测试小结。
2、对手机上任意一款音乐软件进行黑盒测试。
要求:1)使用思维导图
2)根据场景法、状态图法 设计测试用例。
3)附加题:如有可能尝试用正交实验法、组合测试对测试用例进行简化。
写出测试用例表、执行情况,测试小结。
四、实验过程
1、对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结。
<1> 等价类测试
等价类划分
输入条件 | 条件 | 有效等价类 | 无效等价类 |
三个整数 | 整数 (1) | a为非整数 (16) | |
b为非整数 (17) | |||
c为非整数 (18) | |||
a,b为非整数 (19) | |||
a,c为非整数 (20) | |||
b,c为非整数 (21) | |||
abc为非整数 (22) | |||
1<=a<=100 (2) | a<0 (23) | ||
a>100 (24) | |||
1<=b<=100 (3) | b<0 (25) | ||
b>100 (26) | |||
1<=c<=100 (4) | c<0 (27) | ||
c>100 (28) | |||
三个数 (5) | 只给a (29) | ||
只给b (30) | |||
只给c (31) | |||
只给a,b (32) | |||
只给a,c (33) | |||
只给b,c (34) | |||
输出条件 | 一般三角形 | a+b>c (6) | a+b<c (35) |
a+b=c (36) | |||
a+c>b(7) | a+c<b (37) | ||
a+c=b (38) | |||
b+c>a (8) | b+c<a (39) | ||
b+c=a (40) | |||
等腰三角形 | a=b (9) |
| |
a=c (10) | |||
b=c (11) | |||
等边三角形 | a=b=c (12) | ||
直角三角形 | a2 = b2 +c2 (13) | ||
a2 = b2 +c2 (14) | |||
a2 = b2 +c2 (15) |
根据等价类写出测试用例并实际测试:
一般等价类测试用例设计 | ||||||||
编号 | a | b | c | 覆盖等价类 | 预期输出 | 实际输出 | 是否通过 | |
1 | 2 | 4 | 5 | (1-8) | 一般三角形 | 一般三角形 | √ | |
2 | 4 | 4 | 6 | (1)-(8)、(9) | 等腰三角形 | 等腰三角形 | √ | |
3 | 5 | 8 | 5 | (1)-(8)、(10) | 等腰三角形 | 等腰三角形 | √ | |
4 | 5 | 8 | 8 | (1)-(8)、(11) | 等腰三角形 | 等腰三角形 | √ | |
5 | 5 | 5 | 5 | (1)-(8)、(12) | 等边三角形 | 等边三角形 | √ | |
6 | 3 | 4 | 5 | (1-8)、(13) | 直角三角形 | 直角三角形 | √ | |
7 | 4 | 3 | 5 | (1-8)、(14) | 直角三角形 | 直角三角形 | √ | |
8 | 5 | 4 | 3 | (1-8)、(15) | 直角三角形 | 直角三角形 | √ | |
|
|
|
|
|
|
|
| |
无效等价类测试用例设计 | ||||||||
编号 | a | b | c | 覆盖等价类 | 预期输出 | 实际输出 | 是否通过 | |
1 | 2.5 | 2 | 2 | (16) | 输入有误 | 输入有误 | √ | |
2 | 3 | 3.5 | 3 | (17) | 输入有误 | 输入有误 | √ | |
3 | 4 | 4 | 4.5 | (18) | 输入有误 | 输入有误 | √ | |
4 | 2.5 | 2.5 | 2 | (19) | 输入有误 | 输入有误 | √ | |
5 | 2 | 2.5 | 2.5 | (20) | 输入有误 | 输入有误 | √ | |
6 | 2.5 | 2 | 2.5 | (21) | 输入有误 | 输入有误 | √ | |
7 | 3.1 | 3.1 | 3.1 | (22) | 输入有误 | 输入有误 | √ | |
8 | -5 | 15 | 8 | (23) | 边的值不在范围内 | 输入有误 | × | |
9 | 120 | 90 | 80 | (24) | 边的值不在范围内 | 输入有误 | × | |
10 | 15 | -5 | 8 | (25) | 边的值不在范围内 | 输入有误 | × | |
11 | 90 | 120 | 80 | (26) | 边的值不在范围内 | 输入有误 | × | |
12 | 15 | 8 | -5 | (27) | 边的值不在范围内 | 输入有误 | × | |
13 | 90 | 80 | 120 | (28) | 边的值不在范围内 | 输入有误 | × | |
14 | 4 | / | / | (29) | 输入有误 | 输入有误 | √ | |
15 | / | 4 | / | (30) | 输入有误 | 输入有误 | √ | |
16 | / | / | 4 | (31) | 输入有误 | 输入有误 | √ | |
17 | 4 | 4 | / | (32) | 输入有误 | 输入有误 | √ | |
18 | 4 | / | 4 | (33) | 输入有误 | 输入有误 | √ | |
19 | / | 4 | 4 | (34) | 输入有误 | 输入有误 | √ | |
20 | 2 | 4 | 8 | (35) | 不构成三角形 | 输入有误 | × | |
21 | 2 | 4 | 6 | (36) | 不构成三角形 | 输入有误 | × | |
22 | 2 | 8 | 4 | (37) | 不构成三角形 | 输入有误 | × | |
23 | 2 | 6 | 4 | (38) | 不构成三角形 | 输入有误 | × | |
24 | 8 | 2 | 4 | (39) | 不构成三角形 | 输入有误 | × | |
25 | 6 | 2 | 4 | (40) | 不构成三角形 | 输入有误 | × |
<2>边界值分析法
对被测程序写出其对应的边界值并得出测试用例,对测试用例进行实验
边界值分析测试用例设计 | ||||||
编号 | a | b | c | 预期输出 | 实际输出 | 是否通过 |
1 | 60 | 60 | 0 | 边的值不在范围内 | 输入有误 | × |
2 | 60 | 60 | 1 | 等腰三角形 | 等腰三角形 | √ |
3 | 60 | 60 | 2 | 等腰三角形 | 等腰三角形 | √ |
4 | 60 | 60 | 99 | 等腰三角形 | 等腰三角形 | √ |
5 | 60 | 60 | 100 | 等腰三角形 | 等腰三角形 | √ |
6 | 60 | 60 | 101 | 边的值不在范围内 | 输入有误 | × |
7 | 60 | 0 | 60 | 边的值不在范围内 | 输入有误 | × |
8 | 60 | 1 | 60 | 等腰三角形 | 等腰三角形 | √ |
9 | 60 | 2 | 60 | 等腰三角形 | 等腰三角形 | √ |
10 | 60 | 99 | 60 | 等腰三角形 | 等腰三角形 | √ |
11 | 60 | 100 | 60 | 等腰三角形 | 等腰三角形 | √ |
12 | 60 | 101 | 60 | 边的值不在范围内 | 输入有误 | × |
13 | 0 | 60 | 60 | 边的值不在范围内 | 输入有误 | × |
14 | 1 | 60 | 60 | 等腰三角形 | 等腰三角形 | √ |
15 | 2 | 60 | 60 | 等腰三角形 | 等腰三角形 | √ |
16 | 99 | 60 | 60 | 等腰三角形 | 等腰三角形 | √ |
17 | 100 | 60 | 60 | 等腰三角形 | 等腰三角形 | √ |
18 | 101 | 60 | 60 | 边的值不在范围内 | 输入有误 | × |
<3>决策表分析法
列出决策表并写出测试用例
决策表相关:
条件: c1: b+c>a? c2: a+c>b? c3: b+a>c? c4: a=b? c5: a=c? c6: b=c?
动作: r1: 非三角形 r2: 一般三角形OR直角三角形 r3: 等腰三角形 r4: 等边三角形 r5: 不可能
决策表:
决策表分析 | ||||||||||
c1 | F | T | T | T | T | T | T | T | T | T |
c2 | - | F | T | T | T | T | T | T | T | T |
c3 | - | - | F | T | T | T | T | T | T | T |
c4 | - | - | - | F | T | T | T | T | F | F |
c5 | - | - | - | T | F | T | T | F | T | F |
c6 | - | - | - | T | T | F | T | F | F | T |
r1 | √ |
|
|
|
|
|
|
|
|
|
r2 |
|
|
|
|
|
|
|
|
|
|
r3 |
|
|
|
|
|
|
| √ | √ | √ |
r4 |
|
|
|
|
|
| √ |
|
|
|
r5 |
| √ | √ | √ | √ | √ |
|
|
|
|
根据决策表得出的测试用例及测试结果:
决策表用例设计 | ||||||
编号 | a | b | c | 预期输出 | 实际输出 | 是否通过 |
1 | 7 | 2 | 3 | 不构成三角形 | 输入有误 | × |
2 | 6 | 6 | 6 | 等边三角形 | 等边三角形 | √ |
3 | 8 | 8 | 6 | 等腰三角形 | 等腰三角形 | √ |
4 | 8 | 6 | 8 | 等腰三角形 | 等腰三角形 | √ |
5 | 6 | 8 | 8 | 等腰三角形 | 等腰三角形 | √ |
6 | 3 | 4 | 5 | 直角三角形 | 直角三角形 | √ |
7 | 4 | 5 | 6 | 一般三角形 | 一般三角形 | √ |
<4>测试小结
可以从结果中得出,开发者在错误信息输出方面没有进行处理,而是统一抛出输入错误,并没有按最开始的要求输出“输入有误”或者“不构成三角形字样”。
这次的测试使用了三种方法,不从代码分析,而是直接从输入和结果来进行测试,减少了中间代码环节的繁琐设计,所以做起来会快很多,但是如果要健全的考虑所有情况的话,测试用例依旧是非常非常的多。
2、对手机上某一款音乐播放app测试
不打开酷狗音乐事先根据所想到的画出的思维导图
然后对思维导图中的各项进行测试:
一、使用场景法设计测试用例:
(1)登录选项:
基本流:登录酷狗app,播放音乐,搜索音乐,关闭退出
备选流1:账号不存在
备选流2:账号或密码错误
备选流3:没有输入用户或密码
根据基本流和备选流确定的场景:
场景1:成功登陆 | 基本流 | |
场景2:输入一个不存在的账号 | 基本流 | 备选流1 |
场景3:账号或密码错误 | 基本流 | 备选流2 |
场景4:没有输入用户名或密码 | 基本流 | 备选流3 |
测试用例设计(V表示有效输入,I表示无效输入):
编号 | 场景/条件 | 账号 | 密码 | 预期结果 | 实际输出 |
1 | 场景1:成功登陆 | V | V | 成功登陆 | 成功登陆 |
2 | 场景2:输入不存在账号 | I | I | 输入的用户名不存在 | 输入的用户名不存在 |
3 | 场景3:账号或密码错误(账号正确,密码错误) | V | I | 输入的密码有错 | 输入的密码有错 |
4 | 场景3:账号或密码错误(账号错误,密码正确) | I | V | 输入的密码有错 | 输入的密码有错 |
(2)音乐搜索:
基本流:成功查找,选择预期的结果
备选流1:找不到搜索结果
备选流2:找到的结果不符合预期
备选流3:显示与其相似的搜索结果
根据基本流和备选流确定的场景:
场景1:输入有效的歌名/作者/专辑 | 基本流 | ||
场景2:输入模糊的歌名/作者/专辑 | 基本流 | 备选流3 | |
场景3:输入错误的符号 | 基本流 | 备选流1 | 备选流2 |
场景4:不输入信息 | 基本流 | 备选流1 | 备选流2 |
测试用例设计:
编号 | 场景/条件 | 输入条件 | 预期结果 | 实际结果 |
1 | 场景1:输入有效的歌名 | 稻香 | 稻香 | 稻香 |
2 | 场景1:输入有效的作者 | 周杰伦 | 周杰伦的所有歌曲或专辑 | 周杰伦的所有歌曲或专辑 |
3 | 场景1:输入有效的专辑 | 叶惠美 | 专辑中所有的音乐 | 专辑中所有的音乐 |
4 | 场景2:输入模糊的歌名 | 秋天 | 名字带有秋天的所有歌曲 | 名字带有秋天的所有歌曲 |
5 | 场景2:输入模糊的作者名 | 田 | 作者名字带有田的歌曲 | 名字带有田的歌曲 |
6 | 场景2:输入模糊的专辑名 | 叶惠 | 专辑名带有叶惠的所有歌曲 | 专辑名带有叶惠的所有歌曲 |
7 | 场景3:输入错误的符号 | ???? | 找不到搜索结果 | 显示所有新的歌曲 |
8 | 场景4:不输入信息 |
| 找不到搜索结果 | 显示了默认显示在输入框中的歌曲 |
(3)音乐播放
基本流:播放音乐
备选流1:播放上一首音乐
备选流2:播放下一首音乐
备选流3:暂停播放音乐
备选流4:随机播放音乐
备选流5:顺序播放音乐
根据基本流和备选流确定的场景:
场景1:点击播放按钮 | 基本流 | |
场景2:点击下一首按钮 | 基本流 | 备选流1 |
场景3:点击上一首按钮 | 基本流 | 备选流2 |
场景4:点击暂停按钮 | 基本流 | 备选流3 |
场景5:点击顺序播放按钮 | 基本流 | 备选流4 |
场景5:点击随机播放按钮 | 基本流 | 备选流5 |
测试用例设计:
编号 | 场景/条件 | 预期结果 | 实际结果 |
1 | 场景1:点击播放按钮 | 播放音乐 | 播放音乐 |
2 | 场景2:点击下一首按钮 | 播放下一首 | 播放下一首 |
3 | 场景3:点击上一首按钮 | 播放上一首 | 播放上一首 |
4 | 场景4:点击暂停按钮 | 暂停音乐 | 暂停音乐 |
5 | 场景5:点击顺序播放按钮 | 顺序播放音乐 | 顺序播放音乐 |
6 | 场景5:点击随机播放按钮 | 随机播放音乐 | 随机播放音乐 |
二、使用PICT工具
1、对登录选项进行测试用例设计,创建的文本如下:
test.txt
用户名:空,合法,不存在,超长
密码:空,合法,错误
登录按钮:按下,不按
运行后得到的结果输出成excel,对此用例进行测试得出结果如下表:
编号 | 用户名 | 密码 | 登录按钮 | 预期结果 | 实际结果 |
1 | 不存在 | 空 | 按下 | 提示错误信息 | 提示错误信息 |
2 | 合法 | 错误 | 按下 | 提示错误信息 | 提示错误信息 |
3 | 不存在 | 合法 | 不按 | 提示错误信息 | 提示错误信息 |
4 | 不存在 | 错误 | 不按 | 提示错误信息 | 提示错误信息 |
5 | 超长 | 合法 | 按下 | 提示错误信息 | 提示错误信息 |
6 | 超长 | 错误 | 不按 | 提示错误信息 | 提示错误信息 |
7 | 空 | 合法 | 不按 | 提示错误信息 | 提示错误信息 |
8 | 超长 | 空 | 不按 | 提示错误信息 | 提示错误信息 |
9 | 合法 | 空 | 不按 | 提示错误信息 | 提示错误信息 |
10 | 空 | 错误 | 按下 | 提示错误信息 | 提示错误信息 |
11 | 合法 | 合法 | 不按 | 提示错误信息 | 提示错误信息 |
12 | 空 | 空 | 按下 | 提示错误信息 | 提示错误信息 |
2、对音乐搜索选项进行测试用例设计
创建的文本如下:
test.txt
输入信息:有效的歌名,有效的作者,有效的专辑名,无效的歌名,无效的作者,无效的专 辑名,空白
搜索按钮:按下,不按
运行后得到的结果输出成excel,对此用例进行测试得出结果如下表:
编号 | 输入信息 | 搜索按钮 | 预期结果 | 实际输出 |
1 | 无效的歌名 | 不按 | 没有反应 | 没有反应 |
2 | 无效的作者 | 不按 | 没有反应 | 没有反应 |
3 | 无效的专辑名 | 不按 | 没有反应 | 没有反应 |
4 | 空白 | 按下 | 没有反应 | 没有反应 |
5 | 无效的专辑名 | 按下 | 专辑名带有输入部分的歌曲 | 专辑名带有输入部分的歌曲 |
6 | 有效的专辑名 | 不按 | 没有反应 | 没有反应 |
7 | 有效的歌名 | 不按 | 没有反应 | 没有反应 |
8 | 有效的作者 | 按下 | 作者名字输入部分的歌曲 | 作者名字输入部分的歌曲 |
9 | 有效的作者 | 不按 | 没有反应 | 没有反应 |
10 | 无效的歌名 | 按下 | 歌曲名字输入部分的歌曲 | 歌曲名字输入部分的歌曲 |
11 | 有效的专辑名 | 按下 | 专辑名带有输入部分的歌曲 | 专辑名带有输入部分的歌曲 |
12 | 空白 | 不按 | 没有反应 | 没有反应 |
13 | 有效的歌名 | 按下 | 歌曲名字输入部分的歌曲 | 歌曲名字输入部分的歌曲 |
14 | 无效的作者 | 按下 | 作者名字输入部分的歌曲 | 作者名字输入部分的歌曲 |
音乐播放没有使用PICT进行测试,因为播放音乐一次只响应一个输入操作,所以没有用组合测试的方式来进行设计测试用例。
三、状态图法
登录界面使用状态图法设计测试用例
输入项:
输入代号 | 输入事件 |
ip1 | 输入用户名 |
ip2 | 输入密码 |
ip3 | 按下登录按钮 |
ip4 | 退出 |
状态图:
根据状态图设计测试用例,如下表:
状态/用例编号 | 用例1 | 用例2 | 用例3 | 用例4 | 用例5 | 用例6 | 用例7 | 用例8 | 用例9 |
登录界面 | 1 | 1 | 1 | 1 | 1 | 1 3 | 1 | 1 | 1 |
用户名已输入 |
| 2 |
| 2 4 |
|
| 3 | 2 |
|
密码已输入 |
|
| 2 |
| 2 |
|
|
| 2 |
登录按钮按下 |
|
|
| 3 | 3 4 | 2 | 2 |
|
|
用户名/密码已输入 |
| 3 | 3 | 5 | 5 |
| 4 | 3 | 3 |
成功登陆 |
| 4 | 4 | 6 | 6 |
| 5 |
|
|
退出 | 2 |
|
|
|
| 4 |
| 4 | 4 |
表中的数字代表的执行顺序,一共列出了9个测试用例
对测试用例进行测试,结果如下
编号 | 执行的用例 | 预期结果 | 实际输出 |
1 | 用例1 | 退出 | 退出 |
2 | 用例2 | 成功登陆 | 成功登陆 |
3 | 用例3 | 成功登陆 | 成功登陆 |
4 | 用例4 | 成功登陆 | 成功登陆 |
5 | 用例5 | 成功登陆 | 成功登陆 |
6 | 用例6 | 退出 | 退出 |
7 | 用例7 | 成功登陆 | 成功登陆 |
8 | 用例8 | 退出 | 退出 |
9 | 用例9 | 退出 | 退出 |
四、 执行情况
在对虽手机音乐app利用所设计的测试用例进行测试后,得到的结果基本符合预期的结果,在音乐搜索上出现的不合预期的情况是因为如果用户什么也不输入,酷狗音乐在输入栏会有一个默认的输入条件,所以直接点击搜索就回按照默认的条件进行搜索因而得不出所想要的答案,实际上酷狗音乐还有许多其他功能自己的测试用例并没有很好地完全覆盖。
五、测试小结
这次测试的对象选择的是手机上的酷狗音乐app,因为自己使用的比较多,在测试用例设计上自我感觉设计的不是很好,因为实际上酷狗上的包含的部分非常多,想到要是所有都进行测试一遍完全没办法在规定时间内完成,所以不打开酷狗事先利用思维导图构想出app中应该要有的功能,然后再打开app对自己所想到的部分进行测试。
测试过程中做的最不好的就是测试用例的设计了,因为自己经验太少,没有实操经验,之前也只是在作业中有过练习,所以在真正执行的时候困扰了很久,自己也有到处查找相关的资料,最后的结果也就如上所述。虽然结果不是很理想,但是通过这一次的测试还是有着不少的收获的,尤其是对各种测试的含义和执行方式有了更多的了解,自己动手实验后发现了自己存在的不足,这一点是尤为重要的。