




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 第5章 面向对象软件的测试5.1 面向对象的测试概述5.1.1 面向对象的基本概念面向对象可以看成是现实世界模型的自然延伸,现实世界中的任何实体都可以看成是对象。传统的过程式编程语言是以过程为中心,以算法为驱动。因此,过程式编程语言是:程序=算法+数据;而面向对象的编程语言是以对象为中心,以消息为驱动。因此,面向对象的编程语言是:程序=对象+消息。面向对象的软件开发以六个重要的基本概念为核心:对象、类、继承、多态、消息和接口。5.1.2 面向对象的测试内容1对象2类3封装4继承5多态6消息7接口5.1.3 面向对象的测试模型需求测试。设计测试。单元测试。子系统测试。系统集成测试。接受测试。5
2、.2 面向对象的单元测试5.2.1 基本步骤1)划分类的优先级2)静态测试3)对需要执行单元测试的类设计测试用例4)开发测试驱动5)执行测试,对测试结果进行总结5.2.2 类的优先级1、类的优先级的设定1)类在系统中所起的作用2)类自身的复杂度和与其他类之间的交互复杂度3)开发该类的测试程序所需的成本5.2.2 类的优先级2优先级设定的一般方法由于测试程序的开发成本不便于估算,因此,一般仅从前两个方面来计算类的测试价值,通过将测试价值量化来设定类的测试优先级,该值越大,对应类的测试优先级别越高。5.2.3 测试用例的设计1、案例说明MyShape2.根据代码设计用例3根据前置条件和后置条件6.
3、综合策略5.根据方法特性5.2.4 测试驱动的实现方式测试用例实际上属于一个静态的概念,若没有测试脚本的支持,则测试用例只能以手工方式在调试环境下执行,大量人力劳动都将耗费在测试数据的设定、程序的执行、Watch窗口或Output窗口的观察等简单重复的工作上,不仅效果差,容易出错,而且完全不利于回归测试。单元测试一定要实现自动化,必须通过设计测试驱动程序,让测试用例自动执行、执行结果自动检验、测试报告自动给出。测试驱动的设计本质上是通过创建被测类的实例和测试这些实例的行为来测试类,但测试驱动的形式是多种多样的。下面介绍常见的测试驱动设计方法。1.利用main方法在被测类中,利用main方法来实
4、现测试驱动是一个最为简便的方式不需要考虑被测方法的访问权限,不需要考虑被测程序的文件管理,直接将每个测试都写入main方法,测试结果可直接输出到屏幕。用main方法,能够撰写测试代码并可快速观察到测试结果,但是导致的直接后果是:测试代码与开发代码混在一起,测试完毕后需将测试代码从开发代码中删去,这样完全无法进行回归测试,难以维护和复用测试代码。2.嵌入静态方法在被测类中嵌入静态方法,在静态方法内部实现测试用例的执行,测试结果直接输出到屏幕,且不需要考虑被测方法的访问权限。当需要测试时,在别的地方调用这些静态方法即可。用嵌入静态方法,不需要将被测试类实例化就可以直接测试,但是测试代码仍与开发代码
5、放在一个文件中,测试完毕后需要将测试代码从开发代码中删除,并且不能从根本上解决回归测试问题。3.独立的测试类为了便于组织测试代码和便于回归测试,应将测试代码从开发代码中完全独立出来,建立独立的测试类。测试类可以处理被测类的实例化、对类的方法的测试、测试结果的自动检验和测试通过或失败的统计等。创建独立于被测类的测试驱动类可以真正实现测试代码与开发代码的相互独立,完全自动化的测试可以大大提高回归测试的效率,提高单元测试的效果,缩短集成测试的时间,同时确保软件的质量。然而,撰写和维护测试代码将给开发人员带来额外的工作量,迫于进度的压力,开发人员往往疲于写代码,没有时间来写测试程序,且随着需求、设计的
6、变化,被测类代码也会发生变化,测试驱动类需要密切关注被测类的这些变化,这在另外一个层面上也间接导致了开发人员不愿意写测试代码。总体而言,独立的测试类能够起到事半功倍的效果,是开发人员应首先选择用来实现测试驱动的方法,但要注意的是应尽量利用现成的自动化单元测试工具来辅助编码,使得开发人员以最少的时间和精力来撰写最有效的测试代码,否则没有人愿意做这些额外的工作。5.2.5 测试驱动框架和代码的组织1测试驱动框架2代码组织1测试驱动框架1)设计目标 自动 简单 灵活2)设计思想构建和执行测试用例创建和操作被测类的Object实例 分析测试用例结果将测试过程记录到日志文件5.2.5 测试驱动框架和代码
7、的组织2代码组织1)与产品代码放在一起2)放在产品代码的目录下4)与产品代码的副本放在一起3)与产品代码并行5.3 面向对象的集成测试和系统测试1集成测试 传统的集成测试方法包括自顶向下、自底向上和三明治方法。集成测试需要进行仔细的规划,其中继承测试应该在一个类继承另一个类后尽快进行。类层、测试策略,因此系统集成需要不同类型的集成测试策略。2系统测试集成后的系统测试是软件测试生命周期中一个主要阶段。把测试活动分布到不同阶段除了可以在早期阶段识别错误外,也能减少在单独一个阶段中需要的工作量。系统测试包括健全测试、文档测试、性能测试、压力测试和边界测试。系统测试是在软件开发生命周期最后阶段执行的一
8、种测试,从广义上讲,系统测试可以包括集成后的系统测试和接收测试。根据机构和被测试软件情况,alfa测试、Bata测试或其它任何形式的测试都可以作为该测试方式的补充。系统测试的主要目标是通过在一段时间内观察其行为,确定软件系统是否为交付用户做好准备。它对集成后的整个系统进行测试,判断是否与需求一致。5.4 面向对象软件的测试工具5.4.1 JUnit介绍JUnit是一个开放源代码的Java测试框架;是迄今所开发的最重要的第三方Java库由Eric Gamma和Kent Beck(XP方法论和Refacotr的先驱之一)开发。同时,它引导并促进了测试的盛行,使得Java代码变得更健壮、更可靠,缺陷
9、也比以前更少。作为一个优秀的单元测试框架,JUnit用于编写和运行可重复的测试,是专门针对Java代码的单元测试,主要用于白盒测试和回归测试。JUnit还可以扩展用于功能测试、性能测试等。5.4.2 JTest介绍JTest是Parasoft公司开发的一款针对Java语言的自动化白盒测试工具,通过自动实现Java的单元测试和代码标准效验,来提高代码的可靠性。JTest先分析每个Java类,然后自动生成JUnit测试用例并执行测试用例,从而实现代码的最大覆盖,并将代码运行时未处理的异常情况显露出来。同时,它也可以检查DbC(Desgin by Contract)规范开发的代码的正确性。用户还可以通过扩展测试用例的自动生成起来添加更多的JUnit用例。JTest还能按照现有的超过350个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、函数错误、内存泄露、性能问题、安全隐患这样的代码问题。另外,JTest采用Parasoft公司的AEP方法论来实现团队开发中队代码错误的标准化管理,这个方法论,也是Parasoft提出的机遇团队开发模式下提到软件质量和可靠性的一套解决方案,其目前还处于探索阶段。5.5 综合案例5.6 本章小结面向对象为软件开发提供了一个新方向,能提高软件可重
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《火车》幼儿园大班教案
- 劳保用品定供货合同范本
- it工程合同范本
- 出售国际别墅合同范本
- 制作货架合同范本
- 内销采购合同范本
- 劳动合同范本 计时
- 上海提前退租合同范本
- 单位分包施工合同范例
- 医院供销合同范本
- 光伏发电监理合同协议
- 【数学】小学四年级口算题大全(10000道)
- 中国脑出血诊治指南
- 信息安全意识培训课件
- 社团活动情况登记表
- 基本乐理及音乐常识类知识考试题及答案
- 山东省潍坊市2023-2024学年高二下学期期末测试+英语试卷
- 2023年北京市初三一模数学试题汇编:选择压轴(第8题)
- AIGC视域下非遗文创产品的数字化转型升级路径研究
- 生涯规划与就业创业全套课件电子教案板
- 公司投资占股协议书模板
评论
0/150
提交评论