大学课程软件工程测试xcb.docx
《大学课程软件工程测试xcb.docx》由会员分享,可在线阅读,更多相关《大学课程软件工程测试xcb.docx(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、三、简答题:1、 什么是软件危机?产生软件危机的原因?怎样消除?答:软件危机:是计算机软件在它的开发和维护过程中所遇到的一系列严重问题,研制软件系统需要投入大量的人力和物力,但系统的质量却难以保证,也就是说,开发软件所需的高成本同产品的低质量之间有着尖锐的矛盾,这种现象就是所谓的“软件危机”。软件危机产生的原因是由于软件产品本身的特点以及开发软件的方式、方法、技术和人员引起的:软件的规模越来越大,结构越来越复杂。 软件开发管理困难而复杂。 软件开发费用不断增加。软件开发技术落后。 生产方式落后。 开发工具落后,生产率提高缓慢。包含两方面的问题:如何开发软件,以满足对软件日益增长的需求;如何维护
2、数量不断膨胀的已有软件。软件危机典型表现:(1) 对软件开发成本和进度的估计常常很不准确。(2) 用户对“已完成的”软件系统不满意的现象经常发生。(3) 软件产品的质量往往靠不住。(4) 软件常常是不可维护的。(5) 软件通常没有适当的文档资料。(6) 软件成本在计算机系统总成本中所占的比例逐年上升。(7) 软件开发生产率提高的速度,远远跟不上计算机应用迅速普及深入的趋势。2、 什么是软件工程?包括哪些内容?答: 软件工程:用科学知识和技术原理来定义、开发、维护软件的一门学科。软件工程的内容:) 软件开发技术:软件开发方法、软件开发过程、软件开发工具和环境。) 软件开发管理:软件管理学、软件经
3、济学、软件心理学。软件工程的目标:是成功的建造一个大型软件系统,所谓成功是要达到以下几个目标:付出较低的开发成本;面到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高;软件工程过程:生产一个最终能满足需求且达到工程目标的软件产品所需要的步骤。软件工程过程主要包括开发过程、运作过程、维护过程。它们覆盖了需求、设计、实现、确认以及维护等活动。软件工程的框架可概括为:目标、过程和原则。软件工程的原则:是指围绕工程设计、工程支持以及工程管理在软件开发过程中必须遵循的原则。基本原理:用分阶段的生命周期计划严格管理;坚持进行阶
4、段评审;实行严格的产品控制;采用现代程序设计技术;结果应能清楚地审查;开发小组的人员应该少而精;承认不断改进软件工程实践的必要性;(工程化的方法开发软件基本原理)软件工程方法学:软件工程包括技术和管理两方面的内容,是技术与管理紧密结合所形成的工程学科。软件工程方法学包括:传统方法学(结构化范型)和面向对象方法学。面向对象的要点: 把对象作为融合了数据及在数据上的操作行为的统一的软件构件。把所有对象都划分成类。按子类与父类的关系,把类组成一个层次结构。对象彼此之间仅能通过传递消息互相联系。软件工程方法学三要素是:方法;工具;过程。3、 软件生命周期由哪三个时期组成,又划分为哪8个阶段?答:软件生
5、存周期:一个软件从提出开发要求开始直到该软件报废为止的整个时期。软件生命周期是由:软件定义时期;软件开发时期;软件维护时期三个时期组成的。又划分为:问题定义、可行性研究、需求分析、总体设计、详细设计、编码和单元测试、综合测试、维护八个阶段。1、问题的定义及规划此阶段是软件开发方与需求方共同讨论,主要确定软件的开发目标及其可行性。2、需求分析在确定软件开发可行的情况下,对软件需要实现的各个功能进行详细分析。需求分析阶段是一个很重要的阶段,这一阶段做得好,将为整个软件开发项目的成功打下良好的基础。唯一不变的是变化本身。,同样需求也是在整个软件开发过程中不断变化和深入的,因此我们必须制定需求变更计划
6、来应付这种变化,以保护整个项目的顺利进行。3、软件设计此阶段主要根据需求分析的结果,对整个软件系统进行设计,如系统框架设计,数据库设计等等。软件设计一般分为总体设计和详细设计。好的软件设计将为软件程序编写打下良好的基础。4、程序编码此阶段是将软件设计的结果转换成计算机可运行的程序代码。在程序编码中必须要制定统一,符合标准的编写规范。以保证程序的可读性,易维护性,提高程序的运行效率。5、软件测试在软件设计完成后要经过严密的测试,以发现软件在整个设计过程中存在的问题并加以纠正。整个测试过程分单元测试、组装测试以及系统测试三个阶段进行。测试的方法主要有白盒测试和黑盒测试两种。在测试过程中需要建立详细
7、的测试计划并严格按照测试计划进行测试,以减少测试的随意性。6、运行维护软件维护是软件生命周期中持续时间最长的阶段。在软件开发完成并投入使用后,由于多方面的原因,软件不能继续适应用户的要求。要延续软件的使用寿命,就必须对软件进行维护。软件的维护包括纠错性维护和改进性维护两个方面。4、 什么是白盒测试法?什么是黑盒测试法?答:白盒测试:所谓白盒测试就是在知道产品内部工作过程或程序内部结构和处理过程的前提下,检验产品内部动作是否按照规格说明书的规定正常进行或按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按照预定要求正确工作的测试方法.因此白盒测试又称为结构测试或逻辑测试。从覆盖源程序语句的
8、详尽程度分析,大致有以下一些不同的覆盖标准:语句覆盖;判定覆盖;条件覆盖;判定/条件覆盖;条件组合覆盖;点覆盖;边覆盖;路径覆盖。黑盒测试:所谓黑盒测试是指在完全不考虑程序的内部结构和处理过程的前提下,在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接受输入数据产生正确的输出信息,并且保持外部信息的完整性.因此,又称为功能测试。特点:等价类划分、边界值分析、因果图、错误推测。优点 1. 基本上不用人管着,如果程序停止运行了一般就是被测试程序crash了 2. 设计完测试例之后,下来的工作就是爽了,当然更苦闷的是确定crash原因缺点 1. 结果取决于测
9、试例的设计,测试例的设计部分来势来源于经验,OUSPG的东西很值得借鉴 2. 没有状态转换的概念,目前一些成功的例子基本上都是针对PDU来做的,还做不到针对被测试程序的状态转换来作 3. 就没有状态概念的测试来说,寻找和确定造成程序crash的测试例是个麻烦事情,必须把周围可能的测试例单独确认一遍。而就有状态的测试来说,就更麻烦了,尤其不是一个单独的testcase造成的问题。这些在堆的问题中表现的更为突出。5、 什么是集成测试?非渐增式和渐增式有什么区别?渐增式如何组装模块?答:将模块组合起来成为一个完整的系统对其进行测试。非渐增式是将模块先进行单元测试然后组装在一起进行测试。渐增式是逐个将
10、未测试的模块组装到已经测试过的模块上去进行集成测试,每加入一个就测试一次。非渐增式需要桩模块和驱动模块、非渐增式开始可以并行测试、渐增式可以及时的发现接口错误,非渐增式很难发现接口发现错误、渐增式开始不能并行测试、渐增式测试比较彻底。渐增式组装模块有自顶向下和自底向上两种组装方式。6、 什么是确认测试?该阶段有那些工作?答:调试的目的是发现错误的位置并改正错误。简单调试、演绎调试、递归调试、回溯调试。7、 面向对象方法学与传统方法学有何区别?答:面向对象方法学注重的是软件的重用性,而传统的方法学则在这一问题解决上不理想。面向对象方法学和传统的方法学在问题分析上的切入点不同。面向对象里面,系统是
11、长出来的,传统的方法学里面,系统是放进去的。传统方法:结构化开发方法,注重的是系统功能,自顶向下,从大到小的功能分解,从DFD到MSD,往往系统需求变化最大就是功能,一段较长的时间内,商业的流程可能已经发生了很大的变化,这样基于功能和过程的方法显然难以维护的,代码重用率可想而知,而商业过程中的数据可能变化不会很大,信息工程法,注重的是数据,事件流信息流,(资金流,物流)数据流,数据的输入和转化输出,数据流程图,状态转化图,事件顺序图,过程依赖图,两者都是由事件驱动面向的是问题,是为了要解决某一个具体问题,其观察事物的方法不是本体客体本身,而是对本体客体相互作用过程抽象,转化成逻辑模型。面向对象
12、方法学:其切入点是客观世界的主体和客体,通过封装实现了信息交流的安全,抽象和继承使得事物的一完整表述和容易修改新的变化,聚合,关联反映事物间的相互作用和关系,通过关联类管理,这样把事物和事物间的关系分开减少了复杂度,便于维护,大大提高了代码重用率。8、 软件开发模型有几种?各有什么特点?软件生存周期模型:是描述软件开发过程中各种活动如何执行的模型。(模型:是为了理解事物而对事物做出一种抽象,它忽略不必要的细节,它也是事物的一种抽象形式、一个规划、一个程式。)主要模型:瀑布模型;增量模型;螺旋模型;喷泉模型;变换模型;基于知识的模型等瀑布模型:它提供了一个摸板,这个摸板使分析、设计、编码、测试和
13、支持的方法可以在该摸板下有一个共同的指导;虽然有不少缺陷但比在软件开发中随意的状态要好得多。 快速原型模型:开发速度快,质量有保证。对信息系统特别有效。增量模型:人员分配灵活,刚开始不用投入大量人力资源,当核心产品很受欢迎时,可增加人力实现下一个增量。当配备的人员不能在设定的期限内完成产品时,它提供了一种先推出核心产品的途径,这样就可以先发布部分功能给客户,对客户起到镇静剂的作用。具有一定的市场。螺旋模型:对于大型系统及软件的开发,这种模型是一个很好的方法。开发者和客户能够较好地对待和理解每一个演化级别上的风险。对可选方案和约束条件的强调有利于已有软件的重用,也有助于把软件质量作为软件开发的一
14、个重要目标;减少了过多测试或测试不足所带来的风险。9、 可行性研究:系统流程图;数据流程图;系统流程图:系统流程图是概括地描绘物理系统的传统工具。基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件。其表达的是数据在系统各部件之间流动的情况,而不是对数据进行加工处理的控制过程。 数据流程图:简称DFD,是描述数据处理过程的工具。数据流图从数据传递和加工的角度,以图形的方式刻画数据流从输入到输出的移动变换过程,是一种功能模型。作用:它以图形的方式描绘数据在系统中流动和处理的过程,反映系统必须完成的逻辑功能。基本符号有四种:,箭头,表示数据流;,圆或椭圆,表示加工; =,双杠,表示数据存储;,方
15、框,表示数据的源点或终点。可行性研究的任务: (1)经济可行性。确定待开发系统是否值得投资开发。(2)技术可行性。对待开发的系统进行功能、性能和限制条件的分析,确定在现有资源的条件下技术风险有多大,系统是否能实现。 (3)法律可行性。确认待开发系统可能会涉及的任何侵犯、妨碍、责任等问题。(4)抉择。对系统开发的不同方案进行比较评估。10、 什么是字据字典?其作用是什么?它有哪些条目?字据字典:简称,就是用来定义数据流图中的各个成分具体含义的,它以一种准确的、无二义性的说明方式为系统的分析、设计及维护提供了有关元素的一致的定义和详细的描述。作 用:为系统的分析设计及维护提供了有关元素的一致的定义
16、和详细的描述.为分析人员查找数据流图中有关名字的详细定义而服务的.它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分.条 目:数据流、数据项、数据存储、基本加工。11、 需求分析的任务是什么?答: 需求分析是指:开发人员要准确理解用户的要求,进行细致的调查分析,将用户非形式的需求陈述转化为完整的需求定义,再由需求定义转换到相应的形式主义功能规约(需求规格说明)的过程。 需求分析的主要任务:正确地确定对系统综合要求,充分理解和表达用户的需求。通过结构分析的方法对系统进行分解,以确定软件系统的主要成分或软件系统的构成。是对以上已进行的两项工作进行描述,以形成需求文档。编写用户手册
17、;编写验收计划;修正可行性研究阶段所制订的软件项目开发计划。12、 结构化分析方法:结构化分析方法就是用抽象模型的概念,按照软件内部数据传递、变换的关系,自顶向下逐层分解,直到找到满足功能要求的所有可实现的软件为止。主要工具:数据流图、数据词典、结构化英语、判定表和判定树。3种模型:数据模型、功能模型和行为模型。验证软件需求:一致性;完整性;现实性;有效性;结构化分析方法步骤: 了解当前系统的工作流程,获得当前系统的物理模型。抽象出当前系统的逻辑模型。建立上标系统的逻辑模型。作进一步补充和优化。结构化程序设计基本要点:采用自顶向下、逐步求精的程序设计方法;使用三种基本程序控制结构构造程序(顺序
18、方式;选择方式;循环方式;)。主程序员组的组织形式。13、 总体设计过程由两个主要阶段组成:系统设计阶段,确定系统的具体实现方案;结构设计阶段,确定软件结构。模块:软件系统的层次结构正是模块化的具体体现。将整个软件划分成若干单独命名和可编址的部分,称之为模块。模块化:就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户的需求。模块是构成程序的基本构件。模块化的根据:把复杂的问题分解成许多容易解决的小问题,原来的问题也就容易解决了。这就是模块化的根据。14、 衡量模块独立性的两个标准是什么?它们各表示什么含义?两个定性的度
19、量标准:耦合与内聚性。耦合:是模块之间的相对独立性(互相连接的紧密程度)的度量。模块之间的连接越紧密,联系越多,耦合性就越高,而其模块独立性就越弱。按耦合度从低到高依次有7种耦合方式:非直接耦合(独立运行);数据耦合(用参数表传递简单数据);标记耦合(传递数据结构或者一部分);控制耦合(传递的信息包括控制模块的信息);外部耦合(模块与软件之外的环境有关);公共耦合(多个模块引用同一全局的数据区);内容耦合(访问内部数据,代码重叠或者多个入口)。内聚:是模块功能强度(一个模块内部各个元素彼此结合的紧密程度)的度量。一个模块内部各个元素之间的联系越紧密,则它的内聚性就越高。按内聚度从低到高依次有7
20、种内聚种类: 偶然内聚(模块完成的多个任务,任务之间的关系松散);逻辑内聚(模块完成逻辑相关的一组任务);瞬时内聚(模块的所有任务必须在同一时间间隔内执行);过程内聚(模块的处理元素相关而且按照特定的次序执行);通信内聚(模块的所有元素集中在一个数据结构区域上);顺序内聚(模块的处理元素相关,必须顺序执行);功能内聚(模块完成单一的功能,各个部分协调工作,而且不可缺少)耦合和内聚的关系:一般说来,在系统中各模块的内聚越大,则模块间的耦合越小。但这种关系并不是绝对的。耦合小使得模块间尽可能相对独立,从而各模块可以单独开发和维护。内聚大使得模块的可理解性和维护性大大增强。因此,在模块的分解中应尽量
21、减少模块的耦合,力求增加模块的内聚。15、 Jackson方法的步骤: (1)实体动作分析:从问题的描述中,提取软件系统要产生和运用的实体,以及现实世界作用于实体上的动作。(2)实体结构分析:把作用于实体的动作或由实体执行的动作,按时间发生的先后次序排序,构成进程,并用一个层状的Jackson结构图表示。(3)定义初始模型:把实体和动作表示成一个进程模型,定义模型与现实世界的联系。(4)功能描述:说明与已定义的动作相对应的功能,为已定义的动作加入功能函数。(5)决定系统时间特性:对进程加入时间因素,对进程调度特性进行评价和说明。(6)实现:设计组成系统的硬件和软件,实现系统的原型。16、 测试
22、阶段的信息流:这个阶段的输入信息有两类: (1)软件配置,包括需求说明书、设计说明书和源程序清单等; (2)测试配置,包括测试计划和测试方案。自顶向下集成:从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。在把附属于主控制模块的那些模块组装到程序结构中去时,或者使用深度优先的策略,或者使用宽度优先的策略。深度优先的结合方法先组装在软件结构的一条主控制通路上的所有模块。选择一条主控制通路取决于应用的特点,并且有很大任意性。而宽度优先的结合方法是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。集成测试的策略:当使用渐增方式把模块结合到程序中去时,有自顶向下和自底
23、向上两种集成策略。17、 决定软件可维护性的因素:可理解性;可测试性;可修改性;可移植性;可重用性;软件维护:是指在软件已经交付使用之后,为了改正错误或满足新的需要而修改软件的过程.软件维护是软件生命周期的最后一个阶段,也是持续时间最长代价最大的一个阶段。软件的可维护性可以定义为:维护人员理解,改正和改动软件的难易程度。18、 对象:是对现实世界实体的正确抽象,它是由描述内部状态表示静态属性的数据,以及可以对这些数据施加的操作,封装在一起所构成的统一体。对象之间通过传递消息互相联系,以模拟现实世界中不同事物彼此之间的联系。对象的特点:以数据为中心;对象是主动的;实现了数据封装;本质上具有并行性
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 大学 课程 软件工程 测试 xcb
限制150内