ImageVerifierCode 换一换
格式:DOC , 页数:37 ,大小:1.17MB ,
资源ID:5153826      下载积分:10 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.docduoduo.com/d-5153826.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录   微博登录 

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(软件测试课程设计(五子棋).doc)为本站会员(weiwoduzun)主动上传,道客多多仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知道客多多(发送邮件至docduoduo@163.com或直接QQ联系客服),我们立即给予删除!

软件测试课程设计(五子棋).doc

1、 软件测试小论文题目:五子棋的开发与测试班 级: 12 计算机科学与技术特色本(2)班 小组成员: 刘文志(18)、刘学(19)、朱和中 (51) 完成日期: 2015.4.18 指导教师: 钱 丽 摘 要五子棋游戏不仅能增强思维能力,提高记忆力,而且富含哲理,有助于修身养性。既有“场”的概念,亦有“点”的连接,是古今哲理的结晶。因此,开发出一款简单实用的单机版五子棋软件很有意义。 本论文分析了五子棋游戏的游戏规则,设计了游戏算法,并选择 eclipse作为该软件的开发平台,实现了五子棋的多种对战模式,既可人与人对战,也可人与电脑对战。还实现了,自定义棋盘行列数。本文将从开发环境的安装,到五子

2、棋的功能分析与设计,到各功能模块的实现,逐步向您展现五子棋的实现过程。经测试,本游戏系统功能齐全,能平稳运行,具有较强的使用价值。 关键词:五子棋;思考算法;多人对战;人机对战; 目 录1.引言 .11.1 编写目的 11.2 背景 12.单机版五子棋系统介绍 .22.1 平台简介 22.2 游戏概述 23.基于 Java 的五子棋游戏的设计 33.1 游戏模块 33.1.1 开局、退出、棋盘 33.1.2 模式栏 43.2 游戏流程图 44.软件测试 .54.1 测试的目的 54.2 测试的方法 54.3 白盒测试 64.3.1 测试用例 .74.4 黑盒测试 104.5 测试游戏存在的问题

3、 124.6 游戏不足的解决方案 124.6.1 游戏改进后的代码 .124.7 回归测试 135.总结 .15参考文献 16附录 1701.引言1.1 编写目的根据测试计划报告,对软件进行测试,详细记录测试过程,以对软件的质量进行评价,为软件设计人员提供 BUG 依据,故做产生测试分析报告。1.2 背景为了使游戏更加完善,使玩家有更好的游戏体验,针对游戏出现的一些问题,做出修复,使游戏更加生动,符合玩家的游戏习惯。12.单机版五子棋系统介绍2.1 平台简介Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境

4、。幸运的是,Eclipse 附带了一个标准的插件集,包括 Java 开发工具(Java Development Kit,JDK )。2.2 游戏概述该游戏软件采用 Java 语言设计,在 Windows 系统为玩家提供五子棋游戏人 机对战的基本功能。玩家可以通过鼠标在棋盘的相应位置下子,一方为白色,另 一方为黑色,先下的为黑子(主场)。游戏过程中,只要有一人先连成五个棋子, 不论横、竖或斜,就会在屏幕上显示是谁赢了比赛,也可以是平局收场,从而可 以进行下一场比赛。在比赛过程中,如果一方需要悔棋,先得通过对手的同意才可以。23.基于 Java 的五子棋游戏的设计本项目中五子棋主要包含两大主要模块

5、,如下图 3.1(a)所示。第一个模块为主要模块,用于实现五子棋的游戏功能。第二个模块为辅助模块,用于实现五子棋的相关辅助设置。游戏主界面如图 3.1(b)。五子棋游戏视图帮助块游戏模块图 3.1(a) 主要模块图 3.1(b)游戏主界面3.1 游戏模块该模块实现游戏的主要功能,共包含两个小模块,如下图 3.2(a)所示。第一个模块为棋盘栏,实现游戏玩家点击下棋的功能。第二个小模块为模式栏,对下棋的方式进行选择。游戏菜单如图 3.2(b)所示。3游戏模块模式栏开局、退出、棋盘栏图 3.2(a) 游戏模块图 3.2(b) 游戏菜单3.1.1 开局、退出、棋盘实现可视化的开局与退出功能,以及棋盘选

6、择对战模式。图 3.3 开局、退出、棋盘3.1.2 模式栏模式栏,主要实现游戏过程中的各种控制功能,包括人人、人机实例化对战模式。4图 3.4 模式选择3.2 游戏流程图是电脑下子电脑是否下子是电脑下子电脑是否下子否游戏结束是白子或黑子是否有 5个连成一线否游戏者是否下子否游戏者下子模式选择开局54.软件测试4.1 测试的目的软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例即输入数据及其预期的输出结果,并利用这些测试用例去运行程序,以发现程序错误的过程。设计测试的目标是想以最少的时间和人力,系统地找出软件中潜在的各种错

