双人俄罗斯方块软件测试课程报告内容_第1页
双人俄罗斯方块软件测试课程报告内容_第2页
双人俄罗斯方块软件测试课程报告内容_第3页
双人俄罗斯方块软件测试课程报告内容_第4页
双人俄罗斯方块软件测试课程报告内容_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、双人俄罗斯方块项目测试报告-课程报告课程名称:软件测试课程类别:专业主干课开课学期:2016秋季学期编写单位:信息工程学院项目测试人:编 写 人:指导教师:提交班级:提交时间:2017/1/2目 录1 项目目的和任务11.1 项目背景11.2 项目测试目标11.3 项目测试任务11.4 任务分工12 项目测试计划23 项目测试大纲24 白盒测试25 黑盒测试256 测试结果分析286.1 白盒测试结果分析286.2 黑盒测试结果分析296.3 结果分析297 项目总结291 项目目的和任务本课程实践的目的和意义在于通过实际测试一个Java应用程序,使学生更深刻地领会软件测试的工作原理、测试用例

2、的设计、测试工具及框架的使用方法,使学生比较全面地、系统地掌握软件测试的基本概念和基本知识,为将来从事软件测试的研究、应用奠定坚实的基础。本项目来源于中国地质大学(北京)信息工程学院软件测试课程实践,测试周期为5天。本项目的测试代码来自中国地质大学(北京)信息工程学院*开发团队研发,可实现双人俄罗斯方块的小游戏。系统将分为2部分:双人对战部分及情侣合作部分。1.1 项目背景双人俄罗斯方块项目是*开发团队在中国地质大学(北京)信息工程学院JAVA程序设计的课程实践项目,基于Java语言开发。此项目在传统的俄罗斯方块游戏的基础上进行了改进,实现了双人对战以及情侣合作的功能。1.2 项目测试目标项目

3、目标是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给用户之前发现并改正。最终的测试方案要达到如下要求:1. 确保产品完成了它所承诺或公布的功能。2. 确保产品满足性能和效率的要求3. 确保产品是健壮的和适应用户环境的本测试主要根据用户需求说明书和软件需求规格说明书以及相应的文档进行系统测试,包括功能测试、用户界面测试、业务逻辑部分的单元测试。1.3 项目测试任务1. 采用黑盒测试的方法进行功能测试及用户界面测试。2. 采用白盒测试的方法对重要业务逻辑部分进行测试1.4 任务分工系统设计阶段的任务分工如表1-1所示表1-1 系统设计阶段任务分工组员组内角色组内分工组长完成

4、游戏主控模块方法的白盒测试,所有测试结果分析,完成文档撰写,答辩组员完成形状构件类的白盒测试组员完成功能测试、用户界面测试部分的黑盒测试,制作PPT2 项目测试计划本项目测试流程如表2所示表 1-2 系统开发流程表时间工作安排具体内容12月23日-12月25日黑盒测试完成功能测试、用户界面测试部分的黑盒测试12月25日-12月28日白盒测试完成游戏主界面类、四个形状构件类的白盒测试12月29日-1月1日完成文档、制作答辩PPT完成文档、制作答辩PPT、准备答辩3 项目测试大纲1. 白盒测试部分采用基本路径测试方法,当所有的基本路径都被覆盖,即语句覆盖率达到100%时停止测试。2. 黑盒测试覆盖

5、软件的所有功能及用户界面,当测试完所有功能及用户界面后停止测试。4 白盒测试本项目的业务逻辑部分都在俄罗斯方块的七个形状类以及主控模块中,故将白盒测试的测试范围确定在形状构建类以及主控模块中。n 形状构件类形状构件类的业务逻辑部分十分相近,故从中抽取了ShapeI及ShapeLeftL作为典型进行测试,以期在最短的时间内迅速找出错误。l ShapeI类1.reset函数:图 1 reset函数流程图图 2 reset函数流图基本路径测试: 路径分析: 环形复杂度:2基本路径集:路径1:(1-2-3-4-6)路径2:(1-2-3-5-6) 测试用例:输入条件覆盖路径预期结果state=01sma

