毕业设计(论文)基于安卓的五子棋游戏.doc

上传人:文库蛋蛋多 文档编号:3981324 上传时间:2023-03-30 格式:DOC 页数:25 大小:359KB
返回 下载 相关 举报
毕业设计(论文)基于安卓的五子棋游戏.doc_第1页
第1页 / 共25页
毕业设计(论文)基于安卓的五子棋游戏.doc_第2页
第2页 / 共25页
毕业设计(论文)基于安卓的五子棋游戏.doc_第3页
第3页 / 共25页
毕业设计(论文)基于安卓的五子棋游戏.doc_第4页
第4页 / 共25页
毕业设计(论文)基于安卓的五子棋游戏.doc_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《毕业设计(论文)基于安卓的五子棋游戏.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于安卓的五子棋游戏.doc(25页珍藏版)》请在三一办公上搜索。

1、南京信息职业技术学院毕业设计论文作者 学号 90916P35 系部 计算机与软件学院 专业 软件技术(移动应用开发) 题目 基于安卓的五子棋游戏 指导教师 评阅教师 完成时间: 2012 年 5 月 10 日 毕业设计(论文)中文摘要题目:基于安卓的五子棋游戏摘要:近年来,随着安卓手机的普及,安卓游戏成为广大用户关注的方向。五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏,主要完成人机对战的功能。 本文结合五子棋这个游戏的特点,将阐述单机版五子棋算法设计,突出人工智能在博弈方面的应用,而选五子棋游戏的开发则是利用计算机来

2、实现它的人工智能,从而培养我们从事软件开发方面的能力。 在本程序中,主要使用eclipse开发工具,使用Java开发语言进行五子棋游戏的设计。关键词:安卓游戏 五子棋 人机对战毕业设计(论文)外文摘要Title : Based on the Android of gobang game Abstract: In recent years, with the popularity of Android phone, Android games will cause direction of customers attention. Gobang as a chess athletics, is

3、very popular in civil. In order to become familiar with the game rules and techniques, and the study of simple artificial intelligence, so I decided to use Java to develop gobang game, mainly complete the function of man-machine battle.In this program ,combating the features of gobang game, will ela

4、borate the algorithm design of gobang, and prominent the artificial intelligence in the application of the game, and choosing the gobang game development is using computer to realize its artificial intelligence, and training our ability in software development.In this program, I use eclipse developm

5、ent tool and Java language to design gobang game.keywords: Android games gobang man-machine battle 目录1 引言11.1 安卓游戏11.2 课题背景21.3 我的主要工作22 项目概述与需求分析32.1 项目概述32.2 需求分析33 概要设计43.1 五子棋解释43.2 五子棋的基本规则53.3 五子棋的相关术语53.4 程序设计分析53.5 数据流图64 详细设计64.1 用例图64.2 类图84.3 棋盘界面设计 104.4 核心实现代码125 运行测试165.1 程序测试165.2 测试方

6、法和测试用例185.3 测试结论185.4 运行效果图18结论20致谢21参考文献211 引言1.1 安卓游戏运行在安卓系统平台的游戏,运行在安卓平台的游戏深受大家的喜爱。现在,Android游戏不但可以运行于智能手机,也可以运行在平板电脑上。1.1.1 安卓游戏发展趋势将向专业化、大规模化方向发展,随着各平台对OpenGL ES支持能力的大力加强,使得开发复杂的3D场景游戏成为可能。更多显示芯片对Android的支持,硬件性能将不再成为制约专业化游戏发展的瓶颈。越来越多在PC、PSP、PS3、XBOX360等各游戏平台占有领先地位的专业游戏公司将向Android等手机平台领域快速渗透,使得游

7、戏的规划更加向专业化方向发展。 将向网络化方向发展,随着各平台对无线通信网络、WIFI网络、蓝牙网络的良好支持,游戏将创新出更好的游戏性和用户本验。网络游戏,多人游戏,联机对战等将进一步强化玩家对游戏的粘着度,并且容易通过对道具等的控制产生营利模式。玩家之间对交互能力的需求也会促成未来的游戏向网络化发展进程的加快。 将向休闲化、时间片化方向发展,移动设备的随身性使是休闲小游戏将得到快速的发展。移动设备对分散时间的利用促进了游戏向时间片化发展,即一个游戏可以随时开始,随时结束,充分利用用户分散的时间片来运行。1.1.2 开发安卓游戏的意义由于安卓平台前景广阔,作为安卓平台的应用,即安卓游戏的快速