7、误和缺陷。如果成功地实施了测试,就能够发现软件中的错误。测试的附带收获是,它能够证明软件的功能和性能与需求说明相符合。此外,实施测试收集到的测试结果数据为可靠性分析提供了依据。而测试的目的就是在软件投入生产性运行之前,尽可能地发现软件中的错误。4.2 测试的方法常见的软件测试阶段的工作主要分为单元测试、集成测试、确认测试和系统测试四个步骤,测试方法有黑盒测试和白盒测试两种方法:黑盒测试(已经知道产品应该具有的功能,可以通过测试来检验是否每个功能都正常);白盒测试(如果知道产品内部工作过程,可以通过测试来检验内部动作是否按照说明书的规定正常进行)。本 游 戏 测 试 的 主 要 方 法 包 括

8、黑 盒 测 试 和 白 盒 测 试 ,由小组人员通过自己亲自去玩,然后观察游戏在运行过程中,所需要实现的功能有没有实现,以及在测试过程中有没有发现新的问题记录在案。然后根据测试后所产生的一系列的问题,有本组负责编码人员对游戏进行改进,然后在进行测试,就这样重复的进行这样的工作,直到游戏的运行与预想时的状况基本一致时,才算通过测试。6图 4.1 完整游戏图4.3 白盒测试通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正,这一方法是把测试对象看作一个打开的盒子,测试人员依据程序内部逻辑结构相关信息,设计或选

9、择测试用例,对程序所有逻辑路径进行测试,通过在不同点检查程序的状态,确定实际的状态是否与预期的状态一致。用软件白盒测试产生的测试用例能够:1.保证一个模块中的所有独立路径至少被使用一次;2.对所有逻辑值均需测试 true 和 false;3.在上下边界及可操作范围内运行所有循环;4.检查内部数据结构以确保其有效性。74.3.1 测试用例(1)用例 1:因为类 ChessFrame 主要功能是创建五子棋游戏主窗体,所以对其进行测试,看其构造五子棋游戏的主窗体的方法是否正确。class ChessFrame extends JFrame implements ActionListener priv

10、ate String strsize=“20x15“,“30x20“,“40x30“;private String strmode=“人机对弈 “,“人人对弈“;public static boolean iscomputer=true,checkcomputer=true;private int width,height;private ChessModel cm;private MainPanel mp;public ChessFrame() this.setTitle(“五子棋游戏“);cm=new ChessModel(1);mp=new MainPanel(cm);Container

