软件工程毕业设计-QQ连连看游戏辅助器.docx
本科毕业设计(论文)题目:QQ连连看游戏辅助器院系:计算机科学系专业:软件工程姓名:李闪闪学号2211114010xx指导教师:张军教师职称:讲师填写日期:2021年05月20日摘要辅助器是指某些人利用自己的电脑技术专门针对一个或多个网络游戏,通过改变网络游戏软件的部分程序,制作而成的作弊程序。现在随着游戏官方对辅助器的抵制,游戏本身也有了超强的自动检测辅助器的功能,但制作辅助器的技术也不断提高着,现在最流行的就是在游戏中用封包和抓包工具对游戏服务器提交假的数据从而改变游戏人物能力。另外,辅助器也指:单位形的作战武器系统在其原本的作战单位上添加附加的用于辅助作战单位作战的工具、器具。关键词:网络游戏;程序;抓包工具AbstractAuxiliaryprogramisthatsomepeopleusetheircomputerskillsspecificallyforoneormoreonlinegames,onlinegamessoftwarebychangingthepartprogram,producedbythecheats.Now,withthegameofficialplug-inresistance,thegameitselfalsohassuperiorfeaturesauto-detectionplug-in,buttheproductionplug-intechnologyisalsorisingsignificantly,isnowthemostpopulargameusingpacketsandpacketcapturetoolsforgameserverSubmittedfalsedatatochangetheabilityofgamecharacters.Inaddition,theplug-inalsomeans:flat-shapedweaponsystemsintheiroriginalcombatunitstoaddadditionalunitsforcombatoperationssupportingtools,appliances.Keywords:Onlinegames;procedures;packetcapturetools摘要IAbstractII第一章绪论1第一节研究的背景1第二节研究的目的和意义1一、QQ连连看辅助器的必要性1第三节相关软件及技术介绍1一、VisualC+6O概述1二、OnyICE概述2三、Cheat.Engine.V5.4.简体中文版概述2第二章需求分析3*3一、用户需求3、*ltjh3、三E3育匕性'需i3第二节软件运行流程分析4第三节UML系统建模4第三章辅助器设计6第一节辅助器总体设计6、目S-J6二、辅助器功能结构图6、率甫“口/勾夕7第二节系统详细设计7-、程序流程图8二、主要功能模块界面设计8第四章QQ连连看游戏的分析10第一节相应参数的测试10一、游戏棋盘基址的测试10二、游戏剩余方块基址的测试14三、游戏剩多时间基址的测试14四、开局坐K的获取15第五章编码的设计与实现18第一节界面与功能设计1818一、辅助器界面运行结果二、关于QQ连连看辅助器19三、开局功能设计19四、自动开局设计20五、单消功能设计21六、秒杀功能设计22七、自动挂机功能设计22八、去掉游戏倒计时功能设计23第六章系统运行测试24一、软件测试的定义24、.y,24.、彳贝U24、贝U26IL、贝!"口*26结束语28致谢29参考文献30附录31第一章绪论第一节研究的背景现实生活的巨大压力和日渐压缩的生存空间让如今的孩子和青年惴惴不安,并不是所有的人都拥有勇气去面对残酷的生活和现实,在这个浮燥的社会里,在这个信仰缺失的年代,将已经迷失的自我和对于未来的盲目寄托于虚拟的生活当中,麻痹、麻木、消耗直到被唤醒或者继续沉沦。第二节研究的目的和意义一、QQ连连看辅助器的必要性随着计算机及网络技术的飞速发展,网络游戏更是铺天盖地、日新月异、蒸蒸日上,而网络辅助程序也是如火如荼,似乎网络辅助程序与网络游戏的争端从有网络游戏就开始了,越是玩家聚集的游戏其辅助程序现象就越是严重,游戏辅助软件的多挂已经成为评价一个网络游戏成功与否的标准。据有关部门统计QQ连连看游戏日平均在线人数30万人。第三节相关软件及技术介绍一、VisualC+6.0概述VisualC+6.0,简称VC或者VC6.0,是微软推出的一款C+编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。ViSUalC+是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出VisualC+1.0后,随着其新版本的不断问世,VisualC÷+已成为专业程序员进行软件开发的首选工具。虽然微软公司推出了VisualC+.NET(VisualC+7.0),但它的应用的很大的局限性,只适用于WindoWS2000、WindowsXP和WindOWSNT4.0。所以实际中,更多的是以ViSUalC+6.0为平台。VC+6.0VisualC+6.0不仅是一个C+编译器,而且是一个基于WindOWS操作系统的可视化集成开发环境(integrateddevelopmentenvironment,IDE)oViSUalC+6.0由许多组件组成,包括编辑器、调试器以及程序向导APPWiZard、类向导CIaSSWiZard等开发工具。这些组件通过一个名为DeveIoperStudio的组件集成为和谐的开发环境。二、OnyICE概述OllyICE的1.10是一个股32位汇编级的分析调试器,有微软Windows的直观的界面。它预测寄存器的内容,确认程序,API调用,开关,表,常量和字符串,对象文件和库,允许自定义标签和评论,主要是实现程序的反汇编、加密、解密、破解、静态解析、调试等功能。OllyICE的1.10是一个股2位汇编级的分析调试器三、Cheat.Engine.V5.4.简体中文版概述CheatEngine是一款内存修改编辑工具,它允许你修改你的游戏内存,所以你将得到其他人没有的功能。它包括16进制编辑,反汇编程序,内存查找工具。与同类修改工具相比,它具有强大的反汇编功能,且自身附带了外挂制作工具,可以用它直接生成外挂。第二章需求分析第一节需求描述一、用户需求QQ连连看游戏辅助程序对上网放松的必然性,整天的劳累,使客户在游戏时不被积分所迫,而去费力的去游戏,在累时可以缓解游戏带来的压力。软件的易用性:要求软件应该尽量使用用户熟悉的术语和中文信息的界面,界面简单而实用。二、功能需求通过对QQ连连看游戏客户的调查研究,要求系统具有以下功能: 自动开局功能。游戏辅助器要动运行的话,我们分析就要有自动开局功能。 单消功能。最主要是实现模拟人的点击,实现单消。 秒杀功能。为的是在紧急关头实现瞬间把全部方块消完 消除剩余时间功能。当人们在玩的时候,想自己玩,又不想自动挂机让其单消,那么我们就需要一个消除剩余时间功能。 自动动单消功能及时间的设置。当人不在电脑边上时,我们就要有自动消的功能,就是自动挂机功能。三、非功能性需求系统的运行对运行环境有一些要求:(一)硬件环境:目前我们所开发的软件主要是普通用户使用,因此,一般配置的计算机硬件就可以满足系统需求。最底硬件配置为:1、处理器:AMD3200+或更高。2、内存:256MB或更高。3、硬盘空间:40GBo4、显卡:AVG显示适配器。(二)软件环境:1、操作系统:WindowsSP3或WindOWS7。2、QQ游戏:2010版。第二节软件运行流程分析程序运行流程,又称作业流程,即作业的完成程序,它反映了现实的运行活动。管理运行流程图是一种描述程序间的关系、作业顺序的图表。程序运行流程是客户在游戏过程中产生的,并且支撑着系统的正常运行。首先客户运行QQ连连看游戏,再是行游戏辅助程序,再进行辅助程序设置,就可以开始游戏。QQ连连看游戏辆助程序运行流程图如图3.1所示。图2.1程序运行流程图第三节UML系统建模统一建模语言(UnifiedModeIingLangUage)是一种直观化、明确化、构建和文档化软件产物的通用建模语言,它是由Rational软件公司世界级知名专家GradyBooh、IvarJacobson和JimRUmbaUgh3人联合开发出来的。在开发过程中,得到了其他一些学术领先的方法论学者、软件产商及众多用户的帮助和支持。在Booch标记法、OMT标记法及OOSE/Jacobson标记法得到广泛应用的基础上,UML将面向对象的分析设计技术又向前推进了一大步。QQ连连看游戏辅助程序用例图如图3.3所示。图2.3QQ连连看游戏辅助器用例图由图2.3可见,该用例图包含3个用例,1个参与者。用例的编号和名称是:1、查看信息2、设置信息、3、运行游戏。参与者的名称是:客户。第三章辅助器设计软件设计是管理信息软件开发的第二阶段,是根据软件调查与分析的结果,在已获准通过的软件说明书的基础上进行新软件的设计.软件设计包括两方面:一、辅助器总体结构设计:即把软件的功能分解成许多基本的功能模块,确定它们之间的联系,规定它们的功能和处理流程.也称概要设计。包括如下工作:(一)系统功能结构的划分(二)系统环境的配置(三)确定系统的计算机处理流程二、具体的物理设计:即对实现系统的各项功能,选择具体的技术手段和处理方式.为各个具体任务选择适当的技术手段和处理方法,即详细设计包括如下工作(一)代码设计(二)界面设计第一节辅助器总体设计一、项目规划网上客房预订系统是一个典型对话框应用程序,由一个界面组成,规划软件功能模块如下:界面主要功能是自动开局功能、单消功能、秒杀功能、去游戏倒记时功能、自动动单消功能及时间的设置。二、辅助器功能结构图QQ连连看辅助器功能结构图,如图3.1所示。辅助器界面去游戏倒记时自动挂机单消自动开局设置间隔时间图3.1辅助器功能结构图三、辅助器结构分析本辅助器是针对QQ连连看游戏服务介绍进行设计的,主要包含以下功能模块:1、开局功能:主要用于游戏的开局。2、自动开局功能:主要是用于游戏结束并重新开始。3、单消功能:用于客户自定消除。4、秒杀功能:用于瞬间消去全部功能。5、去游戏倒记时功能:用于去掉游戏倒记时。6、自动动单消功能及时间的设置:用于自动按设定的时间间隔消除方块。第二节系统详细设计一、程序流程图依据详细设计阶段的根本任务是确定应该怎样具体实现所要求的系统,经过这个阶段的设计工作,应该得出对目标系统的精确描述,从而在系统实现阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。主程序的单消功能流程图如图3.2所示。图3.2主程序的单消功能流程图二、主要功能模块界面设计(1)QQ连连看辅助器:有开局、单消、秒杀按钮;有游戏窗口置顶、自动开局、去游戏倒计时、自动挂机、挂机速度调节复选框;还有一个个时间选择滑块。如图3.3为QQ连连看辅助器界面的设计图。二1QQ连连看辅助器图3.3QQ连连看辅助器贵阳学院毕业论文(设计)第四章QQ连连看游戏的分析第一节相应参数的测试一、游戏棋盘基址的测试首先,运行Cheat.Engine.V5.4.简体中文版。如图4.1为CE(Cheat.Engine.V5.4.简体中文版)界面。CheatEngine5.4简体中文版没有选择进程扫描结果:0偏移地址 数值设置口OqClOoO口撤销扫描)016字节 © 32字节 。全部 口启用速度破角 起始结束Tfffffff I |显示数值:超皴扫描手动添加地址类型数值关干CE?图4.1CE运行界面在是将QQ连连看游戏附加进CE程序。如图4.2为QQ连连看游戏附加进CE0夏ZR扫描结果:0偏移地址数值没有选择进程查看内存锁定 描述首次扫描I再次扫描I撤销扫描设置口非况 口启月手动添加丽证一高级选项关于CE?图4.2为QQ连连看游戏附加进CEQQ连连看游戏的方块数量是11*19格,值小于256,因为游戏设计都为了尽量减少数据的量,设计者会尽量用小的数据类型的变量,则游戏棋盘块数据大小可能为1个字节。另再是设置CE界面。如图4.3为CE选项设置。瓮亘m养S结果:13T1292T倜程Hfe址OOO1OOOO0001000200010004OOO100OSooooooaOOO100OAOOO1OOOC000100100001001200010014OOOlOOieOOOlOOie0001001A.OOO100ICOOO1OO1KOOO1002000010022OOOO1TOe-KYODATlEXE18818825665302302C5三三s9sesQ方先5突型I大于缕位娄型OOOCIoOoOI绪束FFFFFFFFI显:H址棋盘左上角没有方块,因为游戏设计者一般将其设为空“0”,所以测试如图4.4CE测试图。£CheatEngine5.4简体中文版00000A30-KY0DAl"l.EXE扫描结果:9939b偏移地址000FFF20001005780010B9280010B9290010B92A0010B92C0010B92D0010B92E数值000000000010B93000010B93100010B93200010B93300010B93400010B9F000010B9F100010B9F200010BA480111Dn,IH内存扫描选项016字节。32字节。全部B起始结束004000001TfffffffI示同样扫描只读内存快速扫描超级扫描口扫描时暂停游戏图4.4CE测试图最终测试结果如下图4.5CE测试结果。偏移地址数值0012A4801200C16F101000C16F2013I进程00000710 00000804 00000810 00000950 000009B8 000009F8 00000AOC 00000A50 OOOOADO 00000B60 OOOOOB7O00000F5CC i croUIWndFr me止匕列表显示与你景后扫描回Cccccccfeed-upsvc ct Emoxt qlervr i explore WINWORD zvcKost wdfmgr CKeat. En DctSr QQQQG meTXFloatingWiid SkinToolTip D。,酢阳-誓i至看角色版Program FilesCommoxt FilesXKixtgsoft WINDOWSytem32ct£mon exeProgram FlesMcroso£t SQL ServerV Pr o®r m F i IesMxit mt Explor r i × Program FilesVMicrosoft Offi ceOFFI WINDOWSsy31m32»vcRost. × WINDOWS sys t em32 w d£m cr exe 匹夕卜挂全工具(3卜”1 Englna解压Ch& Jxunlei Pr ocr mDctSer. × 、工具QQBinQQ. exe 胞讯游戏QQGAMEQQGs. exe 8 讯游戏 QQGAME KYOD AI1 KYODK将QQ连连看游戏进程附加入OD(OllyICE),如图4.6游戏进程附加进0D。5Q领?7CCCC125.校母I运行I区*>*AlTrl三产引词克IGlIl叫I却|标|晒I丽|前3|ImlI选择菱附加的进程Iyad回13三lI的力口I取消如图4.6游戏进程附加进OD: . . .11.?!.中.Iiii-Iaii ! .1 ¥?剩余方决:112倒计时L= IDB QQ12A4800D00PI00069 B B 3 B 0 0 10 0 0U8010 00 00 00 00 0080O12A480 0012A490 0012A4A0 0012A4B0 0012A4CO 0012A4D0 0012A4E0 0012A4F0 0012A5O0 0012A510 0012A52012 05 070200001B000000060B000013 00 IH1 12 00 16 00 IA 00 00 14000 00 00 00 000图4.7QQ连连看游戏附加进CE国同同 扫描结果:2偏移地址数值001163B0IOO0012E04C100 16进制新扫:图4. 7游戏剩余方块数量测试游戏剩余方块数量基址为001163B0。测试基址为0012A480。二、游戏剩余方块基址的测试用与测试基址相同的方法,测试得到剩余方块有两个结果如图4.8游戏剩余方块数量。II八IiUy/CheatEngine5.4简体中文版三、游戏剩余时间基址的测试用与测试基址相同的方法,测试得到结果如图4.9游戏倒记时。图4.9游戏倒记时确认分析,将时间值改为0,游戏可以继续运行,但是游戏没有了倒计时。如下图4.10游戏倒计时。图4.10游戏倒计时四、开局坐标的获取运行MicrosoftSpy+,选定WM.LBUTTONDOWNWM_LBUTTONUP消息,如图4.11Spy+选项设置。消息选项窗口消息输出要查看的消息W):MkTosoftSpy+m(002B079A)=1回I区J监视S)消息M搜索(£)视图&)窗口也D帮助D<>0B孰ISKIX"UffWMKEYWNWMKEYUPWMKICWDLEWMKILLFOCUSWMjBUTTONDBLCLK.5VWM.LBUTTONWNWMLbuttonupWMMbuttondblclkWMMbuttondownWMMbuttonupWM-MDlACTWATEWM二MDJCASCADE2选定的消息.钿I全部港除&)|保存为默认设置G)口回困消息组键盘非工作区第祝鼠标IME已注册剪贴板MDI未知对话银DDEIe-USER辆第AFX/BFC编辑字段列表格滚动条按钮娼合棺群态控件列表视图热键F动画树视图上下箭头扩展犯合格工具提示进度条页导航工具主跟踪条ReBftr标头月历IP地址状态栏日期时间-SysLink选项卡控件I确定取消I帮勖图4.11Spy+选项设置点击开局按钮,测得消息如图4.12消息图。消息详细信息,如图4.13详细坐标图。,MicrosoftSpy+-消息(窗口002B079A)ID回国监视GL消息(M)搜索(E)视图(Y)窗口("帮助(三)日X回>画聃15图Xl居|辞函kOOQ1>002B079APWM_LBUTTONDOWNfwKeys:MKJBUTTONxPos:649yPos:571-<00002>002B079APWMLBUHONUPfwKeys:OOOOxPos:S49yPos:571如图4.13详细坐标图测得开局坐标:X=694,Y=571o第五章编码的设计与实现第一节界面与功能设计一、辅助器界面运行结果辅助器运行结果如图5.1所示。图5.1辅助器运行结果为了方便读者阅读本章内容,界面控件说明以列表形式给出,如表5.1所示。表5.1界面控件解析ID类型说明相应类向导关联的变量IDC_BUTTONl按钮类型IDC_BUTTON4按钮单消IDC_BUTT0N5按钮秒杀IDC_CHECK4复选框游戏窗口顶置m_chessdataIDC_CHECK2复选框自动开局m_autostartIDC_CLEARTIMER复选框去游戏倒计时m_ctl_cleartime1DC.CHECK1复选框自动挂机m_autoplayIDC_CHECK3复选框挂机速度调节m_sliderenableIDC.EDIT3编辑框m_numIDC_SLIDER1滑块m_sliderNunm_ctl_sliderIDC.STATIC静态文本毫秒IDC_STATIC静态文本贵阳学院计算机科学系软件工程专业学习交流二、关于QQ连连看辅助器关于QQ连连看辅助器运行结果如图5.20关于3连看辅助器QQi<g20114260声明:本产品只作学习交流用贵阳学院计算机科学系软件工程专业(201学作者QQ:312050020尸谣图5.2关于QQ连连看辅助器用户可以通过功能分类导航条查看相应类别的信息,功能分类导航条主要通过传递参数来实现超链接。三、开局功能设计定义常量:ConStPCHARgameCaPtiOn="QQ游戏-连连看角色版";HWNDgameh;RECTrl;POINTp;/x,y在开局按钮下添加代码如下:voidCLlk_wgDIg:OnStartGame()startGame();StartGameo函数的定义如下:voidstartGame()(gameh=:FindWindOW(NULL,gameCaption);获取游戏窗口句柄:GetWindOWReCt(gameh,&rl);保存当前鼠标指针GetCUrSorPoS(&p);取得当前鼠标位置设置鼠标指针位置取开局所在坐标:x=694;y=571/Iparam0x0241028fSetCUrSorPoS(694+rl.left,571+rl.top);模拟鼠标的单击(鼠标按下/鼠标抬起)/MOUSEEVENTF-LEFDOWNSpecifiesthattheleftbuttonisdown.MOUSEEVENTF_LEFTUPmouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);鼠标在当前位置按下mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);鼠标在当前位置抬起mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);还原鼠标位置SIeeP(4);过一段时间再执行后边的代码SetCursorPos(p.x,p.y);I四、自动开局设计自动开局函数代码如下:voidCLlk_wgDlg:0nCheck2()(/TODO:AddyourcontrolnotificationhandlercodehereUPdateData(Ine);更新窗口内容至变量自动开局if(m_autostart)(SetTimer(STARTID,4*1OOoAstrartproc);else(KilITimer(STARTID);)I自动开局函数中的回调函数如下:VOIDCALLBACKstrartproc(HWNDhwnd,/handleofwindowfortimermessagesUINTuMsg,/WM-TIMERmessageUINTidEvent5/timeridentifierDWORDdwTime/currentsystemtimeHWNDgameh=:FindWindow(NULL,gameCaption);/AfxMessageBoxCFindwindow");if(gameh=0)return;)/没有找到游戏窗口让游戏窗口置顶if(gametop)(SetWindowPos(gameh,HWND_TOPMOST,0,0,0,0,SWP_NOMOVESWP_NOSIZESWP_SHOWWINDOW);else(SetWindOWPOS(gameh,HWNDJrOP,0,0,0,0,SWP_NOMOVESWP_NOSIZESWP_SHOWWINDOW);DWORDpid;:GetWindowThreadProcessId(gameh,&pid);longflag,byReadSize;HANDLEhp=OpenProcess(PROCESS_ALL_ACCESS,false,pid);:ReadProcessMemory(hp,(LPCVOID)(OxOOH63BO),(LPVOID)(&flag),4,(LPDWORD)(&byReadSize);如果内存OxOOl163B0中的方块数为0则自动开局if(byReadSize=O)AfxMessageBoxC未成功读出数据");if(flag=0)&&(byReadSize>0)startGame();)自动开局五、单消功能设计单消按钮下的代码如下:voidCLlk_wgDlg:OnButton4()(/TODO:AddyourcontrolnotificationhandlercodehereCIearPiar();消除一对棋子函数消除一对棋子函数代码如下:boolClearPiar()/消除一对棋子(读出棋盘数据至CheSSdata11J9UPdaIdCheSS();UPdaldCheSS();函数见附录遍历整个棋盘找出相同类型一对棋子P0INTpl,p2;intxl,yl,x2,y2;for(yl=O;yl<ll;yl+)for(x1=0;xl<l9;xl+)for(y2=yl;y2<lI;y2+)for(x2=0;x2<19;x2+)if(chessdataylxl=chessdatay2x2)/棋子1与棋子2类型是否相同&&(!(X1=x2)&&(yI=y2)要求点1与点2相等则假(pl.x=xl;pl.y=yl;p2.x=x2;p2.y=y2;检测相同的2个棋子是否可消掉if(Check2p(pl,p2)如果可消除则返回真。CheCk2p(pl,p2)见附录(/click2p鼠标模拟点击pl,p2Click2p(pl,p2);returntrue;)returnfalse;六、秒杀功能设计秒杀的代码如下:voidCLlk_wgDlg:OnClearAll()(intchessnum=ReadChessNum()Click2p(P01NTpl,POINTp2)函数见附录while(chessnum!=O)(ClearPiar();/Sleep(I);/OxOOI163B0棋子数=0时退出Chessnum=ReadChessNumO;)1七、自动挂机功能设计1、自动单消代码如下:voidCLlk_wgDlg:OnCheckl()(/TODO:AddyourcontrolnotificationhandlercodehereUPdateData(U*ue);更新窗口内容至变量自动挂机if(m_autoplay)SetTimer(PLAYID,m_num+80,&playproc);)elseKillTimer(PLAYID);)2、Playproc(hwnd,uMsg,idEvent,dwTime)函数代码如下:/ handle of window for timer messages/ WM_TIMER message/ timer identifier/ current system time/ClearPiarO函数见附录VOIDCALLBACKplayproc(HWNDhwnd,UINTuMsg,UINTidEvent,DWORDdwTime)(ClearPiar();八、去掉游戏倒计时功能设计去掉游戏倒计时函数代码如下:voidCLlk_wgDlg:OnCleartimer()(if(ClearCodeO)(m_ctl_cleartime.EnableWindow(false);)禁用它elsem_ctl_cleartime.SetCheck(false);)第六章系统运行测试一、软件测试的定义软件测试是动态查找程序代码中的各类错误和问题的过程。“程序测试是为了发现错误而执行程序的过程,根据这一定义,测试的目的与任务可以描述为:1、目的:发现程序的错误2、任务:通过在计算机上执行程序,暴露程序中潜在的错误。另一个与测试相关的术语是纠错,它的目的与任务可以规定为:1、目的:定位与纠正错误。2、任务:消除软件故障,保证程序的可靠运行。纠正和错误的关系,可用图6.1的数据流图来说明。图中表明,每一次测试都要准备好若干必要的测试数据,与被测程序一起送入计算机执行。测试数据期望结果图6.1纠正和错误信息流程二、软件测试的分类测试是一个执行程序的过程,即要求被测程序在计算机上运行。其实,不执行程序也可以发现程序的错误。为便于区分,一般把前者称为动态测试,后者称为静态分析。静态分析就是通过对被测程序的静态审查,发现代码中潜在的错误。它一般用人工方式脱机完成,故亦称人工测试或代码评审。动态测试也可以分为两类。一类把被测程序看成一个黑盒,根据程序的功能来设计测试用例,称为黑盒测试;另一类则根据北侧程序的内部结构设计测试用例,测试者需首先了解被测程序的结构,故称为白盒测试。三、软件测试的步骤测试过程必须分步骤进行,每个步骤在逻辑上是前一个步骤的继续。大型软件系统通常由若干个子系统组成,每个子系统又由许多模块组成。因此,大型软件系统的测试基本上由下述4个步骤组成,单元测试、集成测试、确认测试和系统测试。如图6.2所示:图6. 2测试步骤他统素其系元系统测试交付软件(一)单元测试单元测试时层次测试的第一步,也是整个测试的基础。对于多模块的测试从单元测试开始,至少有以下好处:减少测试的复杂性;易于确定错误的位置(不超过一个模块);多个单元可以并行测试,缩短测试周期。单元测试的实施步骤可以简述为:编译静态分析器检查一代码评审一动态测试。(二)集成测试通过了单元测试的模块,要按照一定的策略组装为完整的程序。在组装的过程中进行的测试为集成测试或组装测试。集成测试的策略,可以分为自顶向下、自底向上以及从两头逼近的混合方式等3种。这3种策略都是从一个模块开始,测一次填一个模块,使组装程序像滚雪球一样越滚越大,所以统称为渐增式测试。(三)确认测试确认测试续集成测试之后进行,其目的在于确认组装完毕的程序是否满足软件需求规格说明书的要求典型的确认测试通常包括有效性测试(黑盒测试)和配置复审等内容。确认测试是由软件开发单位组织实施的最后一项开发活动。测试结束后,软件就要交付验收了。因此开发单位必须十分重视这项工作。同集成测试一样,确认测试也应由独立的测试小组负责实施。如果软件是给一个客户开发的,需要进行一系列的验收测试来保证客户满足所有的需求。验收测试主要由用户而不是开发者来进行,可以进行几个星期或者几个月,因而可发现随时间的积累而产生的错误。(四)系统测试系统测试是将软件系统与硬件、外设和网格等其他因素结合在一起,进行信息系统的各种组装测试和确认测试,其目的是通过于系统的需求相比较,发现所开发的系统与用户需求不符或矛盾的地方。常见的系统测试主要有恢复测试、安全性测试、强度测试、性能测试、可靠性测试和安全性测试。四、测试用例设计测试用例和纠错,是搞好软件测试的两项关键技术。选择测试用例的目标,是用尽可能少的测试数据,达到尽可能大的程序覆盖面,发现尽可能多的软件错误和问题。单元测试应该以结构测试为主,其余测试一般以功能(黑盒)测试为主。发现程序错误,