已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
12、面向对象的实现,授课教师:崔晓晖联系方式:cuixiaohui授课学时:40,目录,3.程序设计风格,4.测试策略,5.设计测试用例,2.程序设计语言,1.面向对象实现概述,软件工程,1.面向对象实现概述,把面向对象设计结果翻译成用某种程序语言书写的面向对象程序。面向对象程序质量基本上由面向对象设计质量决定,所采用程序语言的特点和程序设计风格也有影响。测试并调试面向对象的程序。面向对象测试的目标,是用尽可能低的测试成本发现尽可能多的软件错误。,软件工程,目录,3.程序设计风格,4.测试策略,5.设计测试用例,2.程序设计语言,1.面向对象实现概述,软件工程,2.程序设计语言,2.1面向对象语言的优点2.2面向对象语言的技术特点2.3选择面向对象语言需要考虑的因素,软件工程,2.1面向对象语言的优点,一致的表示方法面向对象开发基于不随时间变化的、一致的表示方法。可重用性在广泛的范围中运用重用机制。可维护性能最好地表达问题域语义。,软件工程,2.2面向对象语言的技术特点,2.2.1支持类与对象概念的机制2.2.2实现整体部分(即聚集)结构的机制2.2.3实现一般特殊(即泛化)结构的机制2.2.4实现属性和服务的机制2.2.5类型检查2.2.6类库2.2.7效率2.2.8持久保存对象2.2.9参数化类2.2.10开发环境,软件工程,2.2.1支持类与对象概念的机制,面向对象语言允许用户动态创建对象这就意味着系统必须处理内存管理问题。管理内存的方法:由语言的运行机制自动管理。方便安全,但必须采用先进的垃圾收集算法才能减少开销。由程序员编写释放内存的代码。某些面向对象的语言允许程序员定义析构函数,每当一个对象超出范围或被显式删除时,就自动调用析构函数。这种机制使得程序员能够方便地构造和唤醒释放内存的操作,但需较多的人工操作。,软件工程,2.2.2实现整体部分(即聚集)结构的机制,使用指针最容易的,通过增加内部指针可以方便地实现关联。使用独立的关联对象面向对象语言不显式支持独立的关联对象。,软件工程,2.2.3实现一般特殊(即泛化)结构的机制,继承的机制解决名字冲突的机制指的是处理在多个基类中可能出现的重名问题这个问题仅在支持多重继承的语言中才会遇到,软件工程,2.2.4实现属性和服务的机制,属性机制考虑的方面:支持实例连接的机制属性的可见性控制对属性值的约束服务机制考虑因素:支持消息连接的机制控制服务可见性的机制动态联编指应用系统在运行过程中,当需要执行一个特定服务的时候,选择(或联编)实现该服务的适当算法的能力。,软件工程,2.2.5类型检查,程序设计语言可以按照编译时进行类型检查的严格程度分类。弱类型:语言仅要求每个变量或属性隶属于一个对象。强类型:规定每个变量或属性必须准确地属于某个特定类优点:有利于在编译时发现程序错误。增加了优化的可能性。,软件工程,2.2.6类库,概述:大多数面向对象语言都提供一个实用的类库。某些语言本身并没有规定提供类库,而是由实现这种语言的编译系统自行提供类库。优点:许多软构件就不必从头编写,使用方便。类库:包含实现通用数据结构的类有实现各种关联的类提供独立于具体设备的接口类用于实现窗口系统的用户界面类,软件工程,2.2.7效率,许多人认为面向对象语言效率低的原因:某些早期的面向对象语言是解释型的而不是编译型的。在运行时使用动态联编实现多态性,这似乎需要在运行时查找继承树,以得到定义给定操作的类。事实上类库提供了更高效的算法和更好的数据结构。绝大多数面向对象语言都优化了查找过程,从而实现了高效率查找。,软件工程,2.2.8持久保存对象,保存数据:为实现在不同程序之间传递数据。为恢复被中断了的程序的运行。面向对象语言的保存数据方法:不提供直接存储对象的机制。把当前的执行状态完整地保存在磁盘上。提供访问磁盘对象的输入输出操作。,软件工程,2.2.9参数化类,定义:使用一个或多个类型去参数化类的机制。作用:程序员可以先定义一个参数化的类模板,然后把数据类型作为参数传递进来,从而把这个类模板应用在不同的应用程序中,或用在同一应用程序的不同部分。,软件工程,2.2.10开发环境,基本的软件工具:编辑程序编译程序或解释程序浏览工具调试器,软件工程,2.3选择面向对象语言需要考虑到因素,将来能否占主导地位决定选用哪种编程语言的往往是成本之类的经济因素。可重用性采用面向对象方法开发软件的基本目的和主要优点。类库和开发环境语言、开发环境和类库3个因素合起来,共同决定了可重用性。其他因素,软件工程,目录,3.程序设计风格,4.测试策略,5.设计测试用例,2.程序设计语言,1.面向对象实现概述,软件工程,3.程序设计风格,良好的面向对象程序设计风格,既包括传统的程序设计风格准则,也包括为适应面向对象方法所特有的概念而必须遵循的新准则:3.1提高可重用性3.2提高可扩充性3.3提高健壮性,软件工程,3.1提高可重用性,代码重用分两种本项目内的代码重用新项目重用旧项目的代码重用的准则提高方法的内聚减小方法的规模保持方法的一致性把策略与实现分开全面覆盖尽量不使用全局信息利用继承机制,软件工程,3.2提高可扩充性,提高扩充的准则封闭实现策略不要用一个方法遍历多条关联链避免使用多分支语句精心确定公有方法,软件工程,3.3提高健壮性,提高健壮的准则预防用户的操作错误检查参数的合法性不要预先确定限制条件先测试后优化,软件工程,目录,3.程序设计风格,4.测试策略,5.设计测试用例,2.程序设计语言,1.面向对象实现概述,软件工程,4.测试策略,经典策略从“小型测试”开始,逐步过渡到“大型测试”。即从单元测试开始,逐步进入集成测试,最后进行确认测试和系统测试。面向对象软件的测试策略基本相同。4.1面向对象的单元测试4.2面向对象的集成测试4.3面向对象的确认测试,软件工程,4.测试策略,面向对象的测试模型,软件工程,4.1面向对象的单元测试,不再孤立地测试单个操作,而应该把操作作为类的一部分来测试。最小的可测试单元是封装起来的类和对象。对于面向对象的软件来说,单元测试的含义发生了很大变化。当测试面向对象软件时,传统的单元测试方法是不适用的,不能再在“真空”中测试单个操作。,软件工程,4.1面向对象的单元测试,例如:在一个类层次中,操作A在超类中定义并被一组子类继承,每个子类都可使用操作A,但是A调用于类中定义的操作并处理子类的私有属性。由于在不同的子类中使用操作A的环境有所不同,因此有必要在每个子类的语境中测试操作A。这就是说,当测试面向对象软件时,传统的单元测试方法是不可用的,我们不能再独立地对操作A进行测试。,软件工程,4.2面向对象的集成测试,主要策略:基于线程的测试(threadbasedtesting)把响应系统的一个输入或一个事件所需要的那些类集成起来。分别集成并测试每个线程,同时应用回归测试以保证没有副作用。基于使用的测试(usebasedtesting)首先测试独立类,再测试使用独立类的下一个层次的类,直至把整个软件系统构造完为止。集群测试集成测试的一个步骤。目的是用精心设计的测试用例检查一群相互协作的类,力图发现协作错误。,软件工程,4.3面向对象的确认测试,在确认测试或系统测试层次,不再考虑类之间相互连接的细节。集中检查用户可见的动作和用户可识别的输出。主要根据动态模型和描述系统行为的脚本来设计确认测试用例。,软件工程,目录,3.程序设计风格,4.测试策略,5.设计测试用例,2.程序设计语言,1.面向对象实现概述,软件工程,5.设计测试用例,现状面向对象软件的测试用例设计方法,目前还处于研究、发展阶段。区别传统软件测试测试用例的设计由软件的输入处理输出视图或单个模块的算法细节驱动。面向对象测试关注于设计适当的操作序列以检查类的状态。,软件工程,5.1测试类的方法,贯彻软件测试思想从“小型测试”开始,逐步过渡到“大型测试”。小型测试着重测试单个类和类中封装的方法。测试单个类的方法(通过银行应用系统的例子说明)5.1.1随机测试5.1.2划分测试5.1.3基于故障的测试,软件工程,5.1.1随机测试,银行系统的account(帐户)类有下列操作:open(打开)setup(建立)deposit(存款)withdraw(取款)balance(余额)summarize(清单)creditLimit(透支限额)close(关闭)系统对操作的限制:必须在应用其它操作之前先打开帐户,在完成了全部操作之后才能关闭帐户。,软件工程,account类实例的最小行为历史操作:open.setup.deposit.withdraw.close其它行为可能在下面序列中产生:open.setup.deposit.deposit|withdraw|balance|summarize|creditLimitn.withdraw.Close随机地产生一系列不同的操作序列:测试用例r1:open.setup.deposit.deposit.balance.summarize.creditLimit.withdraw.close测试用例r2:open.setup.deposit.withdraw.deposit.balance.creditLimit.withdraw.close可以测试不同的类实例的生存历史。,5.1.2划分测试,作用减少测试类时所需要的测试用例的数量。方法把输入和输出分类。设计测试用例以测试划分出的每个类别。分类基于状态的划分基于属性的划分基于功能的划分,软件工程,基于状态的划分,划分根据类操作改变状态的能力。分类状态操作:deposit(存款)、withdraw(取款)非状态操作:balance(余额)、summarize(清单)、creditLimit(透支限额)测试用例p1:open.setup.deposit.deposit.withdraw.close测试用例p2:(测试不改变状态的操作,在最小测试序列的操作除外)open.setup.deposit.summarize.reditLimit.withdraw.close,软件工程,基于属性的划分,划分根据类操作使用的属性。分类(可根据balance属性来定义划分):使用balance的操作修改balance的操作不使用也不修改balance的操作为上述每个类别设计测试序列,软件工程,基于功能的划分,划分根据类操作所完成的功能。分类初始化操作(open,setup)计算操作(deposit,withdraw)查询操作(balance,summarize,creditLimit)终止操作(close)为上述每个类别设计测试序列,软件工程,5.1.3基于故障的测试,方法推测软件中可能有的错误。设计出最可能发现这些错误的测试用例。特点推测软件的错误,应该仔细研究分析模型和设计模型。在很大程度上要依靠测试人员的经验和直觉。,软件工程,5.2集成测试方法,方法必须对类间协作进行测试。测试类协作方法5.2.1基于时序图设计对象交互测试用例5.2.2正交阵列测试法,软件工程,5.2.1基于时序图设计对象交互测试用例,(1)将每个UML时序图中的消息作为节点,节点的内容包括该消息的元素(消息发送者,消息发送者的状态、相关参数值、消息接收者、消息接收者的状态、消息执行结果)。(2)按照消息的执行顺序,构造消息序列结构图。(3)根据消息序列结构图,采用路径覆盖准则,设计测试用例,每条从初始节点出发的完整路径就是一个消息序列的测试用例。,软件工程,5.2.1基于时序图设计对象交互测试用例,时序图,5.2.1基于时序图设计对象交互测试用例,对测试用例片
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省汕头市濠江区金山中学2026届高一上数学期末统考试题含解析
- 西南石油大学《中学语文课程标准与教材分析》2024-2025学年第一学期期末试卷
- 数据分享合作协议
- 企业会活动策划计
- 排水板抗压强度试验记录
- 土的最大干密度(击实法)试验记录
- 高一数学上学期期中模拟卷(北师大版2019高效培优提升卷)(全解全析)
- 科技文献检索与科技论文写作.完美版
- 物资管理系统开题报告
- 《科技论文写作与实践》教学大纲
- 2025年锦州辅警协警招聘考试真题(含答案详解)
- 2025疾控检验试题及答案
- 学堂在线 知识产权法 章节测试答案
- 2025年广东学法考试试题及答案
- 一年级数学上册数学绘本故事《鼓鼓和蛋蛋的梦想》课件-A3演示文稿设计与制作
- 国开作业《机电控制与可编程序控制器技术》专题报告(占20%)-2021-5参考535
- PH检测原始记录
- 人防工程施工单位自评报告10.17
- 景观生态学论文 嘉陵江流域污染现状及防治措施
- 复合材料液体模塑成型技术(中文版) - 2013年最新《复合材料工艺与设备》课件——王继辉(武汉理工大学)
- 大众开发流程简介PPT课件
评论
0/150
提交评论