版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《软件工程》
软件测试报告报告名称餐厅订餐系统测试报告专业软件工程 班级 1 姓名 郭玉峰 学号 指导教师 毕硕本 TOC\o"1-5"\h\z\o"CurrentDocument"1软件测试概念 3\o"CurrentDocument"2软件测试目的 3\o"CurrentDocument"3软件测试原则 4\o"CurrentDocument"4软件测试方法 5\o"CurrentDocument"4.1黑盒测试 5\o"CurrentDocument"4.2白盒测试 5\o"CurrentDocument"4.3单元测试 6\o"CurrentDocument"4.4集成测试 7\o"CurrentDocument"5测试引言 11\o"CurrentDocument"5.1编写目的 11\o"CurrentDocument"5.2项目背景 11\o"CurrentDocument"5.3定义 11\o"CurrentDocument"5.4参考资料 11\o"CurrentDocument"6测试计划执行情况 11\o"CurrentDocument"JE_Table类: 12\o"CurrentDocument"JE_TableState类: 12\o"CurrentDocument"JE_WelcomeDialog类: 13\o"CurrentDocument"JE_OrderList类: 14\o"CurrentDocument"Database类: 14\o"CurrentDocument"JE_Customer类: 15\o"CurrentDocument"JE_mainFrame_AboutBox类: 16\o"CurrentDocument"JE_Member类: 17\o"CurrentDocument"JE_Restaurant类: 17\o"CurrentDocument"6.10其他类的测试 181软件测试概念软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。2软件测试目的在谈到软件测试目的时,许多人都引用GrenfordJ.Myers在《TheArtofSoftwareTesting》一书中的观点:软件测试是为了发现错误而执行程序的过程;测试是为了证明程序有错,而不是证明程序无错误。一个好的测试用例是在于它能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误的测试。这是对软件测试目的最精辟的解析了这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的,事实并非如此。首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详细而严谨的可靠性增长模型可以证明这一点。3软件测试原则软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。为了达到上述的原则,那么需要注意以下几点:应当把''尽早和不断的测试〃作为开发者的座右铭程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完。设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。4软件测试方法软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:从是否需要执行被测软件的角度,可分为静态测试和动态测试。从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;4.1黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。''黑盒〃法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。''黑盒〃法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。4.2白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。''白盒〃法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。''白盒〃法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。4.3单元测试单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list中去,然后确认该值出现在list的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。经常与单元测试联系起来的另外一些开发活动包括代码走读(Codereview),静态分析(Staticanalysis)和动态分析(Dynamicanalysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。单元测试工作内容及其流程活發输入输出 参与昂色和职贵制定集成测试计设计模型集成构建计划集成测试计划测试设计员负责制迟集成测试计划设计集成测试集成测试计划设计模型集成测试用例测试过程测试设计员负责设计集成测试用例和测试过程亠实施集成测试集咸测试用例测试过程工作版本测试脚本(可选)测试过程■迥新》测试设计员负责编制测试脚本(可选}.迅新测试过程$驱动程序威稳定桩设计员负责设计驼动程序和桩,实施员负责实施驱动程序和桩'执厅集成测试测试脚本(可选工作版本测试结果测试员负责执行测弑并记录测试卿评估集戒测试集成测试计划测试结果测试评估搞要测试设计员负责僉同集成员、編码员、设计员等有关人员g具怵化}评估此次测试,井生成测试评佶摘要.有了单元测试不远远不够的,在单元测试的基础上还要建立集成测试4.4集成测试集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别。集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。集成测试是单元测试的逻辑扩展。在现实方案中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分,如分系统或系统。集成测试采用的方法是测试软件单元的组合能否正常工作,以及与其他组的模块能否集成起来工作。最后,还要测试构成系统的所有模块组合能否正常工作。集成测试所持的主要标准是《软件概要设计规格说明》,任何不符合该说明的程序模块行为都应该加以记载并上报。集成测试过程:集成测试工作机制软件集成测试工作由产品评测部担任。需要项目组相关角色配合完成。如图示:
软件评测部:角色职责测试设计员负责制定集成测试计划.设汁集锻测试、实施集成测试、评估集成测试。测试员执疔集成测试,记录测试结果匚软件项目组:角色职靑实施员负责实施类(包括驱动程序和桩),并对其进行单元测试。根据集成测试发现的缺陷提出变更申请。配置管理员负责对测试工件进行配置管理。集成员负责制定集成构建计划,按照集成计划将通过了单元测试的类集成。设计员负责设计测试驱动程序和桩。根据集成测试发现的缺陷提出变更申请a集成测试工作内容及其流程工作流程:
集成测试常用方案选型:集成测试的实施方案有很多种,如自底向上集成测试、自顶向下集成测试、三明治集成测试、核心集成测试、分层集成测试、基于使用的集成测试等。在此,笔者将重点讨论其中一些经实践检验和一些证实有效的集成测试方案。这些数据显示单元测试的成本效率大约是集成测试的两倍,系统测试的三倍
5测试引言5.1编写目的本报告是JustEnjoy小组对完成的订餐系统进行测试需求分析和系统设计后制作测试计划和系统完成时进行测试后完成的测试报告。目的在于为系统的正确性和有效性提供保证,同时为日后的系统维护提供文档依据。5.2项目背景本系统为一个餐馆的定餐系统,主要提供记录订餐和提醒的功能。5.3定义系统中所有以“JE_”开头的类和变量均为“JustEnjoy”——我们小组名称的缩写,也用以和系统或者其他人开发的变量和函数相区别。SQLServer2000:Microsoft公司的关系型数据库。JDK1.4:版本为号1.4的JAVA虚拟机(美)JohnW.Satzinger(美)RoberB.Jackson张海潘((美)JohnW.Satzinger(美)RoberB.Jackson张海潘(英)MarkPriestley《系统分析设计》《SQLServer开发精髓》《软件工程(第二版)》《面向对象设计UML实践》6测试计划执行情况我们在完成的每一个JAVA类中都使用main函数进行测试,他们的代码和测试结果如下所列:6.1JE_Table类:publicstaticvoidmain(String[]args){try{DBOperator.getConnection();System.out.println("oye!!");}catch(SQLExceptionex){System.out.printlnC数据库尝试连接失败。”);}JE_Memberb=newJE_Member("10001");b.JE_register();DBOperator.close();}测试结果:数据库连接成功,输出”oye!。!”6・2JE_TableState类:publicstaticvoidmain(String[]args){JE_TableStatea=newJE_TableState();a.setVisible(true);}测试结果:正常运行,可以更改日期,时段,桌号,就餐人数的信息,但不能更改客户,会员信息,客户电话和菜单的信息。JE_mainFrame.java中:publicstaticvoidmain(String[]args){try{UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());}catch(Exceptionexception){exception.printStackTrace();}JE_mainFrameframe=newJE_mainFrame();DimensionscreenSize=Toolkit.getDefaultToolkit().getScreenSize();DimensionframeSize=frame.getSize();if(frameSize.height>screenSize.height){frameSize.height=screenSize.height;}if(frameSize.width>screenSize.width){frameSize.width=screenSize.width;}frame.setLocation((screenSize.width-frameSize.width)/2,(screenSize.height-frameSize.height)/2);frame.setVisible(true);}测试结果:可以正常运行,并正常退出。6・3JE_WelcomeDialog类:publicstaticvoidmain(String[]args){JE_WelcomeDialoga=newJE_WelcomeDialog();a.setVisible(true);}测试结果:可以正常运行,并正常退出。TestFrame.java中:publicstaticvoidmain(String[]args){TestFrametestframe=newTestFrame();testframe.setVisible(true);}测试结果:本函数是为了测试JE_MenuPanel.java中的函数,正常运行,并可以插入,修改,删除菜名。6.4JE_OrderList类:publicstaticvoidmain(String[]args){ArrayListtemp=JE_GetOrderList(l);for(inti=0;i<temp.size();i++){System.out.println(((JE_Menu)temp.get(i)).getName()+"??"+((JE_Menu)temp.get(i)).getDescription());}if(JE_SetOrderList(78,temp,"sss")){System.out.println('插入成功!");}ArrayListt=newArrayList();t=JE_GetOrderList(78);for(inti=0;i<t.size();i++){System.out.println(((JE_Menu)t.get(i)).getName()+"??"+((JE_Menu)t.get(i)).getDescription());}}测试结果:正常运行,并结果正确。6・5Database类:publicstaticvoidmain(String[]args){Databasea=newDatabase();try{if(a.connectToDatabase()){ResultSetb=a.getResult("SELECT[tableNumber],[customerlD],[covers],[bookDate],[eatDate],[eatTime]FROM[Reservation]WHERE[eatTime]=TAND[state]=TAND[eatDate]='2007-12-25"');b.next();b.next();System.out.print(b.getString(1));}}catch(SQLExceptionsqle){sqle.printStackTrace();}}测试结果:正常运行,并结果正确。6・6JE_Customer类:publicstaticvoidmain(String[]args){JE_Customera=newJE_Customer("jiaweihao","12345");try{DBOperator.getConnection();System.out.println("oye!!");}catch(SQLExceptionex){System.out.printlnC数据库尝试连接失败。”);}if(!a.JE_isRecorded()){a.JE_save();测试结果:正常运行,但结果出现异常:java.sql.SQLException:[Microsoft][SQLServer2000DriverforJDBC][SQLServer]列'Customer.CID'在选择列表中无效,因为该列未包含在聚合函数中,并且没有GROUPBY子句。atcom.microsoft.jdbc.base.BaseExceptions.createException(UnknownSource)atcom.microsoft.jdbc.base.BaseExceptions.getException(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRcessErrorToken(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRcessReplyToken(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSExecuteRcessReplyToken(UnknownSource)atcom.microsoft.jdbc.sqlserver.tds.TDSRcessReply(UnknownSource)atcom.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(UnknownSource)atcom.microsoft.jdbc.base.BaseSmonTransitionToState(UnknownSource)atcom.microsoft.jdbc.base.BaseStatement.postImplExecute(UnknownSource)atcom.microsoft.jdbc.base.BaseSmonExecute(UnknownSource)atcom.microsoft.jdbc.base.BaseStatement.executeQueryInternal(UnknownSource)atcom.microsoft.jdbc.base.BaseStatement.executeQuery(UnknownSource)atje_ordersystem.DB.DBOperator.execSelect(DBOperator.java:75)atje_ordersystem.JE_Customer.JE_isRecorded(JE_Customer.java:80)atje_ordersystem.JE_Customer.main(JE_Customer.java:103)通过修改,正常得到结果。6・7JE_mainFrame_AboutBox类:publicstaticvoidmain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 读书安全班会
- 集团公司行政上半年工作总结
- 五年级班主任教师的工作总结
- 会计求职信集锦八篇
- 班主任个人述职报告范文集合15篇
- 七年级生物教学工作总结10篇
- 销售培训 讲师课件
- 三八妇女节慰问信范文六篇
- 幼儿五一劳动节发言稿
- 酒店个人年终工作总结范文集锦
- 成人重症患者人工气道湿化护理专家共识 解读
- 机器学习(山东联盟)智慧树知到期末考试答案章节答案2024年山东财经大学
- 商业伦理与企业社会责任(山东财经大学)智慧树知到期末考试答案章节答案2024年山东财经大学
- 2024年辅警招聘考试试题库及完整答案(全优)
- 美国史智慧树知到期末考试答案2024年
- 2024年江苏省普通高中学业水平测试小高考生物、地理、历史、政治试卷及答案(综合版)
- 三秦出版社五年级上册综合实践教案
- 屋顶分布式光伏项目安全文明施工控制措施
- 水泥保证供应实施方案及服务承诺书
- 2022机要密码工作总结机要室工作总结.doc
- 安全工器具检测报告(共22页)
评论
0/150
提交评论