8、发展,是大势所趋,必然趋势,所以安卓深受广大群众的喜爱。有需求就有供应,游戏开发商在开源的安卓平台上,尽情的发挥他们的想象力,带给我们一款又一款好玩且爱不释手的游戏。比如水果忍者、植物大战僵尸和赛车系列游戏,属于安卓发烧友的装机必备的小游戏。 对于如此之高的安卓系统市场占有率,那么安卓手机的游戏又有何理由不火呢?因此,我们坚信安卓游戏会越来越受到广大朋友的宠爱,且越来越来的安卓游戏也会进入我们的视野里。1.2 课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称只为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、

9、串珠、五幕、五目碰等多种称谓。 五子棋起源于古代中国,发展在日本,风靡于欧洲。对于它于围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。人世纪初五子棋传入欧洲并速度风靡全球。通过一系列的变化,使五子棋这一简单的游戏复杂化、规模化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。1.3 我的主要工作本次开发使用Android开发平台的eclipse开发工具进行开发,使用Java语言开发的一款游戏。通过对该游戏程序的编写,还可以巩固我们对以上各种知识的掌握和理解。对于五子棋游戏,首先我要解决

10、的是游戏界面问题,因为一个清晰美观的界面可以让别人对我们所设计出来的游戏产生好感,一开始考虑界面的设计,界面包括,棋盘,也就是棋子绘制的范围,提示信息,即显示出下棋结果的提示语,还有棋子。为了区分开来,分为黑白两种。我设计玩家执白子,电脑执黑子。所以把界面分成三个部分:一个是棋盘类,也是主要的类,一个是消息面板的类,还有一个就是控制面板的类。这样一来,我们就可以对他们进行单独的操作了,而且组织他们也比较方便,我们可以根据自己的风格,自己的喜好来组织他们,把整个界面做的美观清晰。而且对他们进行操作也不影响其他组件。有了以上的准备就可以把棋盘绘制出来了,然后就是下棋了,计算机要自己选择一个合适的位

11、置来下棋,也就是说每次自己下完棋之后就要有一个控制变量来控制自能不能下棋。人可以随意的下子,可是计算机就要计算在那个位置下子了。这里由计算机下子的算法来确定,对弈的话就不象单机游戏一样,要计算机来判断人下子之后计算机下那一个地方了,对弈只要在双方下子的时候判断赢棋情况,当然还要同步的控制两个人下棋的顺序,这样的话就要用到线程了,各自都继承或实现线程类或接口,以便各自能随时单独控制接发消息。2 项目概述与需求分析2.1 项目概述2.1.1 项目开发目标该款五子棋游戏功能虽然简单,但最主要的还是实现了人与智能电脑对战的模式,所以从这个角度来说,该款游戏需要能很好的设计出电脑的智能。虽然程序不复杂,

12、但要在满足玩家的基本要求的情况下,电脑有一定的智能,能给于新手一定的帮助。另外,通过研究五子棋游戏,帮助更好的运用自身所学,将理论付诸于程序设计中。2.1.2 项目开发意义该五子棋落子的坐标系统的意义是让我们学生深入理解,认识到Java语言在程序设计中的重要作用。 通过本次程序开发,让我们更加熟练的掌握Java编程。另外,五子棋游戏的规则,简单来说就是五子连线,这其中分为横、竖、斜三种模式。那么,需要我们对坐标进行深入研究。同时也让我们对开发工具eclipse熟练掌握并提高学生动手编程的能力开发工具。2.1.3 开发工具eclipse平台下,Java开发语言,Android 2.1-updat

