软件工程题库考五:面向对象方法

写在前面:这一章主要讲面向对象方法,包含面向对象方法学、面向对象分析、设计和实现,分析设计和实现与前面许多思想是一致的,就是采用了面向对象的方法,由于面向对象是当前比较主流的开发方法,因此需重点复习,结尾附脑图。顺祝商祺!


一、面向对象方法学引论

1、什么是面向对象方法学?它有哪些优点?

答:(1)面向对象方法学:尽可能模拟人类习惯的思维方式,使开发软件的方法与过程尽可能接近人类解决问题的方法与过程,使描述问题的问题空间与实现解法的解空间在结构上尽可能一致的方法学科

(2)面向对象方法学优点:

①与人类习惯的思维方法一致

②面向对象软件稳定性好。

③面向对象软件可重用性好。

④较易开发大型软件产品。

⑤可维护性好。

2、什么是“对象”?它与传统的数据有何异同?

什么是对象,对象有哪几种形式?

答:对象:客观世界是由许多具体的事物或事件、抽象的概念、规则等组成的。因此,我们将任何感兴趣或要加以研究的事、物、概念都统称为对象。对象不仅能表明具体的实体,也能表明抽象的规则、计划或事件。主要有如下类型的表现形式: 

1)有形的实体:指一切看得见、摸得着的实物。 

2)作用:指人或组织所起的作用。 

3)事件:在特定的时间所发生的事。 

4)性能说明:如产品性能说明。

解析:(1)对象是对问题域中某个实体的抽象。(2)相对于传统数据结构的静态被处理,对象既有静态的属性,也有动态的行为,是进行处理的主体。

3、简述面向对象的要素。

答:(1)抽象:指强调实体的本质、内在的属性,忽略一些无关紧要的属性。

(2)封装性(信息隐蔽):指所有软件部件内部都有明确的范围以及清楚的外部边界,每个软件部件内部都有界晰接口,软件部件的内部实现与外部可访问性分离。

(3)共享性:在同一应用的类层次结构中,存在继承关系的各类似子类中,存在数据结构和行为的继承使类似子类共享共同的结构和行为;在不同应用中的共享,通过类库这种机制和结构来实现不同应用中的信息共享。

3.2、结合软件工程要素,论述面向对象方法的思想。

答:软件工程的三要素:方法、工具和过程。

面向对象方法(Ohject–Oriented Method,OOM)是一种运用对象、类、消息传递、继承、封装、聚合、多态性等概念来构造软件系统的软件开发方法。

优点:所开发的程序是面向对象程序,直接描述客观世界的对象及其相互关系;具有模块性、继承性和类比性;可广泛支持对象的重用;十分有利于开发过程的质量控制;极大地减小了系统维护的复杂程度。

缺点:面对大型系统时,若缺乏整体系统设计划分,易造成系统结构不合理、各部分关系失调等问题;只能在现有业务基础上进行分类整理,较难从科学管理角度进行理顺和优化;需要必定的软件支持环境。

因此,通过三要素的关系可以看出,面向对象方法决定了它需要必定的开发工具和严格合理的管理过程来支持,同时,在这两个条件得到满足的情况下,面向对象的方法将能够极大的方便、优化工程的开发以及管理维护。

4、试述面向对象方法有哪些特征。

面向对象方法特征有哪些?

什么是“继承”?

结合软件工程要素,论述面向对象方法的思想。 

答:(1)唯一性:在对象建立时,系统授予新对象以唯一的对象标识符;在整个生命期中,它的标识都不改变,它在历史版本管理中又起巨大作用。

(2)分类性:具有一致的数据结构(属性)和行为(操作)的对象抽象成类。每个类是具有一样性质的个体对象的集合,而每个对象是相关类的实例。

(3)继承性:子类自动共享父类中定义的数据结构和方法的机制,而不必重复定义它们。在软件开发中,类的继承性使所建立的软件具有开放性、可扩充性,提高了软件的重用性

在类层次中,子类只继承一个父类的数据结构和方法,则称为单重继承

在类层次中,子类继承了多个父类的数据结构和方法,则称为多重继承

(4)多态性:不同的对象,收到同一消息可以产生不同的结果,这种现象称为多态性。允许每个对象以适合自身的方式去响应共同的消息,多态性增强了软件的灵活性和重用性。

解析:有时候特征和要素没有明显的界限,这7点均可作为标准答案中的要点。

