1、速度达到150时,显示“疾风之蛇!速度达到120时,显示“已经疯子!速度达到100时,显示“超越神了!”。6 当蛇吃到上下边界(顶部和底部黑色长方格)以及自己的身体后游戏结束。7. 游戏结束后,按enter回车键重新开始。白盒测试过程:一、代码检查:1. 变量的检查正常2. 命名和类型的检查3. 程序逻辑审查符合逻辑4. 程序语法检查语法通过5. 程序结构检查合理二、 静态结构分析:程序静态结构如下类图所示Snake类图关联:Controller类图关联:GamePanel类图关联:1. 根据类图及关联简述贪吃蛇程序的类功能及结构。(1)Food 继承于Point,其实就是个坐标对象所包含的方
2、法 1、记录新食物的位置 2、比较Food对应的坐标是否与蛇头相等(2)Ground对地板的封装,它拥有成员变量二维rocks 记录墙的位置,初始状态墙在第1行和第15行 蛇是否撞墙的判断方法isSnakeatGround(3)Snake继承于Thread,通过蛇行为判断相应的动作:是否吃到自己的判断,通过分数值来获得速度的判断,通过方向的移动来判断蛇头的移动,蛇的运行状态、运行方向、是否存活的判断(吃自己),以及初始化蛇对象。(4)Controller控制游戏,她创建snake、food、ground对象,并获取计分面板和游戏面板对象能通过newGame()方法启动游戏利用 keyPress
3、ed()方法接收按键行为利用snakeMoved()处理蛇移动后的行为SnakeListener蛇移动的监听器(5)Global全局变量定义,包含单元格大小以及长宽各占多少单元格(6)GamePanel游戏面板,继承于JPanel,主要功能利用display()是获得snake、food和ground对象 并画蛇、食物和石头(7)GameUI组合贪吃蛇面板,触发应用程序运行(8)ScorePanel计分面板,继承于JPanel, 拥有5个标签对象, 最开始的成绩设置为0,等级为初出茅庐 其中label2用来显示成绩值, label4用来显示等级名称结构描述首先Gobal定义好场景的大小,在场景
4、中加入计分面板ScorePanel和游戏面板GamePanel,再用GameUI组合贪吃蛇面板,触发应用程序运行。Food中设置新食物的坐标位置,Gronud中二维rocks记录墙的位置,并定义蛇撞墙的判断方法,Snake定义蛇的行为来判断是否吃到自己获得速度以及通过方向判断蛇头的移动,在Controller中创建snake,food,ground对象,结合它们中所有的蛇行为并关联到游戏和计分面板。SnakeListener添加蛇移动的监听器。2. 判断哪些是主要方法。1) boolean common.Ground.isSnakeEatGround(Snake snake):蛇是否撞墙的判断
5、方法param Snake snake蛇return true 蛇头的坐标等于在第一行和15行2) boolean common.Snake.isEatBody():判断蛇是否吃到自己return true:蛇身体的坐标等于蛇头的坐标3) int common.Snake.getSpeed():通过分数来获得速度4) void view.ScorePanel.setGrade(int speed):根据参数判断所处的等级,并更新计分板上的等级值 param speed 速度值5) void controller.Controller.keyPressed(KeyEvent e):通过keyPr
6、essed方法接收按键行为6) void controller.Controller.snakeMoved(Snake snake):蛇移动后的行为1是否吃到食物,true构建新的食物坐标2是否撞到墙,true蛇死3重新画蛇,食物,地板4跟新计分板上的分数和等级7) void view.GameUI.main(String args):GameUI的主函数8 void common.Snake.eatFood()蛇吃到食物后给蛇加尾巴,给游戏者加分3. 检查方法调用是否符合要求。4. 方法调用层次是否过深。否5. 是否存在孤立未被调用的成员及方法。private GamePanel Snake
7、 .gamePanelprivate JLabel label4;三、 动态测试根据结构分析,贪吃蛇程序的产生BUG的主要模块为snake、controller、GameUI、ScorePanel,以下进行主要功能模块的单元测试setGrade单元测试A. 测试用例设计测试用例类型(正常或异常)输入条件期望结果输出结果TestsetGrade1300初出茅庐!TestsetGrade2异常250小试牛刀!超越神了!TestsetGrade3200表现优异!TestsetGrade4150疾风之蛇!TestsetGrade5120已经疯子!TestsetGrade6100B. 测试类脚本(测试文
8、件名及结构)void view.ScorePanelTest.testsetGrade ()testsetGrade()测试等级内容当速度达到300时,显示等级为 当速度达到250时,显示等级为 当速度达到200时,显示等级为 当速度达到150时,显示等级为 当速度达到120时,显示等级为 当速度达到100时,显示等级为Speed单元测试testGetSpeed190testGetSpeed2170testGetSpeed3130160testGetSpeed4testGetSpeed550testGetSpeedBound180testGetSpeedBound2testGetSpeedBo
9、und3testGetSpeedBound4testGetSpeedBound5testGetSpeedBound6401、void codetest.SnakeTes.testGetSpeed1():testgetSpeedX()测试通过分数来获得速度2、void codetest.SnakeTes.testGetSpeed2()3、void codetest.SnakeTes.testGetSpeed3()4、void codetest.SnakeTes.testGetSpeed4()5、void codetest.SnakeTes.testGetSpeed5()6、void codete
10、st.SnakeTes.testGetSpeedBound1()7、void codetest.SnakeTes.testGetSpeedBound2()8、void codetest.SnakeTes.testGetSpeedBound3()9、void codetest.SnakeTes.testGetSpeedBound4()10、void codetest.SnakeTes.testGetSpeedBound5()11、void codetest.SnakeTes.testGetSpeedBound6()isSnakeEatGround单元测试testIsSnakeEatGround1
11、nake.getBody().set(0,new Point(5,0)falsetruetestIsSnakeEatGround2nake.getBody().set(0,new Point(5,14)testIsSnakeEatGround3nake.getBody().set(0,new Point(5,2)void codetest.ControllerTest.testIsSnakeEatGround1()testIsSnakeEatGround()测试 当蛇吃到上下边界时后蛇处于死亡状态IsEatBody单元测试testIsEatBodysnake.getBody().add(new
12、 Point(5,1);snake.getBody().add(new Point(4,1);snake.getBody().add(new Point(4,2);snake.getBody().add(new Point(5,2);void codetest.ControllerTest.testIsEatBody()testIsEatBody()测试 当蛇吃到自己后蛇处于死亡状态GameUI单元测试testGameStartnew Game()0,初出茅庐!void codetest.GameUITest.testGameStart()KeyPressed单元测试testKeyPresse
13、dkeyPress(KeyEvent.VK_UP)firstPoint.x,firstPoint.y-1keyPress(KeyEvent.VK_LEFT)firstPoint.x-1,firstPoint.y-1keyPress(KeyEvent.VK_DOWN)firstPoint.x-1,firstPoint.y-1+1keyPress(KeyEvent.VK_RIGHT)firstPoint.x-1+1,firstPoint.y-1+1void codetest.ControllerTest.testKeyPressed()testKeyPressed()方法测试 蛇的行走方向通过键盘
14、方向键上下左右来操作AfterEatFood()单元测试testAfterEatFood()New Point(5,1)4、New Point(5,1),10void codetest.ControllerTest.testAfterEatFood()testAfterEatFood()测试蛇(蓝色长条)吞吃一个食物(红色方格)后身体长度增加一格,吃掉的食物消失并随机出现新食物游戏者的分数增加10分白盒测试缺陷报告:关于测试缺陷优先级的说明:1非常严重的缺陷,例如,软件的意外退出甚至操作系统崩溃,造成数据丢失。 2较严重的缺陷,例如,软件的某个菜单不起作用或者产生错误的结果;3-软件一般缺陷,
15、例如,本地化软件的某些字符没有翻译或者翻译不准确;4软件界面的细微缺陷,例如,某个控件没有对齐,某个标点符号丢失等;项目名称:贪吃蛇 编号001002003004005006版本号Ver: 0.91 Alpha测试环境JunitEclipse测试阶段(单元/集成)单元正确功能描述当分数超过40,速度为250;当速度达到300时,显示等级为“初出茅庐!”当蛇吃到上下边界(顶部和底部黑色长方格)以ControllerTest. testIsSnakeEatGround () 及自己的身体后游戏结束 ControllerTest.testIsEatBody()蛇的行走方向通过键盘方向键上、下、左、右
16、来操作。ControllerTest.testkeyPressed()游戏开始的时候,成绩为0,等级为“初出茅庐!GameUITest. testGameStart()蛇(蓝色长条)吞吃一个食物(红点方格)后,身体长度增加一格,吃掉的食物消失并随机出现新食物(红点方格),游戏者的分数增加10分。缺陷描述1当分数超过200时,根据测试速度应该为100,而实际代码中为902当分数超过120时,根据测试速度应该为160,而实际代码为150当速度为250时,根据测试显示为小试牛刀!实际情况显示超越神了!1在controller. snakeMoved方法中没有调用到snake.isEatBody()2
17、在Ground类中当如果蛇撞到墙时候返回值为false无缺陷类型界面/算法/功能/自定义算法功能致命/严重/一般/轻微严重致命优先级1/2/3/421修改意见1当分数超过200时,根据测试修改速度为100,2当分数超过120时,根据测试修改速度为160在scorePanel类中改为case 250: label4.setText(); break;1.在Controller类中加上if(snake.isEatBody()snake.die();这个方法,则蛇吃到自己时结束游戏2.在Ground类中当如果蛇撞到墙时候返回值应该为return true;测试人员郭洋提交日期2011/6/82011/6/92011/6/10测试工具复审人复审时间复审结果描述
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1