13、e 1虚拟环境。2.2 需求分析2.2.1功能需求分析该五子棋游戏比较简单,进入界面,不会有提示的,且主要是人机对战,是由人先开局,电脑会智能的选择该在哪处下子,并会在每次下棋结束后判断是否有哪方已经获胜,如果获胜则结束本局游戏,并提示玩家游戏结束。故每次玩家在棋盘上点击鼠标,需要实现界面出现棋子,而电脑需要立即作出回复,在最适合的地方落子。因此,可以将本程序需要实现的功能,概括如下:1. 判断该坐标是否在棋盘之外,如果不是,记录下该坐标值以进行下一步操作。2. 判断该位置是否已有棋子,没有的话用类graphics.Paint画出棋子,并记录下棋盘的状态。3. 判断该颜色棋子的上下左右是否满足

14、连续五个,是的话提醒相应玩家获胜,不是的话,更换玩家,监听事件处理结束。4. 对于玩家的更换是程序自动的,每次用户点击鼠标后,都会变换为电脑,从而画出对应黑方白方的棋子供玩家查看。2.2.2性能需求分析 使用eclipse开发工具,使用Java开发语言,在Android 2.1-update 1的虚拟环境下进行编程开发,需要套用android-7才能使程序进行运行。另外,需要计算出电脑每次需要落子的位置,不仅要阻止玩家的五子连线机会,还要主动发起攻势。必要的情况下,需要用户掌握一定的五子棋规则及技巧,避免由于盲目落子,造成个人的失败。但作为用户自己设计的智能电脑玩家,需要由主要的参数来控制落子

15、位置,这就要求对棋盘上的坐标进行仔细的研究。如图2-1显示程序开发环境。 图2-1 开发环境 3 概要设计3.1 五子棋解释引用辞海中所言,五子棋是“棋类游戏,棋具与围棋相同,两人对局,轮流下子,先将五子连成一行者为胜。”。五子棋的名称:日文亦有“连五子、五子连、串珠、五目、五目碰、五格、五石、五法、五联、京棋”等多种称谓,英文则称之为FIR (Five In A Row的缩写)、Gomoku(日语“五目”的罗马拼音)、Gobang、connect 5、mo-rphion。捷克语piskvorky,韩语omok、韩国人还称之为情侣棋。3.2 五子棋的基本规则1.五子棋行棋时,玩家执白棋先下第一

16、子,而后黑棋在棋盘合适的位置落子。接着黑白双方相互顺序子。2. 最先在棋盘线交点横向,纵向,斜向形成已方的五个棋子连续的一方为胜。3. 如下至最终一子仍不分胜负则定为平局。3.3 五子棋的相关术语阳线:棋盘上可见的纵横直线阴线:棋盘上无实线连接的隐形斜线五连:棋盘上形成5个同色的棋子的连活四:在棋盘某一条阳线或阴线上有同色4子不间隔的紧紧相连,且在此4子两端延长线上各有一个无子的交叉点与此4子紧紧相连冲四:除活四外的在下一招,便可形成五连,并且存在五连的可能性活三:在棋盘某一条阳线或阴线上有同色3子不间隔的紧紧相连,且在此3子两端延长线上各有一个无子的交叉点与此3子紧紧相连活二:在棋盘上,再走

17、一步可成活三的点眠三:在棋盘上,再走一步可成冲四的点眠二:在走一步可成眠三的点3.4 程序设计分析1. 绘制棋盘,14条横线,14条竖线,在直线交点处下棋子。2. 界面中的棋盘通过onDraw函数进行绘制,而黑白子通过引用图片显示在棋盘上。3. 白子先行,黑白交替下子。边框的的交接点无法落子,故棋盘实际可以进行落子的范围为1212格。4. 玩家落子之后,电脑需要判定棋盘的某一位置是否有棋子,并在棋盘上,选择一个最佳位置落子。5. 当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断赢棋,并显示黑方或白方胜利。棋局结束后,任何一方均不能继续操作。3.5 数据流图 该五子棋的主要程序流图如图