5、什么是类,类与对象间是什么关系?

什么是“类”?

答:类是一种复杂的数据类型,它是将不同类型的数据结构和与这些数据相关的操作封装在一起的集合体。类是对某一类对象的抽象,而对象是某一种类的实例。

类(Class)是对象(Object)的抽象,对象是类的实例(instance)。在大多数面向对象(OO)方法中,类也可以看是对象,从而实现了类与对象的统一。

6、简述对象、类、类结构、消息、方法的基本概念。

举例说明类的整体部分结构(”is a”)和类的组装结构(”has a”)。

答:(1)对象:客观世界是由许多具体的事物或事件、抽象的概念、规则等组成的。因此,我们将任何感兴趣或要加以研究的事、物、概念都统称为对象。对象不仅能表明具体的实体,也能表明抽象的规则、计划或事件

②类型:包括有形实体、作用、事件、性能说明

③特点:

a.对象具有状态,一般用数据来描述它的状态。对象还有操作,用于改变对象的状态,对象及其操作就是对象的行为。

b.对象实现了数据和操作的结合,使数据和操作封装于对象的统一体中。

c.具有较强的独立性和自治性,其内部状态不受或很少受外界的影响。

d.具有很好的模块化特点,为软件重用奠定了坚实的基础。

(2)类:类是一种复杂的数据类型,它是将不同类型的数据结构和与这些数据相关的操作封装在一起的集合体。对象的抽象是类,类的具化是对象,即对象是类的实例。

解析:对象=数据结构(状态)+ 行为(操作)

类=数据结构(属性)+行为(操作)

对象—-某一类抽象集合—->—-某一个具化实例—->对象

(3)类结构:在客观世界中有若干类,这些类之间有必定的结构关系。一般有两种主要的结构关系:“一般到具体”和“整体到部分”。

①一般一具体结构关系:称为分类关系,也可以说是“或”关系,或者是”is-a”关系。类的这种层次结构可用来描述现实世界中一般化的关系,一般越在上层的类越具有一般性和共性,越在下层的类越具有具体和细化性

②整体一部分结构关系:称为组装结构,它们之间的关系是一种“与”关系,或者是*has-a”关系。类的这种层次关系可用来描述现实世界中类的组成的抽象关系,上层的类具有整体性,下层的类具有成员性。在类的层次结构中,一般上层类称为父类或超类,下层类称为子类。

解析:如建立一个时钟类,这个类中的属性如秒、分钟、小时等,加上对属性的操作如秒记时,分钟记时,小时记时等,就是一个类的整体部分结构

如建立一个时钟类,这个类中的属性如秒、分钟、小时等,加上对属性的操作如秒记时,分钟记时,小时记时等,就构成一个类的组装结构关系。

(4)消息:对象之间进行通信的构造。

①信息传递:在对象的操作中,当一个消息发送到某个对象时,消息包含接收对象去执行某种操作的信息。接收信息的对象经过解释,然后给予响应,这种通信机制称为信息传递。

②信息内容:发送一条信息至少要包含说明接收消息的对象名、发送给该对象的消息名(即对象名,方法名),一般还要对参数加以说明,参数可以是认识该消息对象所知道的变量名,或者是所有对象都知道的全局变量名。

解析:消息=to对象名+from对象名+参数(变量|全局变量)

(5)方法:类中操作的实现过程,一个方法有方法名、参数、方法体。当一个对象接收一条消息后,它所包含的方法决定对象怎样动作。方法也可以发送消息给其他对象,请求执行某一动作或提供信息。由于对象的内部对用户是密封的,所以消息只是对象同外部世界连接的管道。对象内部的数据只能被自己的方法所操纵。

7、什么是模型?开发软件为何要建模?

答:(1)模型是为了理解事物而对事物作出的一种抽象,是对事物的一种无歧义的书面描述。模型由一组图示符号和组织这些符号的规则组成,利用它们来定义和描述问题域中的术语和概念。模型是一种思考工具,利用这种工具可以把知识规范地表明出来。

(2)由于建模忽略了事物的非本质属性,因此模型比原始事物更容易操作。对于那些因过分复杂而不能直接理解的系统,特别需要建立模型,模型通过把系统的重大部分分解成人的头脑一次能处理的若干个子部分,从而减少了系统的复杂程度。

8、什么是功能模型?建立功能模型时主要使用哪些图形符号?