6、llblock0.m=4,smallblock0.n=0smallblock1.m=5,smallblock1.n=0smallblock2.m=6,smallblock2.n=0smallblock3.m=7,smallblock3.n=0state=12smallblock0.m=5, smallblock0.n=0smallblock1.m=5, smallblock1.n=1smallblock2.m=5, smallblock2.n=2smallblock3.m=5, smallblock3.n=32.turn函数:图 3 turn函数流程图图 4 turn函数流图基本路径测试: 路

7、径分析: 环形复杂度:2基本路径集:路径1:(1-2-3-4-7)路径2:(1-2-5-6-7) 测试用例:输入条件覆盖路径预期结果state=0smallblock0.m=2, smallblock0.n=3smallblock1.m=3, smallblock1.n=3smallblock2.m=4, smallblock2.n=3smallblock3.m=5, smallblock3.n=31state=1smallblock0.m=3, smallblock0.n=2smallblock1.m=3, smallblock1.n=3smallblock2.m=3, smallblock

8、2.n=4smallblock3.m=3, smallblock3.n=5state=1smallblock0.m=3, smallblock0.n=2smallblock1.m=3, smallblock1.n=3smallblock2.m=3, smallblock2.n=4smallblock3.m=3, smallblock3.n=52state=0smallblock0.m=2, smallblock0.n=3smallblock1.m=3, smallblock1.n=3smallblock2.m=4, smallblock2.n=3smallblock3.m=5, smallbl

9、ock3.n=33.canTurn函数:图 5 canTurn函数流程图图 6 canTurn函数流图基本路径测试: 路径分析: 环形复杂度:4 基本路径集:路径1:(1-2-3-5-9)路径2:(1-2-3-6-9)路径3:(1-2-4-7-9)路径4:(1-2-4-8-9) 测试用例:输入条件覆盖路径预期结果state=0map32=1smallblock0.m=2, smallblock0.n=3smallblock1.m=3, smallblock1.n=3smallblock2.m=4, smallblock2.n=3smallblock3.m=5, smallblock3.n=31

10、canTurn()=false state=0map32=0smallblock0.m=2, smallblock0.n=3smallblock1.m=3, smallblock1.n=3smallblock2.m=4, smallblock2.n=3smallblock3.m=5, smallblock3.n=32canTurn()=truestate=1map23=1smallblock0.m=3, smallblock0.n=2smallblock1.m=3, smallblock1.n=3smallblock2.m=3, smallblock2.n=4smallblock3.m=3,

11、smallblock3.n=53canTurn()=falsestate=1map23=0smallblock0.m=3, smallblock0.n=2smallblock1.m=3, smallblock1.n=3smallblock2.m=3, smallblock2.n=4smallblock3.m=3, smallblock3.n=54canTurn()=true4.canMoveLeft函数:图 7 canMoveLeft函数流程图图 8 canMoveLeft函数流图基本路径测试: 路径分析: 环形复杂度:6 基本路径集:路径1:(1-2-4-12)路径2:(1-2-5-12)路

12、径3:(1-3-6-8-12)路径4:(1-3-6-9-12)路径5:(1-3-7-10-12)路径4:(1-3-7-11-12) 测试用例:输入条件覆盖路径预期结果State=0,m=11,设置map100=1使得小方块左边有障碍1FALSEState=0,m=14,设置map使得小方块左边无障碍2TRUEState=1,m=2,设置map使得小方块左边有障碍3FALSEState=1,m=2,设置map使得小方块左边无障碍4TRUEState=1,m=17,设置map160=1使得小方块左边有障碍5FALSEState=1,m=17,设置map使得小方块左边无障碍6TRUE l shape

