




已阅读5页,还剩13页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
UML大作业餐馆订餐系统系统测试报告项目组成员:贾伟昊方晓彬刘春宇王燕茹张梦巧柯 蓬目 录1 软件测试概念32 软件测试目的33 软件测试原则44 软件测试方法54.1 黑盒测试54.2 白盒测试54.3 单元测试64.4 集成测试75 测试引言115.1编写目的115.2项目背景115.3定义115.4参考资料116 测试计划执行情况116.1 JE_Table类:126.2 JE_TableState类:126.3 JE_WelcomeDialog类:136.4 JE_OrderList类:146.5 Database类:146.6 JE_Customer类:156.7 JE_mainFrame_AboutBox类:166.8 JE_Member类:176.9 JE_Restaurant类:176.10 其他类的测试181 软件测试概念 软件测试是软件开发过程的重要组成部分,是用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。软件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横跨两个阶段:通常在编写出每一个模块之后就对它做必要的测试(称为单元测试)。编码和单元测试属于软件生存期中的同一个阶段。在结束这个阶段后对软件系统还要进行各种综合测试,这是软件生存期的另一个独立阶段,即测试阶段。2 软件测试目的 在谈到软件测试目的时,许多人都引用Grenford J. Myers在The Art of Software Testing一书中的观点: 软件测试是为了发现错误而执行程序的过程; 测试是为了证明程序有错,而不是证明程序无错误。 一个好的测试用例是在于它能发现至今未发现的错误; 一个成功的测试是发现了至今未发现的错误的测试。这是对软件测试目的最精辟的解析了这种观点可以提醒人们测试要以查找错误为中心,而不是为了演示软件的正确功能。但是仅凭字面意思理解这一观点可能会产生误导,认为发现错误是软件测试的唯一目的,查找不出错误的测试就是没有价值的,事实并非如此。首先,测试并不仅仅是为了要找出错误。通过分析错误产生的原因和错误的分布特征,可以帮助项目管理者发现当前所采用的软件过程的缺陷,以便改进。同时,这种分析也能帮助我们设计出有针对性地检测方法,改善测试的有效性。其次,没有发现错误的测试也是有价值的,完整的测试是评定测试质量的一种方法。详细而严谨的可靠性增长模型可以证明这一点。3 软件测试原则 软件测试从不同的角度出发会派生出两种不同的测试原则,从用户的角度出发,就是希望通过软件测试能充分暴露软件中存在的问题和缺陷,从而考虑是否可以接受该产品,从开发者的角度出发,就是希望测试能表明软件产品不存在错误,已经正确地实现了用户的需求,确立人们对软件质量的信心。为了达到上述的原则,那么需要注意以下几点:1 应当把“尽早和不断的测试”作为开发者的座右铭2 程序员应该避免检查自己的程序,测试工作应该由独立的专业的软件测试机构来完。3 设计测试用例时应该考虑到合法的输入和不合法的输入以及各种边界条件,特殊情况要制造极端状态和意外状态,比如网络异常中断、电源断电等情况。4 一定要注意测试中的错误集中发生现象,这和程序员的编程水平和习惯有很大的关系。5 对测试错误结果一定要有一个确认的过程,一般有A测试出来的错误,一定要有一个B来确认,严重的错误可以召开评审会进行讨论和分析。6 制定严格的测试计划,并把测试时间安排的尽量宽松,不要希望在极短的时间内完成一个高水平的测试。7 回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多的错误出现的现象并不少见。8 妥善保存一切测试过程文档,意义是不言而喻的,测试的重现性往往要靠测试文档。4 软件测试方法 软件测试的方法和技术是多种多样的。对于软件测试技术,可以从不同的角度加以分类:1. 从是否需要执行被测软件的角度,可分为静态测试和动态测试。2. 从测试是否针对系统的内部结构和具体实现算法的角度来看,可分为白盒测试和黑盒测试;4.1 黑盒测试黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数锯而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。黑盒测试方法主要有等价类划分、边值分析、因果图、错误推测等,主要用于软件确认测试。 “黑盒”法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。“黑盒”法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。4.2 白盒测试白盒测试也称结构测试或逻辑驱动测试,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序内部的结构测试程序,检验程序中的每条通路是否都有能按预定要求正确工作,而不顾它的功能,白盒测试的主要方法有逻辑驱动、基路测试等,主要用于软件验证。“白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。“白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。但即使每条路径都测试了仍然可能有错误。第一,穷举路径测试决不能查出程序违反了设计规范,即程序本身是个错误的程序。第二,穷举路径测试不可能查出程序中因遗漏路径而出错。第三,穷举路径测试可能发现不了一些与数据相关的错误。4.3 单元测试单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。例如,你可能把一个很大的值放入一个有序list 中去,然后确认该值出现在list 的尾部。或者,你可能会从字符串中删除匹配某种模式的字符,然后确认字符串确实不再包含这些字符了。 单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。 单元测试不仅仅是作为无错编码一种辅助手段在一次性的开发过程中使用,单元测试必须是可重复的,无论是在软件修改,或是移植到新的运行环境的过程中。因此,所有的测试都必须在整个软件系统的生命周期中进行维护。 经常与单元测试联系起来的另外一些开发活动包括代码走读(Code review),静态分析(Static analysis)和动态分析(Dynamic analysis)。静态分析就是对软件的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和执行。动态分析就是通过观察软件运行时的动作,来提供执行跟踪,时间分析,以及测试覆盖度方面的信息。单元测试工作内容及其流程有了单元测试不远远不够的,在单元测试的基础上还要建立集成测试4.4 集成测试集成测试(也叫组装测试,联合测试)是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。从这一层意义上讲,组件是指多个单元的集成聚合。在现实方案中,许多单元组合成组件,而这些组件又聚合成程序的更大部分。方法是测试片段的组合,并最终扩展进程,将您的模块与其他组的模块一起测试。最后,将构成进程的所有模块一起测试。此外,如果程序由多个进程组成,应该成对测试它们,而不是同时测试所有进程。 集成测试识别组合单元时出现的问题。通过使用要求在组合单元前测试每个单元并确保每个单元的生存能力的测试计划,可以知道在组合单元时所发现的任何错误很可能与单元之间的接口有关。这种方法将可能发生的情况数量减少到更简单的分析级别。 集成测试是在单元测试的基础上,测试在将所有的软件单元按照概要设计规格说明的要求组装成模块、子系统或系统的过程中各部分工作是否达到或实现相应技术指标及要求的活动。也就是说,在集成测试之前,单元测试应该已经完成,集成测试中所使用的对象应该是已经经过单元测试的软件单元。这一点很重要,因为如果不经过单元测试,那么集成测试的效果将会受到很大影响,并且会大幅增加软件单元代码纠错的代价。 集成测试是单元测试的逻辑扩展。在现实方案中,集成是指多个单元的聚合,许多单元组合成模块,而这些模块又聚合成程序的更大部分,如分系统或系统。集成测试采用的方法是测试软件单元的组合能否正常工作,以及与其他组的模块能否集成起来工作。最后,还要测试构成系统的所有模块组合能否正常工作。集成测试所持的主要标准是软件概要设计规格说明,任何不符合该说明的程序模块行为都应该加以记载并上报。集成测试过程 : 集成测试工作机制 软件集成测试工作由产品评测部担任。需要项目组相关角色配合完成。如图示: 软件评测部: 软件项目组:集成测试工作内容及其流程工作流程: 集成测试常用方案选型 : 集成测试的实施方案有很多种,如自底向上集成测试、自顶向下集成测试、三明治集成测试、核心集成测试、分层集成测试、基于使用的集成测试等。在此,笔者将重点讨论其中一些经实践检验和一些证实有效的集成测试方案。 这些数据显示单元测试的成本效率大约是集成测试的两倍,系统测试的三倍5 测试引言5.1编写目的本报告是Just Enjoy小组对完成的订餐系统进行测试需求分析和系统设计后制作测试计划和系统完成时进行测试后完成的测试报告。目的在于为系统的正确性和有效性提供保证,同时为日后的系统维护提供文档依据。5.2项目背景本系统为一个餐馆的定餐系统,主要提供记录订餐和提醒的功能。5.3定义系统中所有以“JE_”开头的类和变量均为“Just Enjoy”我们小组名称的缩写,也用以和系统或者其他人开发的变量和函数相区别。SQLServer 2000: Microsoft公司的关系型数据库。JDK 1.4: 版本为号1.4的JAVA虚拟机5.4参考资料系统分析设计 (美) John W. SatzingerSQL Server 开发精髓 (美)Rober B. Jackson软件工程(第二版) 张海潘面向对象设计UML实践 (英)Mark Priestley6 测试计划执行情况我们在完成的每一个JAVA类中都使用main函数进行测试,他们的代码和测试结果如下所列:6.1 JE_Table类:public static void main(String args) try DBOperator.getConnection(); System.out.println(oye!); catch (SQLException ex) System.out.println(数据库尝试连接失败。); JE_Member b = new JE_Member(10001); b.JE_register(); DBOperator.close();测试结果:数据库连接成功,输出” oye!”。6.2 JE_TableState类:public static void main(String args) JE_TableState a = new JE_TableState(); a.setVisible(true); 测试结果:正常运行,可以更改日期,时段,桌号,就餐人数的信息,但不能更改客户,会员信息,客户电话和菜单的信息。JE_mainFrame.java中:public static void main(String args) try UIManager.setLookAndFeel(UIManager. getSystemLookAndFeelClassName(); catch (Exception exception) exception.printStackTrace(); JE_mainFrame frame = new JE_mainFrame(); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); Dimension frameSize = 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.3 JE_WelcomeDialog类: public static void main(String args) JE_WelcomeDialog a = new JE_WelcomeDialog(); a.setVisible(true); 测试结果:可以正常运行,并正常退出。 TestFrame.java中: public static void main(String args) TestFrame testframe = new TestFrame(); testframe.setVisible(true); 测试结果:本函数是为了测试JE_MenuPanel.java中的函数,正常运行,并可以插入,修改,删除菜名。6.4 JE_OrderList类: public static void main(String args) ArrayList temp = JE_GetOrderList(1); for (int i = 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(插入成功!); ArrayList t = new ArrayList(); t = JE_GetOrderList(78); for (int i = 0; i t.size(); i+) System.out.println(JE_Menu) t.get(i).getName() + ? + (JE_Menu) t.get(i).getDescription(); 测试结果:正常运行,并结果正确。6.5 Database类: public static void main(String args) Database a = new Database(); try if (a.connectToDatabase() ResultSet b = a.getResult(SELECT tableNumber, customerID, covers, bookDate, eatDate, eatTime FROM Reservation WHERE eatTime=1 AND state=1 AND eatDate=2007-12-25); b.next(); b.next(); System.out.print(b.getString(1); catch(SQLException sqle) sqle.printStackTrace(); 测试结果:正常运行,并结果正确。6.6 JE_Customer类: public static void main(String args) JE_Customer a = new JE_Customer(jiaweihao, 12345); try DBOperator.getConnection(); System.out.println(oye!); catch (SQLException ex) System.out.println(数据库尝试连接失败。); if (!a.JE_isRecorded() a.JE_save(); 测试结果:正常运行,但结果出现异常: java.sql.SQLException: MicrosoftSQLServer 2000 Driver for JDBCSQLServer列 Customer.CID 在选择列表中无效,因为该列未包含在聚合函数中,并且没有 GROUP BY 子句。 at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source) at com.microsoft.jdbc.sqlserver.tds.TDSRcessErrorToken(Unknown Source) at com.microsoft.jdbc.sqlserver.tds.TDSRcessReplyToken(Unknown Source)at com.microsoft.jdbc.sqlserver.tds.TDSExecuteRcessReplyToken(Unknown Source) at com.microsoft.jdbc.sqlserver.tds.TDSRcessReply(Unknown Source)at com.microsoft.jdbc.sqlserver.SQLServerImplStatement.getNextResultType(Unknown Source) at com.microsoft.jdbc.base.BaseSmonTransitionToState(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.postImplExecute(Unknown Source) at com.microsoft.jdbc.base.BaseSmonExecute(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.executeQueryInternal(Unknown Source) at com.microsoft.jdbc.base.BaseStatement.executeQuery(Unknown Source) at je_ordersystem.DB.DBOperator.execSelect(DBOperator.java:75) at je_ordersystem.JE_Customer.JE_isRecorded(JE_Customer.java:80) at je_ordersystem.JE_Customer.main(JE_Customer.java:103) 通过修改,正常得到结果。6.7 JE_mainFrame_AboutBox类: public static void main(String args) JE_mainFrame_AboutBox a = new JE_mainFrame_AboutBox(); a.setVisible(true); 测试
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 地铁线路检修工考试题及答案
- 护航学生考试题及答案大全
- 难点解析-人教版八年级上册物理《物态变化》专题攻克试卷(含答案详解版)
- 虹桥开学考试题及答案初中
- 解析卷人教版八年级上册物理物态变化《汽化和液化》同步训练试题(含答案解析版)
- 难点解析-人教版八年级上册物理声现象《声音的特性声的利用》综合测评试题(含答案解析)
- 河南安全员证考试题目及答案
- 四川阿坝州幼师考试试题及答案
- 2025年自考会计审计学专业考试题库及答案
- 2025年一级消防工程师消防安全评估真题试卷(含答案)
- 2025至2030风电电机行业产业运行态势及投资规划深度研究报告
- 姿势矫正临床应用-洞察及研究
- 2022台谊消防应急灯具专用应急电源使用说明书
- 2025至2030中国机电安装工程行业发展趋势分析与未来投资战略咨询研究报告
- 呼吸心跳骤停病人的护理查房
- 中国外币管理制度
- 广州市市政工程主要项目概算指标及编制指引 (2021年)
- 关于体育的论文
- 中医治疗发热
- 导医客服礼仪培训
- 第三届“皇家杯”职业院校宠物营养学知识竞赛考试题库(含答案)
评论
0/150
提交评论