功能模型的特征有哪些?

简述三种分析模型的关系。

答:(1)功能模型:表明软件系统的功能性质,它指明了系统应该“做什么”,因此更直接地反映了用户对目标系统的需求。

(2)在UML中主要使用用例图来建立功能模型,一幅用例图包括的模型元素有系统、行为者、用例以用例之间的关系。

特征:(1)描述了系统所有的计算,表明一个计算如何从输入值得到输出值,并不思考所计算的次序。

(2)功能模型指出发生了什么(What),动态模型确定什么时候发生(When),而对象模型确定发生的客体(Who)。

(3)由多张数据流图组成。数据流图说明数据流是如何从外部输入、经过操作和内部存储输出到外部的。

(4)功能模型包括对象模型中值的约束条件。

9、什么好的对象模型?建立对象模型时主要使用哪些图形符号?这些符号的含义是什么?

说明对象模型的特征。

答:(1)对象模型表明静态的、结构化的、系统数据性质,描述了系统的静态结构,表现了对象间的相互关系。

(2)一般使用UML提供的类图来建立对象模型;系统中对象的结构、属性和操作使用对象图来描述。

(3)在UML中“类”的实际含义是一个类以及属于该类的对象。

解析:UML图也是会考应用题,很少考解答题。

10、什么是动态模型?建立动态模型时主要使用哪些图形符号?这些符号的含义是什么?

答:(1)动态模型表明瞬时的、行为化的系统的控制性质,它规定了对象模型中对象的合法变化序列。

(2)在UML中,使用状态图和事件追踪图来建立动态模型。

(3)其符号的含义为:①状态图表明需要考察的对象的动态行为。②事件追踪图表明其运行规律和行为规则。

11、什么是对象关系模型和对象行为模型,有什么不同? 

答:对象关系模型:描述对象与对象之间的关系的模型;

对象行为模型:对象与对象之间相互关系的行为模型。关系模型和对象模型存在概念上的阻抗不匹配,但是在关系数据库的存储模型上是一致的,无论你从关系模型的三大范式理论出发,还是从对象模型的ORM理论出发,最终必定会得到一致的数据库表设计。

二、面向对象分析

1、什么是 OOA 建模语言,它应该包括哪些方面?

三种模型的建立过程

答:面向对象分析方法(Object-Oriented Analysis,OOA)是确定需求或者从业务角度,按照面向对象的思想来分析业务。

(1)功能模型:即用例模型作为输入。

(2)对象模型:对用例模型进行分析,把系统分解成相互协作的分析类,通过类图/对象图描述对象、对象的属性和对象间的关系,是系统的静态模型

(3)动态模型:描述系统的动态行为,通过时序图/协作图描述对象的交互,以揭示对象间如何协作来完成每个具体的用例,单个对象的状态变化、动态行为可以通过状态图来表达。

解析:用例模型最重大的作用:将系统行为传达给客户或最终用户。

2、简述动态模型的特征,说明事件、事件跟踪图、状态、状态图的含义。

什么是事件?

答:(1)动态模型的特征

①描述了与时间、变化有关的系统控制结构。

②表明了瞬时的、行为化的系统控制性质。

③关心系统的控制、操作的执行顺序。

④从对象的事件和状态的角度出发,表现了对象的具体行为。

⑤描述的系统属性是触发事件、事件序列、状态、事件与状态的组织,使用状态图作为描述工具。

(2)事件的含义:发生在某一个时间点的一件事。它是某事情发生的信号,它没有持续时间,它是一种相对性的快速事件。例如,用户单击左边按钮,或者某次航班从北京出发。

(3)事件跟踪图的含义

①说明发生域系统执行过程中的一个特定“场景”(即脚本),是完成系统某个功能的事件序列。

②表明事件、事件的接收对象和发送对象,是各种有关事件的序列关系、及由此表现出来的对象之间的交互作用。

(4)状态的含义:对象在某个特定阶段所处的情形就是状态,它是对象行为的属性值的一种抽象。对象的属性值按照影响对象显著行为的性质将其归并到一个状态中去。状态指明了对象对输入事件的响应。事件和状态是孪生的,一个事件分开两种状态,一个状态分开两个事件。

