贪吃蛇白盒测试课程设计文档格式.docx
《贪吃蛇白盒测试课程设计文档格式.docx》由会员分享,可在线阅读,更多相关《贪吃蛇白盒测试课程设计文档格式.docx(16页珍藏版)》请在冰豆网上搜索。
![贪吃蛇白盒测试课程设计文档格式.docx](https://file1.bdocx.com/fileroot1/2022-11/20/3ac1fdcd-a2e7-4357-92d3-225abe68a306/3ac1fdcd-a2e7-4357-92d3-225abe68a3061.gif)
速度达到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单元测试
testGetSpeed1
90
testGetSpeed2
170
testGetSpeed3
130
160
testGetSpeed4
testGetSpeed5
50
testGetSpeedBound1
80
testGetSpeedBound2
testGetSpeedBound3
testGetSpeedBound4
testGetSpeedBound5
testGetSpeedBound6
40
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单元测试
testIsSnakeEatGround1
nake.getBody().set(0,newPoint(5,0))
false
true
testIsSnakeEatGround2
nake.getBody().set(0,newPoint(5,14))
testIsSnakeEatGround3
nake.getBody().set(0,newPoint(5,2))
voidcodetest.ControllerTest.testIsSnakeEatGround1()
testIsSnakeEatGround()测试当蛇吃到上下边界时后蛇处于死亡状态
IsEatBody单元测试
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));
voidcodetest.ControllerTest.testIsEatBody()
testIsEatBody()测试当蛇吃到自己后蛇处于死亡状态
GameUI单元测试
testGameStart
newGame()
0,初出茅庐!
voidcodetest.GameUITest.testGameStart()
KeyPressed单元测试
testKeyPressed
keyPress(KeyEvent.VK_UP)
firstPoint.x,firstPoint.y-1
keyPress(KeyEvent.VK_LEFT)
firstPoint.x-1,firstPoint.y-1
keyPress(KeyEvent.VK_DOWN)
firstPoint.x-1,firstPoint.y-1+1
keyPress(KeyEvent.VK_RIGHT)
firstPoint.x-1+1,firstPoint.y-1+1
voidcodetest.ControllerTest.testKeyPressed()
testKeyPressed()方法测试蛇的行走方向通过键盘方向键上下左右来操作
AfterEatFood()单元测试
testAfterEatFood()
NewPoint(5,1)
4、NewPoint(5,1),10
voidcodetest.ControllerTest.testAfterEatFood()
testAfterEatFood()测试
蛇(蓝色长条)吞吃一个食物(红色方格)后
身体长度增加一格,吃掉的食物消失并随机出现新食物
游戏者的分数增加10分
白盒测试缺陷报告:
关于测试缺陷优先级的说明:
1
–
非常严重的缺陷,例如,软件的意外退出甚至操作系统崩溃,造成数据丢失。
2
较严重的缺陷,例如,软件的某个菜单不起作用或者产生错误的结果;
3
-
软件一般缺陷,例如,本地化软件的某些字符没有翻译或者翻译不准确;
4
软件界面的细微缺陷,例如,某个控件没有对齐,某个标点符号丢失等;
项目名称:
贪吃蛇
编号
001
002
003
004
005
006
版本号
Ver:
0.91Alpha
测试环境
Junit
Eclipse
测试阶段
(单元/集成)
单元
正确功能描述
当分数超过40,速度为250;
当速度达到300时,显示等级为“初出茅庐!
”
当蛇吃到上下边界(顶部和底部黑色长方格)以ControllerTest.testIsSnakeEatGround()及自己的身体后游戏结束ControllerTest.testIsEatBody()
蛇的行走方向通过键盘方向键上、下、左、右来操作。
ControllerTest.testkeyPressed()
游戏开始的时候,成绩为0,等级为“初出茅庐!
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
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/10
测试工具
复审人
复审时间
复审结果描述