13、LeftL类1.reset函数: 图 9 reset函数流程图图 10 reset函数流图 基本路径测试: 路径分析: 环形复杂度:4 基本路径集:路径1:(1-2-3-4-10)路径2:(1-2-3-5-6-10)路径3:(1-2-3-5-7-8-10)路径4:(1-2-3-5-7-9-10) 测试用例:输入条件覆盖路径预期结果state=01smallblock0.m=6, smallblock0.n=0smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=2smallblock3.m=7, smallblock3.n

14、=2state=02smallblock0.m=7, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=5, smallblock2.n=1smallblock3.m=5, smallblock3.n=2state=23smallblock0.m=6, smallblock0.n=2smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=0smallblock3.m=5, smallblock3.n=0state=34smallblock0.m=5, s

15、mallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=7, smallblock2.n=1smallblock3.m=7, smallblock3.n=02.turn函数: 图 11 turn函数流程图图 12 turn函数流图基本路径测试: 路径分析: 环形复杂度:4 基本路径集:路径1:(1-2-3-5-13)路径2:(1-2-4-6-8-13)路径3:(1-2-4-7-9-11-13)路径4:(1-2-4-7-10-12-13)测试用例:输入条件覆盖路径预期结果state=0smallblock0.m=6, smallbl

16、ock0.n=0smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=2smallblock3.m=7, smallblock3.n=21state=1smallblock0.m=7, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=5, smallblock2.n=1smallblock3.m=5, smallblock3.n=2state=1smallblock0.m=7, smallblock0.n=1smallblock1.m=6, smal

17、lblock1.n=1smallblock2.m=5, smallblock2.n=1smallblock3.m=5, smallblock3.n=22state=2smallblock0.m=6, smallblock0.n=2smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=0smallblock3.m=5, smallblock3.n=0state=2smallblock0.m=6, smallblock0.n=2smallblock1.m=6, smallblock1.n=1smallblock2.m=6, s

18、mallblock2.n=0smallblock3.m=5, smallblock3.n=03state=3smallblock0.m=5, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=7, smallblock2.n=1smallblock3.m=7, smallblock3.n=0state=3smallblock0.m=5, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=7, smallblock2.n=1smallblock3.m=7

19、, smallblock3.n=04state=0smallblock0.m=6, smallblock0.n=0smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=2smallblock3.m=7, smallblock3.n=23.canTurn函数:图 13 canTurn函数流程图图 14 canTurn函数流图基本路径测试: 路径分析: 环形复杂度:8 基本路径集:路径1:(1-2-3-5-17)路径2:(1-2-3-6-17)路径3:(1-2-4-7-9-17)路径4:(1-2-4-7-10-17)路径5:(

20、1-2-4-8-11-13-17)路径6:(1-2-4-8-11-14-17)路径7:(1-2-4-8-12-15-17)路径8:(1-2-4-8-12-16-17)测试用例:输入条件覆盖路径预期结果state=0map71=1smallblock0.m=6, smallblock0.n=0smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=2smallblock3.m=7, smallblock3.n=21canTurn()=falsestate=0map71=0smallblock0.m=6, smallblock0

21、.n=0smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=2smallblock3.m=7, smallblock3.n=22canTurn()=truestate=1map62=1smallblock0.m=7, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=5, smallblock2.n=1smallblock3.m=5, smallblock3.n=23canTurn()=falsestate=1map62=0smallblock0.m

22、=7, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=5, smallblock2.n=1smallblock3.m=5, smallblock3.n=24canTurn()=truestate=2map51=1smallblock0.m=6, smallblock0.n=2smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=0smallblock3.m=5, smallblock3.n=05canTurn()=falsestate=2map51

23、=0smallblock0.m=6, smallblock0.n=2smallblock1.m=6, smallblock1.n=1smallblock2.m=6, smallblock2.n=0smallblock3.m=5, smallblock3.n=06canTurn()=truestate=3map60=1smallblock0.m=5, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=7, smallblock2.n=1smallblock3.m=7, smallblock3.n=07canTurn()=fa