(5)状态图的含义:反映了状态与事件的关系。当接收一事件时,下一状态就取决于当前状态和所接收的事件,由该事件引起的状态变化称为转换。状态图确定了由事件序列引起的状态序列。状态图描述了类中某个对象的行为,由于类的所有实例有一样的行为,那么这些实例共享同一状态图,正如它们共享一样的类性质一样。但由于各对象有自己的属性值,因此各对象也有自己的状态,按自己的步调前进。

2.2、UML 中有哪些动态建模的工具,各表达什么内容?

答:(1)状态图:对单个类对象的生命周期进行建模,描述了对象时间上的动态行为,每个对象被认为是事件驱动的孤立实体。状态图是由状态(state)和跃迁(transition)组成的图,一般状态机附属于类,描述类实例对接受事件的响应。

(2)活动图:用状态机对工作流进行建模的特殊形式,它和流程图很类似,不过它支持并发控制。活动图一般不描述所有的运算细节,它显示活动的流,但不显示执行活动的对象。

(3)顺序图:用二维表来表明交互,纵向是时间轴,横向是参与的角色以及它们交换的消息。

(4)协作图:显示的信息与顺序图一样,但显示方式不同、作用也不同。协作图中对象的图示与顺序图中一样,协作图着重于协作对象之间的交互和链接(消息),它可以表现系统中的操作,用例执行和或一个简单的交易场景。 

3、简述事件如何触发操作。

答:(1)如果仅描述事件的模式,那状态图就会失去意义。一个对象的行为描述必须指出在事件的响应中该对象做些什么。在响应所对应的状态和事件过程中,完全依附于状态和变迁的操作。

(2)活动是需要花费时间来完成的操作

①活动与状态有关,一个活动可以是连续的操作,例如在电视机屏幕上显示一幅画面。

②一个活动也可以包括经过一段时间间隔之后的自动终结顺序操作,例如关闭阀门,或者执行一次计算。

③一个状态可以控制一个连续性活动,这种控制可以持续到一个事件使该状态发生变迁时才结束,例如电话铃响。在状态框中用“do:A”表明活动A开始进入该状态并在退出该状态时结束。

④一个状态也可以控制时序的活动,例如机器人移动一个零件,这种控制持续到完成该行动,或因另一个事件被中断而提前停止该活动时才结束。一样的记号“do:A”表明时序活动A开始进入该状态,当完成时停止。

(3)如果一个事件在行动完成之前发生状态的变迁,则该活动被提前终止。例如机器人遇到阻碍而停止移动。这两种使用没有本质的区别:连续性活动可以被看成延续时间不确定的时序活动。

三、面向对象设计

1、为什么说类构件是目前比较理想的可重用软构件?它有哪些重用方式?

答:(1)可重用的类构件应具备的特点:①模块独立性强。②具有高度可塑性。③接口清晰、简明、可靠。

(2)类构件的重用方式:①实例重用。②继承重用。③多态重用。

2、列举出几种情况下运用整体——部分结构而实现或支持的复用。

答:(1)在两个或更多的对象类中都有一组属性和服务描述这些对象的一个一样的组成部分。把它们分离出来作为部分对象,建立整体一部分结构,这些属性和服务就被多个类复用,从而简化了它们的描述。

(2)系统中已经定义了某类对象,在定义其他对象时,发现其中一组属性和服务与这个已定义的对象是一样的,那就不必再重复地定义这些属性与服务,只需建立它与前一类对象之间的整体——部分结构。

(3)通过整体——部分结构提取可复用构件,以支持领域范围的复用问题。如果一个对象类中有一组属性和服务描述了该对象的一个独立部分,即使从本系统看并不需这样一个部分对象,只要它是一种在本领域常常使用的对象,就可把它从整体中分离出来作为部分对象,使它的类定义成为一个应用范围较广的可复用构件。 

3、面向对象设计应该遵循哪些准则?简述每条准则的内容,并说明遵循这条准则的必要性。

面向对象实现应该选用哪种程序设计语言?为什么?

选择面向对象程序设计语言时主要应该思考哪些因素?

良好的面向对象程序设计风格主要有哪些准则?

OOD如何体现抽象信息、隐藏和模块化这三个概念的? 

答:面向对象设计应该遵循如下六条准则:

(1)模块化:对象是面向对象软件系统中的模块,它是把数据结构和操作这些数据的方法紧密地结合在一起所构成的模块。 

(2)抽象:面向对象的程序设计语言不仅支持过程抽象,而且支持数据抽象,对象类实际上是具有继承机制的抽象数据类型。 