18、3-1所示。 图3-1 程序流程图图3-1显示当任何一方有五个棋子沿着横,竖,斜连在一起时,系统自动判断赢棋,并显示黑方或白方胜利。棋局结束后,任何一方均不能继续操作。4 详细设计4.1 用例图用例图就是由主角、用例以及它们之间的关系构成的图。该图说明了用例模型中的关系。可以将用例图组织到用例包中,并归用例包所有,让特定包中仅显示互为关联关系的内容。用例图由参与者(Actor)、用例(Use Case)、系统边界、箭头组成,用画图的方法来完成。参与者不是特指人,是指系统以外的,在使用系统或与系统交互中所扮演的角色。因此参与者可以是人,可以是事物,也可以是时间或其他系统等等。还有一点要注意的是,

19、参与者不是指人或事物本身,而是表示人或事物当时所扮演的角色。参与者在画图中用简笔人物画来表示,人物下面附上参与者的名称,例如图4-1所示。图4-1 角色用例是对包括变量在内的一组动作序列的描述,系统执行这些动作,并产生传递特定参与者的价值的可观察结果。我们可以给用例取一个简单、描述性的名称,一般为带有动作性的词。用例在画图中用椭圆来表示,椭圆下面附上用例的名称,例如图4-2所示。图4-2 用例系统边界是用来表示正在建模系统的边界。边界内表示系统的组成部分,边界外表示系统外部。系统边界在画图中方框来表示,同时附上系统的名称,参与者画在边界的外面,用例画在边界里面。因为系统边界的作用有时候不是很明

20、显,所以我个人理解,在画图时可省略。箭头用来表示参与者和系统通过相互发送信号或消息进行交互的关联关系。箭头尾部用来表示启动交互的一方,箭头头部用来表示被启动的一方,其中用例总是要由参与者来启动。用例图主要的作用有三个:(1)获取需求;(2)指导测试;(3)还可在整个过程中的其它工作流起到指导作用。对问题做出了分析之后,就可以根据分析的结果画出用例图了,因为下棋的角色是人,所以角色就是下棋者,下棋者直接发生的动作是点击鼠标,在棋盘上绘制棋子,所以就有可以把整个下棋的过程分为两个用例。绘制棋盘界面和点击鼠标下棋,点击鼠标下棋包含了绘制棋子的动作,绘制棋子界面包括绘制控制界面,绘制消息界面,和他直接

21、的棋盘界面。用例图如图4-3所示。图4-3 五子棋用例图4.2 类图类图是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性信息。类图(Class diagram)是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。 类图最基本的元素是类或者接口。类图通常包含如下的内容:类、接口、协作、关系。同其他的图一样,类图也可以包含注解和限制,类图中也可以包含包和子系统,这两者用来将元素分组。有时后你也可以将类的实例放到类图中。1. 类(Class) 类一般包含3个组成部分。第一个是类名;第二个是属性(attribu

22、tes);第三个是该类提供的方法( 类的性质可以放在第四部分;如果类中含有内部类,则会出现第五个组成部分)。类名部分是不能省略的,其他组成部分可以省略。类图的画法如图4-4。 图4-4 类2. 包(Package) 包是一种常规用途的组合机制。UML中的一个包直接对应于Java中的一个包。在Java中,一个包可能含有其他包、类或者同时含有这两者。进行建模时,通常使用逻辑性的包,用于对模型进行组织;使用物理性的包,用于转换成系统中的Java包。每个包的名称对这个包进行了惟一性的标识。3. 接口(Interface) 接口是一系列操作的集合,它指定了一个类所提供的服务。它直接对应于Java中的一个

23、接口类型。接口的表示有大概两种方式。具体画法见图4-5。 图4-5 接口4. 关系 常见的关系有:一般化关系(Generalization),关联关系(Association),聚合关系(Aggregation),合成关系(Composition),依赖关系(Dependency)。 其中,聚合关系(Aggregation),合成关系(Composition)属于关联关系(Association)。一般关系表现为继承或实现关系(is a),关联关系表现为变量(has a ),依赖关系表现为函数中的参数(use a)。 一般化关系:表示为类与类之间的继承关系,接口与接口之间的继承,类对接口的实现

