贪吃蛇白盒测试课程设计.docx
- 文档编号:3271572
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:16
- 大小:299.55KB
贪吃蛇白盒测试课程设计.docx
《贪吃蛇白盒测试课程设计.docx》由会员分享,可在线阅读,更多相关《贪吃蛇白盒测试课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
贪吃蛇白盒测试课程设计
《白盒测试(JUnit测试框架)实训》课程设计
题目:
贪吃蛇程序的白盒测试
姓名:
郭洋
学号:
36
班级:
测试0901
时间:
2010年9月10日
白盒测试课程设计—贪吃蛇程序(Ver:
0.91Alpha)的白盒测试
程序功能简介:
1.游戏开始的时候,成绩为0,等级为“初出茅庐!
”,蛇的速度(线程挂起时间)为300。
2.蛇的行走方向通过键盘方向键上、下、左、右来操作。
3.蛇(蓝色长条)吞吃一个食物(红点方格)后,身体长度增加一格,吃掉的食物消失并随机出现新食物(红点方格),游戏者的分数增加10分。
4.当分数超过40,速度为250;分数超过80,速度为200;分数超过120,速度为160;分数超过160,速度为120;分数超过200,速度为100。
5.当速度达到300时,显示等级为“初出茅庐!
”;速度达到250时,显示“小试牛刀!
”;速度达到200时,显示“表现优异!
”;速度达到150时,显示“疾风之蛇!
”;速度达到120时,显示“已经疯子!
”;速度达到100时,显示“超越神了!
”。
6.当蛇吃到上下边界(顶部和底部黑色长方格)以及自己的身体后游戏结束。
7.游戏结束后,按enter回车键重新开始。
白盒测试过程:
一、代码检查:
1.变量的检查
正常
2.命名和类型的检查
正常
3.程序逻辑审查
符合逻辑
4.程序语法检查
语法通过
5.程序结构检查
合理
二、静态结构分析:
程序静态结构如下类图所示
Snake类图关联:
Controller类图关联:
GamePanel类图关联:
1.根据类图及关联简述贪吃蛇程序的类功能及结构。
(1)Food继承于Point,其实就是个坐标对象所包含的方法1、记录新食物的位置2、比较Food对应的坐标是否与蛇头相等
(2)Ground对地板的封装,它拥有成员变量二维rocks记录墙的位置,初始状态墙在第1行和第15行蛇是否撞墙的判断方法isSnakeatGround
(3)Snake继承于Thread,通过蛇行为判断相应的动作:
是否吃到自己的判断,通过分数值来获得速度的判断,通过方向的移动来判断蛇头的移动,蛇的运行状态、运行方向、是否存活的判断(吃自己),以及初始化蛇对象。
(4)Controller控制游戏,她创建snake、food、ground对象,并获取计分面板和游戏面板对象能通过newGame()方法启动游戏利用keyPressed()方法接收按键行为利用snakeMoved()处理蛇移动后的行为
SnakeListener蛇移动的监听器
(5)Global全局变量定义,包含单元格大小以及长宽各占多少单元格
(6)GamePanel游戏面板,继承于JPanel,主要功能利用display()是获得snake、food和ground对象
并画蛇、食物和石头
(7)GameUI组合贪吃蛇面板,触发应用程序运行
(8)ScorePanel计分面板,继承于JPanel,拥有5个标签对象,最开始的成绩设置为0,等级为初出茅庐
其中label2用来显示成绩值,label4用来显示等级名称
结构描述
首先Gobal定义好场景的大小,在场景中加入计分面板ScorePanel和游戏面板GamePanel,再用GameUI组合贪吃蛇面板,触发应用程序运行。
Food中设置新食物的坐标位置,Gronud中二维rocks记录墙的位置,并定义蛇撞墙的判断方法,Snake定义蛇的行为来判断是否吃到自己获得速度以及通过方向判断蛇头的移动,在Controller中创建snake,food,ground对象,结合它们中所有的蛇行为并关联到游戏和计分面板。
SnakeListener添加蛇移动的监听器。
2.判断哪些是主要方法。
1)booleancommon.Ground.isSnakeEatGround(Snakesnake):
蛇是否撞墙的判断方法
@paramSnakesnake蛇
@returntrue蛇头的坐标等于在第一行和15行
2)booleancommon.Snake.isEatBody():
判断蛇是否吃到自己
@returntrue:
蛇身体的坐标等于蛇头的坐标
3)intcommon.Snake.getSpeed():
通过分数来获得速度
4)voidview.ScorePanel.setGrade(intspeed):
根据参数判断所处的等级,并更新计分板上的等级值
@paramspeed速度值
5)voidcontroller.Controller.keyPressed(KeyEvente):
通过keyPressed方法接收按键行为
6)voidcontroller.Controller.snakeMoved(Snakesnake):
蛇移动后的行为
1是否吃到食物,true构建新的食物坐标
2是否撞到墙,true蛇死
3重新画蛇,食物,地板4跟新计分板上的分数和等级
7)voidview.GameUI.main(String[]args):
GameUI的主函数
8voidcommon.Snake.eatFood()
蛇吃到食物后给蛇加尾巴,给游戏者加分
3.检查方法调用是否符合要求。
正常
4.方法调用层次是否过深。
否
5.是否存在孤立未被调用的成员及方法。
privateGamePanelSnake.gamePanel
privateJLabellabel4;
三、动态测试
根据结构分析,贪吃蛇程序的产生BUG的主要模块为snake、controller、GameUI、ScorePanel,以下进行主要功能模块的单元测试
setGrade单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
TestsetGrade1
正常
300
初出茅庐!
初出茅庐!
TestsetGrade2
异常
250
小试牛刀!
超越神了!
TestsetGrade3
正常
200
表现优异!
表现优异!
TestsetGrade4
正常
150
疾风之蛇!
疾风之蛇!
TestsetGrade5
正常
120
已经疯子!
已经疯子!
TestsetGrade6
正常
100
超越神了!
超越神了!
B.测试类脚本(测试文件名及结构)
voidview.ScorePanelTest.testsetGrade()
testsetGrade()测试等级内容当速度达到300时,显示等级为"初出茅庐!
"当速度达到250时,显示等级为"小试牛刀!
"当速度达到200时,显示等级为"表现优异!
"当速度达到150时,显示等级为"疾风之蛇!
"当速度达到120时,显示等级为"已经疯子!
"当速度达到100时,显示等级为"超越神了!
"
Speed单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
testGetSpeed1
异常
250
100
90
testGetSpeed2
正常
170
120
120
testGetSpeed3
异常
130
160
150
testGetSpeed4
正常
100
200
200
testGetSpeed5
正常
50
250
250
testGetSpeedBound1
正常
80
250
250
testGetSpeedBound2
正常
120
200
200
testGetSpeedBound3
异常
160
160
150
testGetSpeedBound4
正常
200
120
120
testGetSpeedBound5
异常
250
100
90
testGetSpeedBound6
正常
40
300
300
B.测试类脚本(测试文件名及结构)
1、voidcodetest.SnakeTes.testGetSpeed1():
testgetSpeedX()测试通过分数来获得速度
2、voidcodetest.SnakeTes.testGetSpeed2()
3、voidcodetest.SnakeTes.testGetSpeed3()
4、voidcodetest.SnakeTes.testGetSpeed4()
5、voidcodetest.SnakeTes.testGetSpeed5()
6、voidcodetest.SnakeTes.testGetSpeedBound1()
7、voidcodetest.SnakeTes.testGetSpeedBound2()
8、voidcodetest.SnakeTes.testGetSpeedBound3()
9、voidcodetest.SnakeTes.testGetSpeedBound4()
10、voidcodetest.SnakeTes.testGetSpeedBound5()
11、voidcodetest.SnakeTes.testGetSpeedBound6()
isSnakeEatGround单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
testIsSnakeEatGround1
异常
nake.getBody().set(0,newPoint(5,0))
false
true
testIsSnakeEatGround2
异常
nake.getBody().set(0,newPoint(5,14))
false
true
testIsSnakeEatGround3
正常
nake.getBody().set(0,newPoint(5,2))
true
true
B.测试类脚本(测试文件名及结构)
voidcodetest.ControllerTest.testIsSnakeEatGround1()
testIsSnakeEatGround()测试当蛇吃到上下边界时后蛇处于死亡状态
IsEatBody单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
testIsEatBody
异常
snake.getBody().add(newPoint(5,1));
snake.getBody().add(newPoint(4,1));
snake.getBody().add(newPoint(4,2));
snake.getBody().add(newPoint(5,2));
snake.getBody().add(newPoint(5,1));
false
true
B.测试类脚本(测试文件名及结构)
voidcodetest.ControllerTest.testIsEatBody()
testIsEatBody()测试当蛇吃到自己后蛇处于死亡状态
GameUI单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
testGameStart
正常
newGame()
0,初出茅庐!
300
0,初出茅庐!
300
B.测试类脚本(测试文件名及结构)
voidcodetest.GameUITest.testGameStart()
KeyPressed单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
testKeyPressed
正常
keyPress(KeyEvent.VK_UP)
firstPoint.x,firstPoint.y-1
firstPoint.x,firstPoint.y-1
keyPress(KeyEvent.VK_LEFT)
firstPoint.x-1,firstPoint.y-1
firstPoint.x-1,firstPoint.y-1
keyPress(KeyEvent.VK_DOWN)
firstPoint.x-1,firstPoint.y-1+1
firstPoint.x-1,firstPoint.y-1+1
keyPress(KeyEvent.VK_RIGHT)
firstPoint.x-1+1,firstPoint.y-1+1
firstPoint.x-1+1,firstPoint.y-1+1
B.测试类脚本(测试文件名及结构)
voidcodetest.ControllerTest.testKeyPressed()
testKeyPressed()方法测试蛇的行走方向通过键盘方向键上下左右来操作
AfterEatFood()单元测试
A.测试用例设计
测试用例
类型(正常或异常)
输入条件
期望结果
输出结果
testAfterEatFood()
正常
NewPoint(5,1)
4、NewPoint(5,1),10
4、NewPoint(5,1),10
B.测试类脚本(测试文件名及结构)
voidcodetest.ControllerTest.testAfterEatFood()
testAfterEatFood()测试
蛇(蓝色长条)吞吃一个食物(红色方格)后
身体长度增加一格,吃掉的食物消失并随机出现新食物
游戏者的分数增加10分
白盒测试缺陷报告:
关于测试缺陷优先级的说明:
1 – 非常严重的缺陷,例如,软件的意外退出甚至操作系统崩溃,造成数据丢失。
2 – 较严重的缺陷,例如,软件的某个菜单不起作用或者产生错误的结果;
3 - 软件一般缺陷,例如,本地化软件的某些字符没有翻译或者翻译不准确;
4 - 软件界面的细微缺陷,例如,某个控件没有对齐,某个标点符号丢失等;
项目名称:
贪吃蛇
编号
001
002
003
004
005
006
版本号
Ver:
0.91Alpha
Ver:
0.91Alpha
Ver:
0.91Alpha
Ver:
0.91Alpha
Ver:
0.91Alpha
Ver:
0.91Alpha
测试环境
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
测试阶段
(单元/集成)
单元
单元
单元
单元
单元
单元
正确功能描述
当分数超过40,速度为250;分数超过80,速度为200;分数超过120,速度为160;分数超过160,速度为120;分数超过200,速度为100。
当速度达到300时,显示等级为“初出茅庐!
”;速度达到250时,显示“小试牛刀!
”;速度达到200时,显示“表现优异!
”;速度达到150时,显示“疾风之蛇!
”;速度达到120时,显示“已经疯子!
”;速度达到100时,显示“超越神了!
”
当蛇吃到上下边界(顶部和底部黑色长方格)以ControllerTest.testIsSnakeEatGround()及自己的身体后游戏结束ControllerTest.testIsEatBody()
蛇的行走方向通过键盘方向键上、下、左、右来操作。
ControllerTest.testkeyPressed()
游戏开始的时候,成绩为0,等级为“初出茅庐!
”,蛇的速度(线程挂起时间)为300。
GameUITest.
testGameStart()
蛇(蓝色长条)吞吃一个食物(红点方格)后,身体长度增加一格,吃掉的食物消失并随机出现新食物(红点方格),游戏者的分数增加10分。
缺陷描述
1当分数超过200时,根据测试速度应该为100,而实际代码中为90
2当分数超过120时,根据测试速度应该为160,而实际代码为150
当速度为250时,根据测试显示为小试牛刀!
实际情况显示超越神了!
1在controller.snakeMoved方法中没有调用到snake.isEatBody()
2在Ground类中当如果蛇撞到墙时候返回值为false
无
无
无
缺陷类型
界面/算法/功能/自定义
算法
算法
功能
缺陷类型
致命/严重/一般/轻微
严重
严重
致命
优先级
1/2/3/4
2
2
1
修改意见
1当分数超过200时,根据测试修改速度为100,
2当分数超过120时,根据测试修改速度为160
在scorePanel类中改为case250:
label4.setText("小试牛刀!
");
break;
1.在Controller类中加上if(snake.isEatBody()){snake.die();}这个方法,则蛇吃到自己时结束游戏
2.在Ground类中当如果蛇撞到墙时候返回值应该为returntrue;
测试人员
郭洋
郭洋
郭洋
郭洋
郭洋
郭洋
提交日期
2011/6/8
2011/6/9
2011/6/9
2011/6/10
2011/6/10
2011/6/10
测试工具
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
Junit
Eclipse
复审人
复审时间
复审结果描述
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 贪吃 蛇白盒 测试 课程设计