(3)信息隐藏:在面向对象的软件中,信息隐藏通过对象的封装来实现,即类结构分离了接口与实现,从而支持了信息隐藏。

(4)弱耦合:交互耦合对象问的耦合通过消息连接来实现,则这种耦合是交互耦合。要使交互耦合尽可能松散。②继承耦合继承是一般类与特殊类之问耦合的一种形式。通过继承关系结合起来的基类和派生类构成了系统中粒度更大的模块,因此,它们彼此之问应该结合得越紧密越好。

(5)强内聚:服务内聚一个服务应该完成一个且仅完成一个功能。②类内聚设计类的准则是,一个类应该只有一个用途,它的属性和服务应该是高内聚的。③一般——特殊内聚设计出的一般一特殊结构应该是对相应的领域知识的正确抽取。紧密的继承耦合与高度的一般——特殊内聚是一致的。

(6)可重用:软件重用是提高软件开发生产率和目标系统质量的重大途径,重用基本上从设计阶段开始。重用有两方面的含义:①尽量使用已有的类。②如果需要创建新类,则在设计这些新类的协议时应该思考将来的可重复使用性。

解析:(1)面向对象实现应尽量选用面向对象语言来实现面向对象分析、设计的结果。(2)缘由

①一致的表明方法。面向对象开发基于不随时间变化的、一致的表明方法。既有利于在软件开发过程中始终使用统一的概念,也有利于维护人员理解软件的各种配置成分。

②可重用性。既可重用面向对象分析结果,也可重用相应的面向对象设计和面向对象程序设计结果。

③可维护性。程序显式地表达问题域语义,对维护人员理解待维护的软件有很大协助。在选择编程语言时,应该思考的首要因素是哪个语言能最恰当地表达问题域语义。

4、简述有助于提高面向对象设计质量的每条主要启发规则的内容和必要性。

答:(1)主要启发规则

①设计结果应该清晰易懂:a.用词一致;b. 使用已有的协议;c.减少消息模式的数目;d. 避免模糊的定义。

②一般——特殊结构的深度应适当。

③设计简单的类:a.不要包含过多的属性;b.有明确的定义。为使类的定义明确,分配给每个类的任务应该简单;c.简化对象之间的合作关系;d.不要提供太多的服务。

④使用简单的协议。

⑤使用简单的服务。

⑥把设计变动减至最小。

(2)启发规则的必要性:人们使用面向对象方法学开发软件的历史虽然不长,但也积累了一些经验。总结这些经验得出了几条启发规则,它们往往能协助软件开发人员提高面向对象设计的质量。

5、试说明主动服务与被动服务的区别。

答:(1)主动服务:不需要接收消息就能主动执行的服务,它在程序实现中是一个主动的程序成分,例如用于定义进程或线程的程序单位。

(2)被动服务:只有接收到消息才执行的服务,它在编程实现中是一个被动的程序成分,例如函数、过程、例程等。

(3)区别:被动对象的服务都是被动服务,主动对象应该有至少一个主动服务。在定义服务的过程中,对于主动对象应指出它的主动服务。

6、列举出主动对象表明控制流时应遵循的应用规划。

答:(1)在一个表明进程的主动对象中,有且仅有一个表明进程的主动服务。

(2)如果要把一个进程和隶属于它的线程分散到不同的对象中去表明,则尽可能使每个对象中只含有一个表明线程的服务。

(3)如果要把进程和隶属于它的线程放在一个对象中表明,就应该把这个进程的全部线程都放在同一个对象中,避免一部分聚焦,一部分分散。

四、面向对象实现及测试

1、什么是面向对象开发过程,讨论各阶段任务和要点。

答:利用面向对象方法进行的软件开发的完整流程,主要分为四个阶段:分析、设计、编程、测试。

面向对象分析:包括需求分析和需求模型化两个部分。其主要作用是明确用户的需求,并用标准化的面向对象模型来规范地表达这一需求,最后形成面向对象的分析模型,它是系统设计的依据。

面向对象设计:把分析阶段得到的问题域需求转变成符合要求的、抽象的系统实现方案,主要分为两个阶段:系统设计和对象设计。

编程和测试:分别是由开发人员编写程序具体代码,并在系统代码开发完成后对系统整体性能和功能进行测试。

2、测试面向对象软件时,主要有哪些设计确认测试用例的方法?