24、关系。表示方法: 用一个空心箭头实线,箭头指向父类。或空心箭头虚线,如果父类是接口。 对于每个机制,确定类、接口和其他的参与这个协作的协作。同时确定这些事物之间的关系。用场景来预排这些事物,沿着这条路你将发现模型中忽略的部分和定义错误的部分。 确定用这些事物的内容来填充它们。对于类,开始于获得一个责任(类的职责),然后,将它转化为具体的属性和方法。 通过对各个类的属性和方法分析,可以画出一下类图,如图4-6所示。图4-6 五子棋类图4.3 棋盘界面设计分析了设计思想,有了算法,并且画出了用例图,类图,之后就可以开始设计界面了,对界面的设计也可以理解为对类的设计,此界面主要通过类GobangVi

25、ew进行设计。GobangView类也是主要的类,该类的主要作用是绘制棋盘,包括棋盘方格和边框,并组织五子棋窗口的下棋面板, 并显示消息面板,还初始化了棋盘上各个落棋点的位置。4.3.1 画棋盘 此部分主要使用onDraw进行绘制,其主要实现代码如下:public void onDraw(Canvas canvas) canvas.drawColor(Color.YELLOW);Paint paintRect = new Paint();paintRect.setColor(Color.GRAY);paintRect.setStrokeWidth(2);paintRect.setStyle(S

26、tyle.STROKE);for (int i = 0; i GRID_SIZE; i+) for (int j = 0; j GRID_SIZE; j+) int mLeft = i * grid_width + mStartX;int mTop = j * grid_width + mStartY;int mRright = mLeft + grid_width;int mBottom = mTop + grid_width;canvas.drawRect(mLeft, mTop, mRright, mBottom, paintRect);4.3.2 画棋子 此棋子通过使用图片进行绘制,其

27、部分实现代码如下:Drawable tile = r.getDrawable(R.drawable.chess1);其中chess1是需要引用图片的名称,存在drawable文件中。4.3.3 结束提示语显示提示语显示使用函数mtext,并分3种情况显示提示语,其部分实现代码如下:private CharSequence mText;private CharSequence STRING_WIN = 白棋赢! n 按中键开始新游戏。;private CharSequence STRING_LOSE = 黑棋赢! n 按中键开始新游戏。;private CharSequence STRING_E

28、QUAL = 酷!你们是平手! n 按中键开始新游戏。; if (checkWin(WHITE) mText = STRING_WIN;mGameState = GAMESTATE_END;showTextView(mText); else if (checkFull() mText = STRING_EQUAL;mGameState = GAMESTATE_END;showTextView(mText);whoTurn = BLACK;analyzeChess();if (checkWin(BLACK) mText = STRING_LOSE;mGameState = GAMESTATE_E

29、ND;showTextView(mText); else if (checkFull() mText = STRING_EQUAL;mGameState = GAMESTATE_END;showTextView(mText);4.4 核心实现代码 五子棋程序核心通过类ChessFormUtil进行具体实现,此类包含五连、活四、冲四、活三、活二、眠三、眠二这7种情况。下面将是本程序的核心实现代码,用来实现人工电脑智能方面。1. 分析是否存在连续5个同色棋子,即判断是否输赢,其实现代码如下:public boolean analyzeWulian(int tmpChess, int isWho)

30、int count = 0;for (int i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN - (i + 1) = isWho) count+; else break;for (int i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN + i = isWho) count+; else break;if (count = 4) return true;return false;2. 分析活四 ,确认是否存在活四(活四:在棋盘某一条阳线或阴线上有同色4子不间隔的紧紧相连,且在此4子两端延长线上各有一个无子的交叉点与此

31、4子紧紧相连),其实现代码如下:public boolean analyzeHuosi(int tmpChess, int isWho) int count = 0;int i = 0;boolean isSpace = false;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN - (i + 1) = isWho) count+; else break;if (tmpChessHALF_LEN - (i + 1) = 0) isSpace = true;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_

32、LEN + i = isWho) count+; else break;if (tmpChessHALF_LEN + i = 0) isSpace = true; else isSpace = false;if (count = 3 & isSpace) return true;return false;3. 分析活三,查看是否存在活三(活三:在棋盘某一条阳线或阴线上有同色3子不间隔的紧紧相连,且在此3子两端延长线上各有一个无子的交叉点与此3子紧紧相连),其实现代码如下:public boolean analyzeHuosan(int tmpChess, int isWho) int coun

33、t = 0;int i = 0;boolean isSpace = false;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN - (i + 1) = isWho) count+; else break;if (tmpChessHALF_LEN - (i + 1) = 0) isSpace = true;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN + i = isWho) count+; else break;if (tmpChessHALF_LEN + i = 0) isSpace = t