24、lsestate=3map60=0smallblock0.m=5, smallblock0.n=1smallblock1.m=6, smallblock1.n=1smallblock2.m=7, smallblock2.n=1smallblock3.m=7, smallblock3.n=08canTurn()=truen 主控模块1.keyPressed函数图 15 Keypressed函数流程图图 16 Keypressed函数流图基本路径1:1-2-15基本路径2:1-3-15基本路径3:1-3-9-15基本路径4:1-4-15基本路径5:1-4-9-15基本路径6:1-5-15基本路径7

25、:1-5-11-15基本路径8:1-6-15基本路径9:1-6-12-15基本路径10:1-7-15基本路径11:1-7-13-15基本路径12:1-8-15基本路径13:1-8-14-15测试用例:输入覆盖路径预期结果VK_DOWN1Interval=100VK_W2dqfk0横纵坐标变化VK_W且将map设置为旋转后会碰到障碍物3dqfk0横纵坐标无变化VK_UP4dqfk1横纵坐标变化VK_UP且将map设置为旋转后会碰到障碍物5dqfk1横纵坐标无变化VK_A6dqfk0横坐标m-1VK_A且将map设置为左移后会碰到障碍物7dqfk0横坐标无变化VK_LEFT8dqfk1横坐标m-1

26、VK_LEFT且将map设置为左移后会碰到障碍物9dqfk1横坐标无变化VK_D10dqfk0横坐标m+1VK_D且将map设置为右移后会碰到障碍物11dqfk0横坐标无变化VK_RIGHT12dqfk1横坐标m+1VK_RIGHT且将map设置为右移后会碰到障碍物13dqfk1横坐标无变化2.CanVanish函数图 17 canVanish函数流程图图 18 canVanish函数流图基本路径1:1-2-4-5-4-7-8基本路径2:1-2-4-5-4-5-6-8基本路径3:1-3-4-5-4-7-8基本路径4:1-3-4-5-4-5-6-8测试用例:输入条件覆盖路径预期结果row=1,

27、a=0,且maprow表示的此行没有空格1truerow=1 ,a=0,且maprow表示的此行含空格2flaserow=1, a!=1, 且maprow表示的此行没有空格3truerow=1, a!=1, 且maprow表示的此行没有空格4false 3. vanish函数此函数的复杂部分在于消行的部分有3个for循环,故把循环部分与主要逻辑部分分离进行考察。图 19 vanish函数流程总图图 20 vanish函数流程图分图1图 21 vanish函数流程三层循环分图2 对三层循环的流程图的具体分析,若采用基本路径法,有大部分路径无法覆盖,采用循环测试,对于for语句这种固定循环次数的控

28、制流程无法在外部改变for循环的执行过程,故将此部分三层循环抽象成总业务流程的一个顺序模块。图 22 vanish函数主要逻辑流图基本路径1:1-2-6-7基本路径2:1-3-4-6-7基本路径3:1-3-5-6-7测试用例:输入条件覆盖路径预期结果style=0,且mapij矩阵有两行全为1120Style=1,a=0, 且mapij矩阵当i12时四行全为13405 黑盒测试n 用户界面模块:界面测试主要是针对界面按钮的可用性测试,体现软件在正常使用状态下,点击某个按键的所触发的反应是否正常。测试内容及情况:表格 1 界面测试内容结果表测试编号测试内容基本要求测试情况测试通过是否1开始游戏进