答:(1)黑盒测试:也称功能测试,它是通过测试来检测每个功能是否都能正常使用。在测试中把程序看作一个不能打开的黑盒子,在完全不思考程序内部结构和内部特性的情况下,在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地就收输入数据而产生正确的输出信息。黑盒测试着眼于程序外部结构,不思考内部逻辑结构,主要针对软件界面和软件功能进行测试。

(2)基于情景的方法:场景是一种有假设条件的故事,可以辅助测试人员把一个复杂的问题或系统通过电影那样地过一遍。测试人员通过把整个场景都设想出来,在设想中的场景中进行的测试就是基于场景的测试。

3、测试面向对象软件时,单元测试、集成测试和确认测试各有哪些新特点?

答:(1)单元测试:是在类层面上的测试。由于继承和复合,类(或对象)在许多情况下已不再是单纯意义上的单个操作。因此,具体的测试将在多有与操作有关的每个子类语境中进行。

(2)集成测试:由于面向对象软件中类的成分直接和间接交互,使得传统测试放法已经失去意义。因此有两种策略可供选择,分别是基于线程的测试和基于使用的测试。

(3)确认测试:关注与用户可见的动作和用户识别的系统输出,但基于场景的测试总是主宰面向对象系统的确认测试。

3.2、测试面向对象软件时,主要有哪些设计单元测试用例的方法?

答:(1)随机测试:通过执行一些随机产生的测试用例,来对类和对象进行测试的过程。

(2)划分测试:通过把输入和输出分类,设计测试用例以测试划分出的每个类别的过程。主要分为以下几种方法。

①基于状态的划分:根据类操作改变类状态的能力来划分类操作。

②基于属性的划分:根据类操作使用的属性来划分类操作。

③基于功能的划分:根据类操作所完成的功能来划分类操作。

(3)基于故障的测试:第一推测软件中可能有的错误,然后设计出最可能发现这些错误的测试用例。

3.3、测试面向对象软件时,主要有哪些设计集成测试用例的方法。

答:设计集成测试用例的方法主要有多类测试、从动态模型中导出测试用例。

(1)多类测试:多类测试可分为随机测试和划分测试两种。

随机测试

a.对每个客户类,使用类操作符列表来生成一系列随机测试序列。

b.对所生成的每个消息,确定协作类和在服务器对象中的对应操作符。

c.对服务器对象中的每个操作符,确定传递的消息。

d.对每个消息,确定下一层被调用的操作符,并把这些操作符结合进测试序列中。

划分测试

a.应该扩充测试序列以包括那些通过发送给协作类的消息而被调用的操作。

b.根据与特定类的接口来划分类操作。

(2)从动态模型中导出测试用例:类的状态图可以协助人们导出测试该类的动态行为的测试用例。通过导出大量的测试用例,保证该类的所有行为都被适当地测试了。在类的行为导致与一个或多个类协作的情况下,应该使用多个状态图去跟踪系统的行为流。

4、用覆盖的观点讨论面向对象的软件测试策略。

答:软件测试覆盖包括:分支覆盖,语句覆盖、条件覆盖等。

语句覆盖:它要求被测程序的每一可执行语句在测试中尽可能都检验过;

分支覆盖:要求程序中所有判定的分支尽可能得到检验;

条件覆盖:当判定式中含有多个条件时,要求每个条件的取值均得到检验;

还有其他的覆盖方式则是将这三种覆盖进行组合,使得测试覆盖更加全面,可以覆盖到程序中所有可能的路径。由此可以看出只有对程序内部十分了解才能进行适度有效的覆盖测试。但是贯穿在程序内部的逻辑存在着不确定性和无穷性,尤其对于大规模复杂软件。因此我们不能穷举所有的逻辑路径,即使穷举也未必会带来好运(穷举不能查出程序逻辑规则错误,不能查出数据相关错误,不能查出程序遗漏的路径)。所以正确使用覆盖(白盒)测试,就要先从代码分析入手,根据不同的代码逻辑规则、语句执行情况,选用适合的覆盖方法。任何一个高效的测试用例,都是针对具体测试场景的。逻辑测试不是片面的测试正确的结果或是测试错误的结果,而是尽可能全面地覆盖每一个逻辑路径。这样才能使得测试的工作量与准确性达到一个合理的平衡。

软件工程题库考五:面向对象方法

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容