双人俄罗斯方块软件测试课程报告内容
- 格式:doc
- 大小:2.67 MB
- 文档页数:32
双人俄罗斯方块项目测试报告--课程报告课程名称:软件测试课程类别:专业主干课开课学期:2016秋季学期编写单位:信息工程学院项目测试人:编写人:指导教师:提交班级:提交时间:2017/1/2目录1 项目目的和任务 (1)1.1 项目背景 (1)1.2 项目测试目标 (1)1.3 项目测试任务 (1)1.4 任务分工 (1)2 项目测试计划 (2)3 项目测试大纲 (2)4 白盒测试 (2)5 黑盒测试 (25)6 测试结果分析 (28)6.1 白盒测试结果分析 (28)6.2 黑盒测试结果分析 (29)6.3 结果分析 (29)7 项目总结 (29)1 项目目的和任务本课程实践的目的和意义在于通过实际测试一个Java应用程序,使学生更深刻地领会软件测试的工作原理、测试用例的设计、测试工具及框架的使用方法,使学生比较全面地、系统地掌握软件测试的基本概念和基本知识,为将来从事软件测试的研究、应用奠定坚实的基础。
本项目来源于中国地质大学()信息工程学院软件测试课程实践,测试周期为5天。
本项目的测试代码来自中国地质大学()信息工程学院***开发团队研发,可实现双人俄罗斯方块的小游戏。
系统将分为2部分:双人对战部分及情侣合作部分。
1.1 项目背景双人俄罗斯方块项目是***开发团队在中国地质大学()信息工程学院JA V A程序设计的课程实践项目,基于Java语言开发。
此项目在传统的俄罗斯方块游戏的基础上进行了改进,实现了双人对战以及情侣合作的功能。
1.2 项目测试目标项目目标是确保最终交给用户的产品的功能符合用户的需求,把尽可能多的问题在产品交给用户之前发现并改正。
最终的测试方案要达到如下要求:1.确保产品完成了它所承诺或公布的功能。
2.确保产品满足性能和效率的要求3.确保产品是健壮的和适应用户环境的本测试主要根据用户需求说明书和软件需求规格说明书以及相应的文档进行系统测试,包括功能测试、用户界面测试、业务逻辑部分的单元测试。
1.3 项目测试任务1.采用黑盒测试的方法进行功能测试及用户界面测试。
2.采用白盒测试的方法对重要业务逻辑部分进行测试1.4 任务分工系统设计阶段的任务分工如表1-1所示表1-1 系统设计阶段任务分工2 项目测试计划本项目测试流程如表2所示表1-2 系统开发流程表3 项目测试大纲1.白盒测试部分采用基本路径测试方法,当所有的基本路径都被覆盖,即语句覆盖率达到100%时停止测试。
2.黑盒测试覆盖软件的所有功能及用户界面,当测试完所有功能及用户界面后停止测试。
4 白盒测试本项目的业务逻辑部分都在俄罗斯方块的七个形状类以及主控模块中,故将白盒测试的测试围确定在形状构建类以及主控模块中。
⏹形状构件类形状构件类的业务逻辑部分十分相近,故从中抽取了ShapeI及ShapeLeftL作为典型进行测试,以期在最短的时间迅速找出错误。
●ShapeI类1.reset函数:图 1 reset函数流程图图 2 reset函数流图基本路径测试:路径分析:环形复杂度:2基本路径集:{路径1:(1->2->3->4->6)路径2:(1->2->3->5->6)}2.turn函数:图 3 turn函数流程图图 4 turn函数流图基本路径测试:路径分析:环形复杂度:2基本路径集:{路径1:(1->2->3->4->7)路径2:(1->2->5->6->7)}3.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)} 测试用例:4.canMoveLeft函数:图7 canMoveLeft函数流程图图8 canMoveLeft函数流图基本路径测试:路径分析:环形复杂度:6基本路径集:{路径1:(1->2->4->12)路径2:(1->2->5->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)} 测试用例:shapeLeftL类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)}2.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)} 测试用例:3.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:(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)}测试用例:主控模块1.keyPressed函数15图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: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测试用例: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测试用例:3.vanish函数此函数的复杂部分在于消行的部分有3个for循环,故把循环部分与主要逻辑部分分离进行考察。
图19 vanish函数流程总图图20 vanish函数流程图分图1图21 vanish函数流程三层循环分图2对三层循环的流程图的具体分析,若采用基本路径法,有大部分路径无法覆盖,采用循环测试,对于for语句这种固定循环次数的控制流程无法在外部改变for循环的执行过程,故将此部分三层循环抽象成总业务流程的一个顺序模块。
图22 vanish函数主要逻辑流图基本路径1:1-2-6-7基本路径2:1-3-4-6-7基本路径3:1-3-5-6-7测试用例:5 黑盒测试用户界面模块:界面测试主要是针对界面按钮的可用性测试,体现软件在正常使用状态下,点击某个按键的所触发的反应是否正常。
测试容及情况:表格 1 界面测试容结果表游戏操作模块:游戏操作的测试,主要是针对游戏的操作可行性及游戏的操作体验的测试,目的是发现游戏进行时出现的异常情况。
测试容:表格 2 游戏操作测试容等价类划分:表格 3 系统运行等价类划分表表格 4 玩家输入等价类划分表测试用例设计及测试情况:因为游戏的模式都是由两个玩家参与的,分别设为“玩家1”(简称1)和“玩家2”(简称2),输入时存在两个输入,方便说明。
表格 5 功能测试表6 测试结果分析6.1 白盒测试结果分析形状构件模块通过基本路径测试实现语句覆盖100%,所测试的方法中,最终除canMoveLeft外,测试用例通过率均为100%。
当在canMoveleft中发现错误后,分析代码,同样的错误在canMoveRight中也出现了。
基本路径语句覆盖实现100%,测试用例通过率66.7%⏹主控模块本部分测试用例共20个,采用基本路径分析实现语句覆盖100%,通过20个,通过率100%,未通过白盒测试发现错误6.2 黑盒测试结果分析⏹界面模块:测试结果分析:测试覆盖率:100%,通过率:66.7% 。
测试结果看出,界面的部分功能的未实现,未能满足软件的部分功能需求。
⏹游戏操作模块:游戏操作的测试,主要是针对游戏的操作可行性及游戏的操作体验的测试,目的是发现游戏进行时出现的异常情况。
测试结果:在功能反面,游戏在细节方面存在一些问题,测试通过率:58.8%。
未能完成软件原有的功能。
6.3 结果分析从黑盒测试的结果出发,重点考察了小方块的旋转、左右移动以及主控模块中相应的调用方法。
在白盒测试的形状构件的测试中,发现了canMoveLeft()方法中有错误,定位回方法源码中,迅速找到了这段代码中的错误的具体位置,这帮助我们同样定位到了canMoveRight()中的错误。
这两个方法的错误在于双人对战时的第二个方块在左右移动的时候会受到第一个区域的影响。
在主控模块中没有发现错误,主控模块的业务路程相对比较可靠。
然而对于黑盒测出的旋转问题,在白盒中未测出。
可见,白盒测试虽然能覆盖到所有语句,但不能发现所有的错误。
在具体分析代码之后,发现了错误的具体位置,但是经考虑这种设计上的错误在白盒测试过基本路径分析无法测出。