29、入游戏模式。实现要求2游戏设置进入游戏设置界面。实现要求3游戏帮助进入游戏帮助界面,显示有游戏帮助内容。实现要求4退出游戏关闭游戏退出。实现要求5情侣模式进入情侣游戏模式。实现要求6对战模式进入游戏玩家对战模式。实现要求7重玩游戏重新开始游戏没有反应,未实现要求8暂停游戏暂停游戏未暂停,未实现要求9背景设置设置背景图片可选择更改游戏背景。实现要求。10游戏难度可以更改游戏难度游戏没有反应,未实现要求11背景音效更改游戏的背景音乐游戏没有反应,未实现要求12主菜单返回主菜单实现要求n 游戏操作模块:游戏操作的测试,主要是针对游戏的操作可行性及游戏的操作体验的测试,目的是发现游戏进行时出现的异常情

30、况。测试内容:表格 2 游戏操作测试内容测试类编号测试内容基本要求1方块的下落玩家未操作时,方框可匀速下落2方块的随机生成每次方块的类型可随机生成3方块的移动玩家在键盘进行输入时,方块会按指令移动4方块的旋转玩家在键盘进行输入时,方块会按指令进行旋转5方块的消行当方块满足一整行时,游戏自动进行消行6计分统计满足消行条件时,得分更新7游戏边界判定方块是否会越过边界8玩家操作区分不同玩家操作互不影响等价类划分:表格 3 系统运行等价类划分表条件有效等价类无效等价类游戏方块方块匀速下落 (1)方块未下落(2)生成方块随机生成方块(3)未随机生成(4)方块消行方块填满一整行(10)方块未填满一整行(1

31、1)计分消行发生(12)消行未发生(13)表格 4 玩家输入等价类划分表输入条件有效等价类无效等价类方块左移键盘输入A或 (5)键盘输入其他(9)方块右移键盘输入D或 (6)方块下落键盘输入S或 (7)方块旋转键盘输入W或 (8)玩家输入操作区分玩家同时进行相同操作(14)玩家不同时进行相同操作(15)玩家同时进行不同操作(16)只有一名玩家进行操作(17)玩家输入操作边界判定方块左边有方块时左移(18)方块左边有方块时旋转(19)方块左边有边界时左移(20)方块左边有边界时旋转(21)方块右边有方块时右移(22)方块右边有方块时旋转(23)方块右边有边界时右移(24)方块右边有边界时旋转(2

32、5)方块周围无边界及方块(26)测试用例设计及测试情况:因为游戏的模式都是由两个玩家参与的,分别设为 “玩家1”(简称1) 和 “玩家2”(简称2), 输入时存在两个输入,方便说明。表格 5 功能测试表序号测试输入内容覆盖等价类期待结果测试情况测试通过是否1方块下落1匀速下落满足要求2方块生成3随机生成满足要求3消行10满足条件消行,方块下落满足要求4计分10、11消行同时分数增加满足要求5输入A,或5、17、26方块左移满足要求6输入S,或6、17、26操作的方块下落不同玩家的模块同时下落7输入D,或7、17、26方块右移满足要求8输入W,或8、17、26方块旋转满足要求91输入A 同时2输

33、入14、26操作同步进行只有一个操作实现101输入A 不同时2输入15、26操作分开进行满足要求111输入D 同时2输入16、26操作同步进行只有一个操作实现12边界输入A或5、20、17无法越过边界满足要求13左邻存在方块输入A或5、18、17方块无法移动方块重叠14边界输入D或6、24、17无法越过边界满足要求15右邻方块输入D或6、22、17方块无法移动方块重叠16边界输入W或8、21、25、17方块无法旋转方块越界17周围存在方块输入W或8、19、23、17方块无法旋转方块重叠6 测试结果分析6.1 白盒测试结果分析n 形状构件模块通过基本路径测试实现语句覆盖100%,所测试的方法中,最终除canMoveLeft外,测试用例通过率均为100%。当在canMoveleft中发现错误后,分析代码,同样的错误在canMoveRight中也出现了。下面为canMoveLeft的测试结果:输入条件覆盖路径预期结果符合预期State=0,m=11,设置map使得小方块左边有障碍1FALSEState=0,m=14,设置map使得小方块左边无障碍2TRUEState=1,m=2,设置map使得小方

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论