11、 con=this.getContentPane();con.add(mp,“Center“);this.setResizable(false);this.addWindowListener(new ChessWindowEvent();MapSize(20,15);JMenuBar mbar = new JMenuBar();this.setJMenuBar(mbar);JMenu gameMenu = new JMenu(“游戏“);mbar.add(makeMenu(gameMenu, new Object “开局“, “ 棋盘“,“模式“, null, “退出“, this);JMen

12、u lookMenu =new JMenu(“视图“);mbar.add(makeMenu(lookMenu,new Object “Metal“,“Motif“,“Windows“,this);JMenu helpMenu = new JMenu(“帮助“);mbar.add(makeMenu(helpMenu, new Object “关于“, this);(2)用例 2:用 play(int x,int y)方法实现电脑下子,并先通过方法 readyplay(int x,int y)判断某坐标位置是否可下棋子。public void readyplay(int x,int y)if(ba

13、dxy(x,y)return;if (chessExist(x,y)8return;this.arrMapShowxy=3;public void play(int x,int y)if(badxy(x,y)return;if(chessExist(x,y)this.isExist=true;return;elsethis.isExist=false;if(getisOdd()setisOdd(false);this.arrMapShowxy=1;elsesetisOdd(true);this.arrMapShowxy=2;(3)用例 3:计算机走棋方法(computerDo )测试通过方法

14、computerDo 实现电脑下子的思想public void computerDo(int width,int height)int max_black,max_white,max_temp,max=0;setisOdd(true);System.out.println(“计算机走棋 .“);for(int i = 0; i max)max=max_temp;this.x=i;this.y=j; (4)用例 4:根据提供的棋子信息(颜色、坐标)画棋子方法( draw)的测试public void draw(Graphics g, int i, int j, int v)int x = 20

15、* i+20;9int y = 20 * j+20;/画棋盘if(i!=width g.drawRect(x,y,20,20);/画黑色棋子if(v = 1 )g.setColor(Color.gray);g.drawOval(x-8,y-8,16,16);g.setColor(Color.black);g.fillOval(x-8,y-8,16,16);/画白色棋子if(v = 2 )g.setColor(Color.gray);g.drawOval(x-8,y-8,16,16);g.setColor(Color.white);g.fillOval(x-8,y-8,16,16);if(v =

16、3)g.setColor(Color.cyan);g.drawOval(x-8,y-8,16,16);(5)用例 5:响应鼠标的点击事件,构造方法(mousePressed)实现鼠标的点击来实现下棋的动作。public void mousePressed(MouseEvent evt)int x = (evt.getX()-10) / 20;int y = (evt.getY()-10) / 20;System.out.println(x+“ “+y);if (evt.getModifiers()=MouseEvent.BUTTON1_MASK)cm.play(x,y);System.out.

17、println(cm.getisOdd()+“ “+cm.getarrMapShow()xy);repaint();if(cm.judgeSuccess(x,y,cm.getisOdd()cm.showSuccess(this);evt.consume();ChessFrame.iscomputer=false;10(6)用例 6:构造方法 judgeSuccess(int x,int y,boolean isodd)对当前棋子各个位置的判断来得出是否胜负。public boolean judgeSuccess(int x,int y,boolean isodd)int num=1;int a

18、rrvalue;int x_temp=x,y_temp=y;if(isodd)arrvalue=2;elsearrvalue=1;int x_temp1=x_temp,y_temp1=y_temp;4.4 黑盒测试软件黑盒测试也是软件测试的主要方法之一,也可以称为功能测试、数据驱动测试或基于规格说明的测试。测试者不了解程序的内部情况,只知道程序的输入、输出和系统的功能,这是从用户的角度针对软件界面、功能及外部结构进行测试,而不考虑程序内部逻辑结构。软件黑盒测试法注重于测试软件的功能需求,主要试图发现下列几类错误:1)功能不正确或遗漏;2)界面错误;3)数据库访问错误;4)性能错误;5)初始化和

19、终止错误等。测试方法可以分为以下几种:等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。从理论上讲,软件黑盒测试只有采用穷举输入测试,把所有可能的输入都作为测试情况考虑,才能查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但可能的输入进行测试。这样看来,完全测试是不可能的,所以我们要进行有针对性的测试,通过11制定测试案例指导测试的实施,保证软件测试有组织、按步骤,以及有计划地进行。软件黑盒测试行为必须能够加以量化,才能真正保证软件质量,而测试用例就是将测试行为具体量化的方法之一。五子棋游戏测试用例如下

20、表所示:用例 操作 预期结果 实际结果用例 1 能否在不同版本的eclipese 中运行该游戏 游戏能够在设计该游戏版本及以上中正常运行 Pass用例 2 运行时能否正常显示主界面运行时能正常显示主界面 Pass用例 3 鼠标单击菜单开始,是否可以运行游戏可以运行游戏Pass用例 4 鼠标单击棋盘,是否会有棋子落于该位置棋子落于鼠标单击位置Pass用例 5 当人下子出现“活三”、“冲四”,电脑是否会下子堵截电脑会下子阻挡Pass用例 6 多次游戏测试:在人(黑棋)没有出现“活三”、“冲四”的情况下,电脑(白棋)落子是否存在规律黑棋没有出现“活三”、“冲四”的情况下,电脑(白棋)随机落子,不存在

21、规律Pass12用例 7 进行对战时,按照规则下棋能否正常输赢可以正常输赢Pass用例 8 判断在横线上 5 子能否获得胜利可以Pass用例 9 判断在竖线上 5 子能否获得胜利可以Pass用例 10 判断在斜线上 5 子能否获得胜利可以Pass4.5 测试游戏存在的问题1.通过小组以外人员的游戏测试发现,由于棋盘大小问题,使得可能导致有时棋子满格也没有分出胜负,这样,就很难显示博弈者的水平。2.小组以外人员的游戏测试后建议认为,我们所设计的五子棋游戏只能实现人机博弈,不能实现人与人之间的博弈,这样很难让更多的人一展他们的高超棋艺。4.6 游戏不足的解决方案1.通过对后台代码的修改实现对游戏棋

22、盘大小的规格控制选择,新添规格 30*20格和 40*30 格模式,让博弈者尽展各自高超棋艺。2.在人机对战的基础上新增人人对战模式,以方便人与人之间棋艺博弈的乐趣让更多的爱好五子棋的玩家参与进来。4.6.1 游戏改进1.在菜单中新加棋盘选项,再在模式中新增规格 30*20 格和 40*30 格模式实现代码如下:13public ChessModel(int modeChess)this.isOdd=true;if(modeChess = 1)PanelInit(20, 15, modeChess); if(modeChess = 2)PanelInit(30, 20, modeChess);

23、 if(modeChess = 3)PanelInit(40, 30, modeChess);private void PanelInit(int width, int height, int modeChess)this.width = width;this.height = height;this.modeChess = modeChess;arrMapShow = new intwidth+1height+1;for(int i = 0; i = 1)cm = new ChessModel(modeChess);MapSize(cm.getWidth(),cm.getHeight();e

24、lseSystem.out.println(“u81EAu5B9Au4E49“);public void actionPerformed(ActionEvent e)String arg=e.getActionCommand();tryif (arg.equals(“Windows“)UIManager.setLookAndFeel(“com.sun.java.swing.plaf.windows.WindowsLookAndFeel“);else if(arg.equals(“Motif“)UIManager.setLookAndFeel(“com.sun.java.swing.plaf.m

25、otif.MotifLookAndFeel“);elseUIManager.setLookAndFeel(“javax.swing.plaf.metal.MetalLookAndFeel“ );SwingUtilities.updateComponentTreeUI(this);catch(Exception ee)if(arg.equals(“20x15“)this.width=20;this.height=15;cm=new ChessModel(1);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(

26、this);if(arg.equals(“30x20“)this.width=30;this.height=20;cm=new ChessModel(2);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this);if(arg.equals(“40x30“)this.width=40;this.height=30;21cm=new ChessModel(3);MapSize(this.width,this.height);SwingUtilities.updateComponentTreeUI(this

27、);if(arg.equals(“人机对弈“)this.checkcomputer=true;this.iscomputer=true;cm=new ChessModel(cm.getModeChess();MapSize(cm.getWidth(),cm.getHeight();SwingUtilities.updateComponentTreeUI(this);if(arg.equals(“人人对弈“)this.checkcomputer=false;this.iscomputer=false;cm=new ChessModel(cm.getModeChess();MapSize(cm.g

28、etWidth(),cm.getHeight();SwingUtilities.updateComponentTreeUI(this);if(arg.equals(“开局“)restart();if(arg.equals(“关于“)JOptionPane.showMessageDialog(this, “五子棋游戏测试版本“, “ 关于“, 0);if(arg.equals(“退出“)System.exit(0);/*类 ChessModel 实现了整个五子棋程序算法的核心*/class ChessModel /棋盘的宽度、高度、棋盘的模式(如 2015)private int width,h

29、eight,modeChess;/棋盘方格的横向、纵向坐标private int x=0,y=0;/棋盘方格的横向、纵向坐标所对应的棋子颜色,/数组 arrMapShow 只有 3 个值:1,2,3,-5 ,/其中 1 代表该棋盘方格上下的棋子为黑子,/2 代表该棋盘方格上下的棋子为白子,/3 代表为该棋盘方格上没有棋子,/-5 代表该棋盘方格不能够下棋子private int arrMapShow;/交换棋手的标识,棋盘方格上是否有棋子的标识符private boolean isOdd,isExist;22public ChessModel() /该构造方法根据不同的棋盘模式(modeChe

30、ss)来构建对应大小的棋盘public ChessModel(int modeChess)this.isOdd=true;if(modeChess = 1)PanelInit(20, 15, modeChess);if(modeChess = 2)PanelInit(30, 20, modeChess);if(modeChess = 3)PanelInit(40, 30, modeChess);/按照棋盘模式构建棋盘大小private void PanelInit(int width, int height, int modeChess)this.width = width;this.heig

31、ht = height;this.modeChess = modeChess;arrMapShow = new intwidth+1height+1;for(int i = 0; i = width+20 | x = height+20 | y max)max=max_temp;this.x=i;this.y=j;setX(this.x);setY(this.y);this.arrMapShowthis.xthis.y=2;/记录电脑下子后的横向坐标public void setX(int x)this.x=x;/记录电脑下子后的纵向坐标public void setY(int y)this.

32、y=y;/获取电脑下子的横向坐标public int getX()return this.x;25/获取电脑下子的纵向坐标public int getY()return this.y;/计算棋盘上某一方格上八个方向棋子的最大值,/这八个方向分别是:左、右、上、下、左上、左下、右上、右下public int checkMax(int x, int y,int black_or_white)int num=0,max_num,max_temp=0;int x_temp=x,y_temp=y;int x_temp1=x_temp,y_temp1=y_temp;/judge rightfor(int

33、i=1;ithis.width)break;if(this.arrMapShowx_temp1y_temp1=black_or_white)num+;elsebreak;/judge leftx_temp1=x_temp;for(int i=1;ithis.height)break;if(this.arrMapShowx_temp1y_temp1=black_or_white)num+;elsebreak;if(nummax_tempif(this.arrMapShowx_temp1y_temp1=black_or_white)num+;elsebreak;if(nummax_temp&num5)

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报