34、rue; else isSpace = false;if (count = 2 & isSpace) return true;return false;6. 分析冲四,确认是否存在冲四(冲四:除活四外的在下一招,便可形成五连,并且存在五连的可能性),其实现代码如下:public boolean analyzeChongsi(int tmpChess, int isWho) int count = 0;int i = 0;boolean isSpace = false;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN - (i + 1) = isW

35、ho) count+; else break;if (tmpChessHALF_LEN - (i + 1) = 0) isSpace = true;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN + i = isWho) count+; else break;if (tmpChessHALF_LEN + i = 0) isSpace = true;if (count = 3 & isSpace) return true;return false;5. 分析活二 ,确认是否存在活二(活二:在棋盘上,再走一步可成活三),其实现代码如下:public

36、 boolean analyzeHuoEr(int tmpChess, int isWho) int count = 0;int i = 0;boolean isSpace = false;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN - (i + 1) = isWho) count+; else break;if (tmpChessHALF_LEN - (i + 1) = 0) isSpace = true;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN + i = isWho) count

37、+; else break;if (tmpChessHALF_LEN + i = 0) isSpace = true; else isSpace = false;if (count = 1 & isSpace) return true;return false;6. 分析眠三 ,确认是否存在眠三(眠三:在棋盘上,再走一步可成冲四的点),其实现代码如下:public boolean analyzeMianSan(int tmpChess, int isWho) int count = 0;int i = 0;boolean isSpace = false;for (i = 0; i HALF_L

38、EN; i+) if (tmpChessHALF_LEN - (i + 1) = isWho) count+; else break;if (tmpChessHALF_LEN - (i + 1) = 0) isSpace = true;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN + i = isWho) count+; else break;if (tmpChessHALF_LEN + i = 0) isSpace = true;if (count = 2 & isSpace) return true;return false;7.分析眠二

39、,确认是否存在眠二(眠二:在走一步可成眠三),其实现代码如下:public boolean analyzeMianEr(int tmpChess, int isWho) int count = 0;int i = 0;boolean isSpace = false;for (i = 0; i HALF_LEN; i+) if (tmpChessHALF_LEN - (i + 1) = isWho) count+; else break;if (tmpChessHALF_LEN - (i + 1) = 0) isSpace = true;for (i = 0; i HALF_LEN; i+) i

40、f (tmpChessHALF_LEN + i = isWho) count+; else break;if (tmpChessHALF_LEN + i = 0) isSpace = true;if (count = 1 & isSpace) return true;return false;5 运行测试5.1 程序测试 软件测试就是在软件交付用户使用或投入运行前,对软件需求规格说明、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生命周期中横跨两个阶段:通常在编写出每一个模块之后就需要对它做必要的测试(称为单元测试)。编码和单元测

41、试属于软件生命周期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,如集成测试、系统测试、性能测试和配置测试等,这是软件生命周期的另一个独立阶段,即测试阶段。 软件测试的目的: 1、测试的最终目的是为了避免错误的发生,确保应用程序能够正常高效的运行;2、好的测试用例在于发现至今未发现的错误; 3、成功的测试是发现了至今未发现的错误的测试; 4、好的测试工程师应该做到不仅发现问题,还能够帮助开发人员分析问题; 软件测试的原则:1、应把“尽早和不断地进行软件测试”作为软件开发者的座右铭,实践证明单元测试能够尽早发现问题,减少后期测试的错误量。2、测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。3、应当避免由程序员检查自己的程序。(指后期系统测试阶段,不包括单元测试) 4、测试用例的设计要确保能覆盖所有可能路径。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。 5、充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。 6、严格执行测试计划,排除测试的随意性。 测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号