一、实验目的
掌握黑盒测试用例设计方法
二、实验要求
(1)对被测程序进行黑盒测试用例设计
(2)运用等价类、边界值、决策表、状态图法等进行测试用例设计。
(3)对手机上任意一款音乐软件进行黑盒测试实践。(作业若雷同,后上传者判定0分)
三、实验内容
1、对被测程序运用不同的测试技巧进行测试用例设计,并执行测试,撰写测试小结。
要求写出测试用例表、执行情况和测试小结。
被测代码:http://www.cnblogs.com/sky-tian/p/6798910.html
1)测试用例设计表
1、运用等价类进行测试用例的设计
①划分有效等价类和无效等价类
输入条件 |
有效等价类 |
无效等价类 |
边的值 |
1<=a<=100(1) |
a<1(16) |
a>100(17) |
||
1<=b<=100(2) |
b<1(18) |
|
b>100(19) |
||
1<=c<=100(3) |
c<1(20) |
|
c>100(21) |
||
a,b,c均为整数(4) |
a为非整数(22) |
|
b为非整数(23) |
||
c为非整数(24) |
||
a、b为非整数(25) |
||
a、c为非整数(26) |
||
b、c为非整数(27) |
||
a,b,c均为非整数(28) |
||
a,b,c均给出(5) |
只给出a(29) |
|
只给出b(30) |
||
只给出c(31) |
||
只给出a,b(32) |
||
只给出a,c(33) |
||
只给出b,c(34) |
||
a,b,c均未给出(35) |
||
构成一般三角形 |
a<b+c(6) |
a>b+c(36) |
a=b+c(37) |
||
b<a+c(7) |
b>a+c(38) |
|
b=a+c(39) |
||
c<a+b(8) |
c>a+b(40) |
|
c=a+b(41) |
||
构成等腰三角形 |
a=b(9) |
|
a=c(10) |
||
b=c(11) |
||
构成等边三角形 |
a=b=c(12) |
|
构成直角三角形 |
a*a+b*b==c*c(13) |
|
b*b+c*c=a*a(14) |
||
c*c+a*a==b*b(15) |
②为有效等价类设计测试用例
(a,b,c) |
覆盖有效等价类编号 |
预期输出 |
实际输出 |
(3,2,4) |
(1)-(8) |
一般三角形 |
一般三角形 |
(3,3,4) |
(1)-(8),(9) |
等腰三角形 |
等腰三角形 |
(4,3,4) |
(1)-(8),(10) |
等腰三角形 |
等腰三角形 |
(3,4,4) |
(1)-(8),(11) |
等腰三角形 |
等腰三角形 |
(3,3,3) |
(1)-(8),(12) |
等边三角形 |
等边三角形 |
(3,4,5) |
(1)-(8),(13) |
直角三角形 |
直角三角形 |
(5,3,4) |
(1)-(8),(14) |
直角三角形 |
直角三角形 |
(3,5,4) |
(1)-(8),(15) |
直角三角形 |
直角三角形 |
③为无效等价类设计测试用例
(a,b,c) |
覆盖无效等价类编号 |
预期输出 |
实际输出 |
是否通过 |
(-1,3,4) |
(16) |
边的值不在范围内 |
边的值不在范围内 |
是 |
(101,3,4) |
(17) |
边的值不在范围内 |
边的值不在范围内 |
是 |
(3,0,4) |
(18) |
边的值不在范围内 |
边的值不在范围内 |
是 |
(3,101,4) |
(19) |
边的值不在范围内 |
边的值不在范围内 |
是 |
(3,4,0) |
(20) |
边的值不在范围内 |
边的值不在范围内 |
是 |
(3,4,101) |
(21) |
边的值不在范围内 |
边的值不在范围内 |
是 |
(0.5,3,4) |
(22) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(3,a,4) |
(23) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(3,4,!) |
(24) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(0.5,a,3) |
(25) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(0.5,3,a) |
(26) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(3,0.5,a) |
(27) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(a,a,a) |
(28) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(3,,) |
(29) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(,3,) |
(30) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(,,3) |
(31) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(3,4,) |
(32) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(3,,4) |
(33) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(,3,4) |
(34) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(,,,) |
(35) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
(7,2,3) |
(36) |
不能构成三角形 |
不能构成三角形 |
是 |
(5,2,3) |
(37) |
不能构成三角形 |
不能构成三角形 |
是 |
(2,7,3) |
(38) |
不能构成三角形 |
不能构成三角形 |
是 |
(2,5,3) |
(39) |
不能构成三角形 |
不能构成三角形 |
是 |
(2,3,7) |
(40) |
不能构成三角形 |
不能构成三角形 |
是 |
(2,3,5) |
(41) |
不能构成三角形 |
不能构成三角形 |
是 |
2、运用边界值进行测试用例的设计
编号 |
(a,b,c) |
预期输出 |
实际输出 |
是否通过 |
1 |
(1,50,50) |
等腰三角形 |
等腰三角形 |
是 |
2 |
(2,50,50) |
等腰三角形 |
等腰三角形 |
是 |
3 |
(99,50,50) |
等腰三角形 |
等腰三角形 |
是 |
4 |
(100,50,50) |
不能构成三角形 |
不能构成三角形 |
是 |
5 |
(50,1,50) |
等腰三角形 |
等腰三角形 |
是 |
6 |
(50,2,50) |
等腰三角形 |
等腰三角形 |
是 |
7 |
(50,99,50) |
等腰三角形 |
等腰三角形 |
是 |
8 |
(50,100,50) |
不能构成三角形 |
不能构成三角形 |
是 |
9 |
(50,50,1) |
等腰三角形 |
等腰三角形 |
是 |
10 |
(50,50,2) |
等腰三角形 |
等腰三角形 |
是 |
11 |
(50,50,99) |
等腰三角形 |
等腰三角形 |
是 |
12 |
(50,50,100) |
不能构成三角形 |
不能构成三角形 |
是 |
13 |
(50,50,50) |
等边三角形 |
等边三角形 |
是 |
14 |
(3,3,3) |
等边三角形 |
等边三角形 |
是 |
15 |
(3,,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
16 |
(,3,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
17 |
(,,3) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
18 |
(,,,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
健壮性边界值测试用例
编号 |
(a,b,c) |
预期输出 |
实际输出 |
是否通过 |
1 |
(0,50,50) |
边的值不在范围内 |
边的值不在范围内 |
是 |
2 |
(1,50,50) |
等腰三角形 |
等腰三角形 |
是 |
3 |
(2,50,50) |
等腰三角形 |
等腰三角形 |
是 |
4 |
(99,50,50) |
等腰三角形 |
等腰三角形 |
是 |
5 |
(100,50,50) |
不能构成三角形 |
不能构成三角形 |
是 |
6 |
(101,50,50) |
边的值不在范围内 |
边的值不在范围内 |
是 |
7 |
(50,0,50) |
边的值不在范围内 |
边的值不在范围内 |
是 |
8 |
(50,1,50) |
等腰三角形 |
等腰三角形 |
是 |
9 |
(50,2,50) |
等腰三角形 |
等腰三角形 |
是 |
10 |
(50,99,50) |
等腰三角形 |
等腰三角形 |
是 |
11 |
(50,100,50) |
不能构成三角形 |
不能构成三角形 |
是 |
12 |
(50,101,50) |
边的值不在范围内 |
边的值不在范围内 |
是 |
13 |
(50,50,0) |
边的值不在范围内 |
边的值不在范围内 |
是 |
14 |
(50,50,1) |
等腰三角形 |
等腰三角形 |
是 |
15 |
(50,50,2) |
等腰三角形 |
等腰三角形 |
是 |
16 |
(50,50,99) |
等腰三角形 |
等腰三角形 |
是 |
17 |
(50,50,100) |
不能构成三角形 |
不能构成三角形 |
是 |
18 |
(50,50,101) |
边的值不在范围内 |
边的值不在范围内 |
是 |
19 |
(50,50,50) |
等边三角形 |
等边三角形 |
是 |
20 |
(3,3,3) |
等边三角形 |
等边三角形 |
是 |
21 |
(3,,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
22 |
(,3,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
23 |
(,,3) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
24 |
(,,,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
25 |
(3,4,) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
26 |
(3,,4) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
27 |
(,3,4) |
输入有误,请重新输入 |
输入有误,请重新输入 |
是 |
3、运用决策表进行测试用例的设计
规则(缺省项均为1) |
||||||||||||||||
条件 |
c1:0<a<101 |
0 |
||||||||||||||
c2:0<b<101 |
- |
0 |
||||||||||||||
c3:0<c<101 |
- |
- |
0 |
|||||||||||||
c4:a<b+c |
- |
- |
- |
0 |
||||||||||||
c5:b<a+c |
- |
- |
- |
- |
0 |
|||||||||||
c6:c<a+b |
- |
- |
- |
- |
- |
0 |
1 |
|||||||||
c7:a=b |
- |
- |
- |
- |
- |
- |
1 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
||
c8:a=c |
- |
- |
- |
- |
- |
- |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
||
c9:b=c |
- |
- |
- |
- |
- |
- |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
||
c10:a*a+b*b==c*c |
- |
- |
- |
- |
- |
- |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
||
c11:b*b+c*c=a*a |
- |
- |
- |
- |
- |
- |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
||
c12:c*c+a*a==b*b |
- |
- |
- |
- |
- |
- |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
0 |
||
动作 |
a1:边的值不在范围内 |
√ |
√ |
√ |
||||||||||||
a2:不能构成三角形 |
√ |
√ |
√ |
|||||||||||||
a3:一般三角形 |
√ |
|||||||||||||||
a4:等腰三角形 |
√ |
√ |
√ |
|||||||||||||
a5:等边三角形 |
√ |
|||||||||||||||
a6:直角三角形 |
√ |
√ |
√ |
决策表用例
编号 |
(a,b,c) |
预期输出 |
实际输出 |
是否通过 |
1 |
(0,50,50) |
边的值不在范围内 |
边的值不在范围内 |
是 |
2 |
(2,101,50) |
边的值不在范围内 |
边的值不在范围内 |
是 |
3 |
(99,50,0) |
边的值不在范围内 |
边的值不在范围内 |
是 |
4 |
(7,2,3) |
不能构成三角形 |
不能构成三角形 |
是 |
5 |
(2,7,3) |
不能构成三角形 |
不能构成三角形 |
是 |
6 |
(2,3,7) |
不能构成三角形 |
不能构成三角形 |
是 |
7 |
(3,3,3) |
等边三角形 |
等边三角形 |
是 |
8 |
(3,3,4) |
等腰三角形 |
等腰三角形 |
是 |
9 |
(4,3,4) |
等腰三角形 |
等腰三角形 |
是 |
10 |
(3,4,4) |
等腰三角形 |
等腰三角形 |
是 |
11 |
(3,4,5) |
直角三角形 |
直角三角形 |
是 |
12 |
(5,3,4) |
直角三角形 |
直角三角形 |
是 |
13 |
(3,5,4) |
直角三角形 |
直角三角形 |
是 |
14 |
(50,99,51) |
一般三角形 |
一般三角形 |
是 |
2)测试结论
测试全部通过。
开发者满足了题目的要求并且做到了对输入格式的控制。
2、对手机上任意一款音乐软件进行黑盒测试。
1)使用思维导图
2)根据场景法、状态图法 设计测试用例。
播放歌曲:
场景法:
(1).分析需求,找出基本流和备选流
基本流:
搜索歌曲,播放
备选流:
1、不输入内容,点击搜索
2、没有找到歌曲
3、没有歌曲版权
4、没有网络
5、暂停播放
6、继续播放
7、拖动歌曲进度条
8、上一曲
9、下一曲
10、顺序播放
11、随机播放
12、单曲循环
13、返回桌面,歌曲在后台播放
14、退出酷狗,歌曲停止播放
(2).根据基本流、备选流列出场景
场景描述 |
|
场景1:成功播放歌曲 |
基本流 |
场景2:搜索出搜索框内默认的歌曲 |
基本流,备选流1 |
场景3:未找到相关歌曲 |
基本流,备选流2 |
场景4:版权方要求,该歌曲不提供要求 |
基本流,备选流3 |
场景5:未找到可用的网络连接 |
基本流,备选流4 |
场景6:暂停播放当前歌曲 |
基本流,备选流5 |
场景7:继续播放当前歌曲 |
基本流,备选流6 |
场景8:歌曲在指定时间点播放 |
基本流,备选流7 |
场景9:切换播放队列里的上一首歌曲 |
基本流,备选流8 |
场景10:切换播放队列里的下一首歌曲 |
基本流,备选流9 |
场景11:歌曲按照播放队列顺序播放 |
基本流,备选流10 |
场景12:歌曲播放顺序随机 |
基本流,备选流11 |
场景13:循环播放一首歌 |
基本流,备选流12 |
场景14:在后台播放歌曲 |
基本流,备选流13 |
场景15:停止播放歌曲 |
基本流,备选流14 |
(3).根据场景,编写用例
测试用例ID |
场景/条件 |
搜索 |
网络 |
按钮 |
预期结果 |
实际结果 |
是否通过 |
1 |
场景1 |
离骚 |
打开 |
搜索、播放 |
成功播放 |
成功播放 |
是 |
2 |
场景2 |
不输入内容 |
打开 |
搜索 |
搜索出搜索框内默认的歌曲 |
搜索出搜索框内默认的歌曲“易烊千玺 离骚” |
是 |
3 |
场景3 |
还是咳嗽偷偷恶徒Jonny五 |
打开 |
搜索 |
提示未找到相关歌曲 |
提示未找到相关歌曲 |
是 |
4 |
场景4 |
一直很安静 阿桑 |
打开 |
搜索 |
提示版权方要求,该歌曲不提供要求 |
提示版权方要求,该歌曲不提供要求 |
是 |
5 |
场景5 |
离骚 |
关闭 |
- |
提示未找到可用的网络连接 |
提示未找到可用的网络连接 |
是 |
6 |
场景6 |
温柔 |
打开 |
播放 |
暂停播放当前歌曲 |
暂停播放当前歌曲 |
是 |
7 |
场景7 |
温柔 |
打开 |
播放 |
继续播放当前歌曲 |
继续播放当前歌曲 |
是 |
8 |
场景8 |
温柔 |
打开 |
进度条 |
歌曲在2分钟播放 |
歌曲在2分钟播放 |
是 |
9 |
场景9 |
温柔 |
打开 |
上一曲 |
切换播放队列里的上一首歌曲 |
切换播放队列里的上一首歌曲 |
是 |
10 |
场景10 |
温柔 |
打开 |
下一曲 |
切换播放队列里的下一首歌曲 |
切换播放队列里的下一首歌曲 |
是 |
11 |
场景11 |
温柔 |
打开 |
顺序播放 |
歌曲按照播放队列顺序播放 |
歌曲按照播放队列顺序播放 |
是 |
12 |
场景12 |
温柔 |
打开 |
随机播放 |
歌曲播放顺序随机 |
歌曲播放顺序随机 |
是 |
13 |
场景13 |
温柔 |
打开 |
单曲循环 |
循环播放一首歌 |
循环播放一首歌 |
是 |
14 |
场景14 |
温柔 |
打开 |
返回 |
在后台播放歌曲 |
在后台播放歌曲 |
是 |
15 |
场景15 |
温柔 |
打开 |
退出 |
停止播放歌曲 |
停止播放歌曲 |
是 |
状态图:
ip1:点击搜索按钮
ip2:选择歌曲
ip3:点击播放按钮
ip4:拖动进度条
ip5:点击上一曲按钮
ip6:点击下一曲按钮
ip7:选择顺序播放
ip8:选择随机播放
ip9:选择单曲循环
ip10:点击退出
登录:
场景法:
(1).分析需求,找出基本流和备选流
基本流:
输入账号,输入密码,登录酷狗
备选流:
1、不输入账号和密码,点击登录
2、不输入账号,输入密码,点击登录
3、输入账号,不输入密码,点击登录
4、输入错误的账号,正确的密码,点击登录
5、输入正确的账号,错误的密码,点击登录
6、输入错误的账号,错误的密码,点击登录
(2).根据基本流、备选流列出场景
场景描述 |
|
场景1:成功登录 |
基本流 |
场景2:用户名不能为空 |
基本流,备选流1,备选流2 |
场景3:密码不能为空 |
基本流,备选流3 |
场景4:密码输入错误,请重新输入 |
基本流,备选流4,备选流5,备选流6 |
(3).根据场景,编写用例(V(有效)用于表明这个条件必须是 VALID(有效的)才可执行基本流,而 I(无效)用于表明这种条件下将激活所需备选流。下表中使用的“n/a”(不适用)表明这个条件不适用于测试用例。)
测试用例ID |
场景/条件 |
账号 |
密码 |
预期结果 |
实际结果 |
是否通过 |
1 |
场景1 |
V |
V |
成功登录 |
成功登录 |
是 |
2 |
场景2 |
I |
I |
提示用户名不能为空 |
提示用户名不能为空 |
是 |
3 |
场景2 |
I |
V |
提示用户名不能为空 |
提示用户名不能为空 |
是 |
4 |
场景3 |
V |
I |
提示密码不能为空 |
提示密码不能为空 |
是 |
5 |
场景4 |
I |
V |
提示密码输入错误,请重新输入 |
提示密码输入错误,请重新输入 |
是 |
6 |
场景4 |
V |
I |
提示密码输入错误,请重新输入 |
提示密码输入错误,请重新输入 |
是 |
7 |
场景4 |
I |
I |
提示密码输入错误,请重新输入 |
提示密码输入错误,请重新输入 |
是 |
状态图法:
ip1:输入账号
ip2:输入密码
ip3:点击登录按钮
ip4:点击返回按钮
根据状态图构造状态类表
状态/用例 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
酷狗登录 |
1 |
1 |
1 |
1 |
1 |
13 |
1 |
1 |
1 |
1 |
账号已输入 |
2 |
24 |
3 |
2 |
||||||
密码已输入 |
2 |
24 |
2 |
|||||||
登录按钮已点击 |
3 |
3 |
2 |
2 |
||||||
账号/密码已输入 |
3 |
3 |
5 |
5 |
4 |
2 |
||||
酷狗主界面 |
4 |
4 |
6 |
6 |
5 |
|||||
返回 |
2 |
4 |
3 |
3 |
3 |
根据状态类表测试如下:
测试用例ID |
账号 |
密码 |
预期结果 |
实际结果 |
是否通过 |
1 |
I |
I |
退出登录 |
退出登录 |
是 |
2 |
V |
I |
提示密码不能为空 |
提示密码不能为空 |
是 |
3 |
I |
V |
提示用户名不能为空 |
提示用户名不能为空 |
是 |
4 |
V |
I |
提示密码不能为空 |
提示密码不能为空 |
是 |
5 |
I |
V |
提示用户名不能为空 |
提示用户名不能为空 |
是 |
6 |
I |
I |
退出登录 |
退出登录 |
是 |
7 |
V |
I |
提示密码不能为空 |
提示密码不能为空 |
是 |
8 |
I |
I |
退出登录 |
退出登录 |
是 |
9 |
V |
I |
退出登录 |
退出登录 |
是 |
10 |
I |
V |
退出登录 |
退出登录 |
是 |
3)测试小结:
测试全部通过。
在场景法中,用例场景是通过描述流经用例的路径来确定的过程,这个过程要从用例开始到结束遍历其中所有基本流和备选流。生动地描绘出事件触发时的情景,有利于测试设计者设计测试用例,同时测试用例也更容易的得到理解和执行。而状态图法能更真实、更全面地模拟用户的操作顺序、操作流程。