当前位置:文档之家› 软件工程基础知识点整理

软件工程基础知识点整理

软件工程基础知识点整理
软件工程基础知识点整理

软件工程基础知识点整理

1109070211 朱染晅土建112

一. 软件工程基本概念:

1.软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。

(1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。(2)数据是使程序能够正常操作信息的数据结构。

(3)文档是与程序开发、维护和使用有关的图文资料。

注:国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。

2.软件特点:

(1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分;

(2)软件的生产与硬件不同,它没有明显的制作过程;(3)软件在运行、使用期间不存在磨损、老化问题;(4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题;

(5)软件复杂性高,成本昂贵;

(6)软件开发涉及诸多的社会因素

3.软件分类:

按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

(1)应用软件是为解决特定领域的应用而开发的软件。如:教务管理系统、财务管理系统等。

(2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。如:操作系统、数据库管理系统等。

(3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。比如:编码工具软件、测试工具软件。

4.软件危机:

软件危机是指在软件的开发和维护过程中所遇到的一系列严重问题。

软件危机主要体现在以下几个方面:

①软件开发的实际成本和进度估计不准确

②开发出来的软件常常不能使用户满意

③软件产品的质量不高,存在漏洞,需要经常打补丁

④大量已有的软件难以维护

⑤软件缺少有关的文档资料

⑥开发和维护成本不断提高,直接威胁计算机应用的扩大

⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长

5.软件工程的定义和目的:

(1)定义:软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

(2)目的:研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。

(3)软件工程的三个要素:方法、工具和过程。

方法:完成软件工程项目的技术手段;

工具:支持软件的开发、管理、文档生成;

过程:支持软件开发的各个环节的控制、管理。

(4)核心思想:把软件产品看作是一个工程产品来处理。

二.软件工程概述:

1.软件生命周期:

(1)定义:将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。

(2)软件生命周期一般划分为定义、开发和维护3个阶段:定义阶段:可行性研究、需求分析2个阶段;

开发阶段:概要设计、详细设计、编码实现和测试4个阶段;维护阶段:使用、维护、退役阶段。

详解:a.软件定义阶段:包括制定计划和需求分析。

制定计划:确定总目标;可行性研究;探讨解决方案;制定

开发计划。

需求分析:对待开发软件提出的需求进行分析并给出详细的定义。

需求分析方法有:1)结构化需求分析方法;2)面向对象的分析方法。

需求分析的任务就是导出目标系统的逻辑模型,解决“做什么”的问题。

需求分析一般分为需求获取、需求分析、编写需求规格说明书和需求评审四个步骤进行。

b.软件开发阶段:

软件设计:分为概要设计和详细设计两个部分。

软件实现:把软件设计转换成计算机可以接受的程序代码。软件测试:在设计测试用例的基础上检验软件的各个组成部分。

c.软件运行维护阶段:软件投入运行,并在使用中不断地维护,进行必要的扩充和删改。

注:软件生命周期中所花费最多的阶段是软件运行维护阶段。

2.软件工程原则:抽象、信息隐蔽、模块化、局部化、确定性、一致性、完备性和可验证性。

3.软件工具与软件开发环境:

(1)软件工具就是帮助开发软件的软件。它们对提高软件

生产率,促进软件生产的自动化都有重要的作用。

(2)软件开发环境(或称软件工程环境)是全面支持软件开发全过程的软件工具的集合,这些软件工具按照一定的方法和模式组合起来,共同支持软件生命周期内的各个阶段和各项任务的完成。

三.软件设计基本概念:

软件工程过程—软件设计

目的:确定软件的总体结构、数据结构、用户界面和算法细节

任务:将需求阶段产生的软件需求说明转换为用适当手段表示的软件设计文档

软件设计分为总体设计和详细设计

四.软件设计的基本原理:

1.总体设计

目的:要解决的问题是“怎样实现目标系统”

任务:确定软件的总体结构,进行模块划分,确定每个模块的功能、接口及模块之间的调用关系,并对全局数据结构进行设计,同时产生概要设计说明书

2.详细设计

目的:要解决的问题是“应该怎样具体实现目标系统”

任务:在概要设计的基础上,设计每个模块实现的细节及对局部数据进行设计(包括模块的数据结构和所需的算法),同时产生详细设计说明书

3.软件编码

目的:产生能在计算机上执行的程序

任务:根据系统的要求和开发环境,选用合适的程序设计语言,把详细设计的结果翻译成用该程序设计语言编写的程序代码(源程序)

4.软件测试

软件测试是为了发现程序中的错误而执行程序的过程

目的和任务:通过在计算机上执行程序来尽可能多地发现软件产品中的错误和缺陷,并改正程序中的错误,以保证程序的可靠运行。

5.软件维护

软件维护阶段是长期的过程,因为,经过测试的软件还可能有错,用户的要求还会发生变化,软件运行的环境也可能变化等等。因此,交付使用的软件仍然需要继续排错、修改和扩充,这就是软件维护。

注:(1)软件维护的目的是满足用户对已开发产品的性能与运行环境不断提高的需要,进而达到延长软件的寿命。软件维护就是在软件交付使用之后,为了改正错误或满足新的需要而修改软件的过程。

(2)软件维护的类型有如下几种:

1)改正性维护:诊断和改进错误的过程(。

2)适应性维护:为与变化的环境适当地配合而进行的修改软件的活动。

3)完善性维护:为了满足用户提出的增加新功能或修改已有功能的建议而进行维护。

4)预防性维护:为了改进未来的可维护性和可靠性。

软件开发时期要完成设计和实现两大任务,其中设计任务用需求分析和软件设计两个阶段完成,实现任务用编码和测试两个阶段完成。

开发任务完成的好与坏,关系到软件产品的质量,完成开发任务的关键是选择好的软件开发方法。

目前,软件开发方法主要有结构化开发方法和面向对象开发方法。

五.结构化分析方法

1.结构化分析(简称SA)方法是面向数据流进行需求分析的方法。

该方法使用简单易读的符号,运用抽象的概念模型,根据软件内部数据传递、变换的关系,自顶向下逐层分解,描绘出满足功能要求的软件模型

2.结构化分析方法的常用工具:数据流图、数据字典、结

构化语言、判定树、判定表

3.SA的基本步骤如下:

①自顶向下对系统进行功能分解,画出分层的数据流图

②由后向前定义系统的数据和加工,编制数据字典和加工说明

③写出需求规格说明书(SRS)

4.数据流图

(1)数据流图是以图形的方式描绘数据在软件系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。

(2)数据流图由数据流、加工(又称数据处理)、数据存储(又称文件)、数据源点或终点四种基本成分组成。

(3)数据流图(简称DFD)图形元素:

①数据流:是数据在系统内传播的路径。使用箭头代表数据的流向,数据名称标在箭头的边上

②加工:输入数据经过加工变换产生输出。使用圆框代表加工

③数据存储:指处理过程中存放各种数据。使用双杠(或单杠)表示数据文件或数据库。文件与加工之间用箭头线连接,单向表示只读或只写,双向表示可读可写

④数据源点或终点:指软件系统外部环境中的实体(包括人员、组织或其他软件系统,统称为外部实体)。使用方框表

示数据的源点和终点

(4)建立数据流图的步骤

第一步:由外向里:先画系统的输入输出,然后画系统的内部。

第二步:自顶向下:顺序完成顶层、中间层、底层数据流图。第三步:逐层分解。

5.DFD图的数据流可分为两种类型:变换流和事务流

(1)变换流:信息沿着输入通路进入系统,同时将信息的外部形式转换成内部形式,通过变换中心处理之后,再沿着输出通路转换成外部形式输出

(2)事务流:信息沿着输入通路到达一个事务中心,事务中心根据输入信息的类型在若干个动作序列中选择一个来执行,这种信息流称为事务流

6.数据字典

数据字典就是用来定义数据流图中的各个成分的具体含义和详细的描述。它和数据流图共同构成了系统的逻辑模型,是需求规格说明书的主要组成部分。是结构化分析方法的核心。

数据字典是为分析人员查找数据流图中有关名字的详细定义而服务的。

数据字典有四类条目:数据流、数据项、数据存储和基本加工。

7.判定表举例

(1)年交易额在5万或5万以下,则不给予折扣;

(2)对于年交易额在5万以上时:

如果无欠款,则给予15%的折扣;

如果有欠款,而且与本公司的交易关系在20年以上,则折扣为10%;

如果有欠款,而且与本公司交易关系在20年以下,则折扣为5%。

8.软件需求规格说明书:

是需求分析阶段的最后成果,是软件开发中的重要文档之一。

作用:

1)作为用和开发人员之间的合同;

2)作为开发人员进行设计和编程的根据;

3)作为软件开发完成后验收的依据

9.结构化设计方法(简称SD)是实现软件概要设计的关键技术之一, SD方法是一种面向数据流的设计方法,它与SA方法衔接。

SD方法的中心任务就是把用DFD图表示的系统分析模型方便地转换为软件结构的设计模型。

SD方法采用结构图(简称SC)来描述程序的结构。结构图的基本成分有模块、调用和数据。

10.软件设计的基本原理包括:抽象、模块化、信息隐蔽和模块独立性。

1)抽象。抽象是一种思维工具,就是把事物本质的共同特性提取出来而不考虑其他细节。

2)模块化。解决一个复杂问题时自顶向下逐步把软件系统划分成一个个较小的、相对独立但又不相互关联的模块的过程。

注:模块是在程序中数据说明、可执行语句等程序对象的集合。

3)信息隐蔽。每个模块的实施细节对于其他模块来说是隐蔽的。

4)模块独立性。软件系统中每个模块只涉及软件要求的具体的子功能,而和软件系统中其他的模块的接口是简单的

模块的耦合性和内聚性是衡量软件的模块独立性的两个定性指标。

a.内聚性:是对模块功能强度的度量,即对一个模块内部各个元素(语句之间、程序段)间彼此结合的紧密程度的度量。

b.耦合性:是模块间互相连接的紧密程度的度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。

注:一个设计良好的软件系统应具有高内聚、低耦合的特征。在结构化程序设计中,模块划分的原则是:模块内具有高内聚度,模块间具有低耦合度。

软件设计有两个步骤:概要设计(总体设计)和详细设计(过程设计)。

(1)概要设计(又称结构设计)是将软件需求转化为软件体系结构、确定系统级接口、全局数据结构或数据库模式;(2)详细设计是确定每个模块的实现算法和局部数据结构,通过对结构表示进行细化,得到软件的详细数据结构和算法。

11.软件概要设计的基本任务是:

1)设计软件系统结构;

2)数据结构及数据库设计;

3)编写概要设计文档;

4)概要设计文档评审。

概要设计的图形工具:层次图、HIPO图和结构图

12.结构图是常用的软件结构设计工具,相关术语如下:

1深度:表示控制的层数。

2上级模块、从属模块:上、下两层模块a和b,且有a调用b,则a是上级模块,b是从属模块。

3宽度:整体控制跨度(最大模块数的层)的表示。

4扇入:调用一个给定模块的模块个数。

5扇出:一个模块直接调用的其他模块数。

6原子模块:树中位于叶子结点的模块。

13.详细设计的常用工具:

1.程序流程图(程序框图)

2.N-S图,也称盒图

3.PAD问题分析图

4、PDL过程设计语言

六.了里软件测试的目的和准则

1.软件测试就是保证软件质量的重要手段,其主要过程涵盖了整个软件生命周期的过程,包括需求定义阶段的需求测试、编码阶段的单元测试、集成测试以及后期的确认测试、系统测试、验证软件是否合格、能否交付给用户使用。

软件测试就是使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

2.软件测试的原则:

1)所有测试都应追溯到需求

2)严格执行测试计划,排除测试的随意性

3)避免由软件开发人员测试自己的程序,充分注意测试中的群集性现象

4)除了很小的程序外,“彻底”的穷举测试是不可能的

5)妥善保存测试计划、测试用例、出错统计和最终的分析报告,为维护提供方便

软件测试的每一次测试都需要准备好一些测试数据,与被测

程序一起输入到计算机中执行;

一般把程序执行一次需要的一组测试数据和该组测试数据可以得出怎样的输出结果(期望结果)称为一个“测试用例”,每一个测试用例产生一个相应的“测试结果”,如果它与“期望结果”不相符合,说明程序中存在错误,需要改正错误。

测试是对软件规格说明、设计和编码的最后的复审,所以软件测试贯穿在整个软件开发期的全过程。

七.软件测试的方法和实施

对于软件测试方法和技术,可以从不同的角度加以分类。从是否需要执行被测软件的角度,软件测试分为静态分析和动态测试

按照功能划分,动态测试又分为白盒测试和黑盒测试

静态测试一般是指人工评审软件文档或程序,借以发现其中的错误,由于被评审的文档或程序不必运行,所以称为静态的。

静态测试包括代码检查、静态结构分析、代码质量度量等。动态测试是指通过运行软件来检查软件中的动态行为和运行结果的正确性,也就是常说的上机测试。

动态测试一般包括两个基本要素:被测程序和测试数据

测试能否发现错误取决于测试用例的设计。

动态测试的设计测试用例的方法一般分为黑盒测试和白盒测试。

白盒测试也称结构测试,它与程序内部结构相关,要利用程序结构的实现细节设计测试用例,它涉及程序风格、控制方法、源程序、数据库设计和编码细节。

黑盒测试

是测试者已经知道被测程序的功能,而对程序内部的逻辑结构和处理过程完全不用考虑,只是对它的每一个功能进行测试,将测试后的结果与期望的结果进行分析比较,检查程序的功能是否符合规格说明书的要求。

黑盒测试是在程序接口进行的测试

测试用例设计

测试用例是由测试数据和期望结果组成。设计测试用例的目的就是用尽可能少的测试数据,达到尽可能大的程序覆盖面,发现尽可能多的软件错误和问题

用白盒法设计测试用例常用以下几种技术:

①语句覆盖

②判定覆盖

③条件覆盖

④判定/条件覆盖

⑤条件组合覆盖

⑥路径覆盖

用黑盒法设计测试用例常用以下几种技术:

①等价类划分法

②边界值分析法

③错误推测法

④因果图法

软件测试的实施

①单元测试:是对每一个编制好的模块进行测试,其目的在于发现和排除各模块内部可能存在的差错及详细设计中产生的错误。进行单元测试时,根据程序的内部结构设计测试用例,主要采用白盒测试法

软件测试的实施

②集成测试。是在单元测试的基础上,将所有模块按照设计要求组装成为系统而进行的测试,它的任务是检查模块间的接口和通信、各子功能的组合能否达到预期要求的功能、全程数据结构是否有问题等。集成测试主要发现设计阶段产生的错误,通常采用黑盒测试法

软件测试的实施

集成测试时,将各个模块组装成系统的方法有:

非增量组装方式是先分别对每个模块进行单元测试,再把所有模块按设计要求组装在一起进行测试,最终得到所要求的软件

增量组装方式是把下一个要测试的模块同已经测试好的那

些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试

软件测试的实施

③确认测试。确认测试是在集成测试通过后,在用户的参与下进行确认测试。这时通常使用实际数据进行测试,以验证系统是否能满足用户的实际需要。它的任务就是以需求规格说明书作为依据来验证软件的性能、功能及其他特征是否与用户的要求一致,通常采用黑盒测试

软件测试的实施

④系统测试。系统测试是在更大范围内进行的测试。系统测试是把通过确认测试后的软件与计算机硬件、外设、某些支持软件、数据和人员等结合在一起,在实际运行环境下,对计算机系统进行的一系列集成测试和确认测试

调试也称排错或纠错。

八.程序的调试

程序调试的任务:诊断和改正程序中错误。

软件测试贯穿整个生命周期,调试主要在开发阶段。

程序调试的基本步骤:

(1)错误定位;(2)纠正错误;(3)回归测试。

对软件主要的调试方法可以采用:

1)强行排错法。

2)回溯法。

3)原因排除法。

软件调试可分为静态调试和动态调试。

1.静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错。

2.动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错。

最新软件测评师考试基础知识名师精编资料汇编

软件评测基础知识 软件测试基本概念 软件质量与软件测试:软件测试是软件质量保证工作的一个重要环节。软件测试和软件质量保证是软件质量工程的两个不同层面的工作。软件测试只是软件质量保证工作中的一个重要环节。质量保证(QA)的工作是通过预防、检查与改进来保证软件的质量,它所关注的是软件质量的检查和测量。软件测试所关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。 软件测试定义:软件测试就是在软件投入运行前对软件需求分析、软件设计规格说明和软件编码进行的查错(包括代码执行活动与人工活动)。软件测试是为了发现错误而执行程序的过程。软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果),并利用这些测试用例去运行程序,以发现程序的错误。是在软件投入运行前,对软件需求分析、软件设计规格说明和软件编码的最终复审,是软件质量保证的关键步骤。 软件测试目的:(1)测试是一个为了寻找错误而运行程序的过程;(2)一个好的测试用例是指很可能找到迄今为止未发现的错误的用例;(3)一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。 软件测试的目标是能够以耗费最少时间与最小工作量找出软件系统中潜在的各种错误与缺陷。 测试只能证明程序中错误的存在,但不能证明程序中没有错误。 软件测试原则:(1)尽早地并不断地进行软件测试;(2)程序员或程序设计机构应避免测试自己设计的程序;(3)测试前应当设定合理的测试用例;(4)测试用例的设计不仅要有合法的输入数据,还要有非法的输入数据;(5)在对程序修改之后要进行回归测试;(6)充分注意测试中的群集现象;(7)妥善保留测试计划、全部测试用例、出错统计和最终分析报告,并把它们作为软件的组成部分之一,为软件的维护提供方便;(8)应当对每一个测试结果做全面检查;(9)严格执行测试计划,排除测试的随意性。 软件测试对象:软件的测试不仅仅是程序的测试,软件的测试应贯穿于整个软件生命同期中。在软件定义阶段产生的可行性报告、项目实施计划、软件需求说明书或系统功能说明书,在软件开发阶段产生的概要测试说明书、详细设计说明书,以及源程序等都是软件测试的对象。 软件测试过程模型:V模型、W模型、H模型。 软件测试模型的使用:在实际软件测试的实施过程中,应灵活地运用各种模型的优点,通常可以在W 模型的框架下,运用H模型的思想进行独立的测试。当有变更发生时,按X模型和前置模型的思想进行处理。同时,将测试和开发紧密结合,寻找恰当的就绪点开始测试,并反复进行迭代测试,以达到按期完成预定的目标。 软件问题分类:软件错误、软件缺陷、软件故障、软件失效。 软件测试类型: 按开发阶段分:单元测试、集成测试、确认测试(有效性测试)、系统测试 确认测试、验收测试 按测试实施组织分:开发方测试(验证测试或alpha测试)、用户测试(beta)、第三方测试(独立测试) 按测试方式分:动态测试、静态测试 按测试技术分:白盒测试、黑盒测试、灰盒测试 软件测试过程:用黑盒法设计基本的测试方案,再利用白盒法补充一些必要的测试方案。可以用以下策略结合各种方法: (1)在任何情况下都应该使用边界值分析的方法; (2)必要时用等价划分法补充测试方案; (3)必要时用错误推测法补充测试方案; (4)如果在程序的功能说明中含有输入条件的组合,最好在一开始就用因果图法,然后再按以上(1)、(2)、(3)步进行。 (5)对照程序逻辑,检查已设计出的设计方案。可以根据对程序可靠性的要求采用不同的逻辑覆盖标

软件测试技术知识点

一、软件测试的定义 软件测试是一个过程或一系列过程,用来确认计算机代码完成了其应该完成的功能,不执行其不该有的操作。 1.软件测试与调试的区别? (1)测试是为了发现软件中存在的错误;调试是为证明软件开发的正确性。 (2)测试以已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试一般是以不可知的内部条件开始,除统计性调试外,结果是不可预见的。 (3)测试是有计划的,需要进行测试设计;调试是不受时间约束的。 (4)测试经历发现错误、改正错误、重新测试的过程;调试是一个推理过程。(5)测试的执行是有规程的;调试的执行往往要求开发人员进行必要推理以至知觉的"飞跃"。 (6)测试经常是由独立的测试组在不了解软件设计的条件下完成的;调试必须由了解详细设计的开发人员完成。 (7)大多数测试的执行和设计可以由工具支持;调式时,开发人员能利用的工具主要是调试器。 2.对软件测试的理解?

软件测试就是说要去根据客户的要求完善它.即要把这个软件还没有符合的或者是和客户要求不一样的,或者是客户要求还没有完全达到要求的部分找出来。 (1)首先要锻炼自己软件测试能力,包括需求的分析能力,提取能力,逻辑化思想能力,即就是给你一个系统的时候,能够把整个业务流程很清晰的理出。 (2)学习测试理论知识并与你锻炼的能力相结合。 (3)想和做。想就是说你看到任何的系统都要有习惯性的思考;做就是把实际去做练习,然后提取经验。 总结测试用例,测试计划固然重要,但能力和思想一旦到位了,才能成为一名合格的软件测试工程师。 二、软件测试的分类 1.按照测试技术划分 (1)白盒测试:通过对程序内部结构的分析、检测来寻找问题。检查是否所有的结构及逻辑都是正确的,检查软件内部动作是否按照设计说明的规定正常进行。--结构测试 (2)黑盒测试:通过软件的外部表现来发现错误,是在程序界面处进行测试,只是检查是否按照需求规格说明书的规定正常实现。--性能测试 (3)灰盒测试:介于白盒测试与黑盒测试之间的测试。

天津理工大学-软件工程总结(红字是考点)分析解析

填空10个,选择10个,名词解释5个,简答题2个,画图题2个 第一章 一、FAQs about software engineering软件工程中常见的问题 1、software:Computer programs and associated documentation 软件是计算机程序和所有使程序正确运行所需要的相关文档和配置信息 Software products软件产品分为:Generic通用、Bespoke (custom)定制 2、Software engineering is an engineering discipline that is concerned with all aspects of software production.软件工程是一门工程学科,涉及软件生产的各个方面 Software engineers should adopt a systematic and organised approach 软件工程人员运用的是系统的、有组织的工作方法。 3、difference between software engineering and computer science:系统工程和计算机科学的区别:Software engineering is an engineering discipline that is concerned with all aspects of software production.计算机科学侧重于理论和基础,而软件工程侧重于软件开发和交付的实际活动。 4、the difference between software engineering and system engineering: 软件工程和系统工程的区别:System engineering is concerned with all aspects of computer-based systems development including hardware, software and process engineering. Software engineering is part of this process系统工程侧重基于计算机系统开发的所有方面,包括硬件、软件和处理工程。软件工程只是它的一部分。 5、software process :A set of activities whose goal is the development or evolution of software. 软件工程是以软件开发和进化为目的的一系列活动 Generic activities in all software processes:软件过程的基本活动 a)Specification 软件描述 b)Development 软件开发 c)Validation软件有效性验证 d)Evolution 软件进化 6、software process model:软件过程模型 A simplified representation of a software process, presented from a specific perspective. 从特定角度提出的软件过程的简化表示形式 Examples of process perspectives are ?Workflow perspective 工作流模型 ?Data-flow perspective 数据流或活动模型 ?Role/action perspective角色/动作模型 Generic process models 通用过程模型 ?Waterfall瀑布型开发方法 ?Iterative development迭代式开发方法 ?Component-based software engineering(CBSE)基于组件的软件工程 7、the costs of software engineering软件工程的成本 Roughly 60% of costs are development costs, 40% are testing costs. For custom software, evolution costs often exceed development costs. 软件开发成本约占60%,测试成本占40%。 对于定制软件而言,进化成本常常高于开发成本。 8、software engineering methods软件工程方法: Structured approaches to software development which include system models, notations, rules, design advice and process guidance.软件开发的结构化研究方法,包括:系统模型、标记

软件测试基本知识

软件测试基本知识 1、测试的定义 软件测试是软件工程过程的一个重要阶段,是在软件发布前对软件开发各阶段产品的最终检查,是为了保证软件开发产品的正确性、完全性和一致性而检测软件错误、修正软件错误的过程。 软件测试是: ①程序测试是为了发现错误而执行程序的过程; ②测试是为了证明程序有错,而不是证明程序无错误; ③一个好的测试用例是在于它能发现至今未发现的错误; ④一个成功的测试是发现了至今未发现的错误的测试。 软件开发的目的是开发出实现用户需求的高质量、高性能的软件产品,而软件测试是以检查软件功能和其他非功能特性为核心,是软件质量保证的关键,也是成功实现软件开发目标的重要保障。 2、测试的种类 从测试方法角度,测试分为: 1.黑盒测试:是功能测试、数据驱动测试或基于规格说明的测试。在不考虑程序内部结构和内部特性的情况下,测试者依据该程序功能上的输入输出关系,或是程序的外部特性来设计和选择测试用例,推断程序编码的正确性。 2.白盒测试:是结构测试、逻辑驱动测试或基于程序的测试。测试者熟悉程序的内部结构,依据程序模块的内部结构来设计测试用例,检测程序代码的正确性 从测试发生的时间顺序,测试分为: 1.单元测试:是对软件基本单元的测试 2.集成测试:对由个模块组装而成的系统进行测试,检查各模块间的接口和通信 3.验收测试:验证软件的功能和性能及其它特性是否与用户的要求一致。 4.系统测试:是将通过验收测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列确认测试。系统测试的目的在于通过与系统的需求定义作比较,发现软件与系统的定义不符合或与之矛盾的地方。 在MSF中,测试分为2大类:

软件工程知识点总结

软件工程(简要知识点) 一、. 软件过程五个模型对比(瀑布模型、快速原型、增量、螺旋、喷泉模型) 二、可行性研究: 1、任务:用最小的代价在尽可能短的时间内确定问题是否能够解决。 2、四个方面:技术、经济、操作可行性、法律 3、数据流图四种成分:1、源点/终点2、处理3、数据存储 4、数据流 三、需求分析: 1、任务:确定系统必须完成哪些工作,对目标系统提出完整、清晰、具体的要求。 2、结构化方法就是面向数据流自顶向下逐步求精进行需求分析的方法。 3、实体联系图:1、数据对象2、属性3、联系(1:1、1:N、M:N) 四、总体设计: 1.任务:回答“概括的说,系统应该如何实现”,用比较抽象概括的方式确定系统如何完成预定的任务,也就是说应该确定系统的物理配置方案,并且进而确定组成系统的每个程序结构。 2.系统设计阶段(确定系统具体实施方案)、结构设计阶段(确定软件结构) 3.模块独立:内聚和耦合 4. 耦合表示一个软件结构内各个模块之间的互连程度,应尽量选用松散耦合的系统

5. 内聚(Cohesion): 一个模块内各元素结合的紧密程度 6.面向数据流的设计方法:变换流和事务流 五、详细设计: 1.任务:确定应该怎样具体的实现所要求的系统,也就是说经过这个阶段的设计工作应该得出对目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。 2.过程设计的工具(程序流程图、盒图、PAD图、判定表、判定树) 七、测试: 1、单元测试:又称模块测试。每个程序模块完成一个相对独立的子功能,所以可以对该模块进行单独的测试。由于每个模块都有清晰定义的功能,所以通常比较容易设计相应的测试方案,以检验每个模块的正确性。 2、集成测试: 在单元测试完成后,要考虑将模块集成为系统的过程中可能出现的问题,例如,模块之间的通信和协调问题,所以在单元测试结束之后还要进行集成测试。这个步骤着重测试模块间的接口,子功能的组合是否达到了预期要求的功能,全程数据结构是否有问题等。 3、白盒测试技术(逻辑覆盖、基本路经测试)

软件测试基础知识汇总

黑盒测试主要是为了发现以下错误: 1、是否有不正确或遗漏的功能? 2、在接口上,输入能否正确地接受?能否输出正确的结果? 3、是否有数据结构错误或外部信息(例如数据文件)访问错误? 4、性能上是否满足要求? 5、是否有初始化或终止性错误? 黑盒测试用例方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交实验设计法、功能图法。 等价类划分法:把程序的输入域划分为若干部分,然后从每个部分中选取少数代表性数据作为测试用例,每一类的代表性数据在测试的作用等价于这一类中的其他值。 边界值分析法:对输入或输出的边界值进行测试,通常边界值分析法是作为等价类划分的补充,其测试用例来自等价类的边界。 错误分析法:基于经验和直觉推测程序中可能存在的错误,从而对有针对性的设计测试用例的方法。 因果图法:利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。 判定表驱动法:判定表是分析和表达多逻辑条件下执行不同操作的。 正交实验法:从大量的数据中挑选适量的,有代表性的点,从而合理地安排实验的一种科学测试方法。 功能图法:由状态迁移图和布尔函数组成,状态迁移图用状态和迁移来描述,一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变,同时要依靠判定表或因果图表示的逻辑功能。 折叠LR函数: lr_start_transaction 为性能分析标记事务的开始 lr_end_transaction 为性能分析标记事务的结束 lr_rendezvous 在Vuser 脚本中设置集合点 lr_think_time 暂停Vuser 脚本中命令之间的执行 lr_end_sub_transaction 标记子事务的结束以便进行性能分析

软件工程基础知识点总结

软件工程基础部分知识点总结 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素 3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件)

1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。 1)研究软件工程的主要目的就是在规定的时间、规定的开发费用内开发出满足用户需求的高质量的软件系统(高质量是指错误率低、好用、易用、可移植、易维护等)。 2)软件工程的三个要素:方法、工具和过程。 ①方法:完成软件工程项目的技术手段;

软件工程知识点汇总

软件工程知识点汇总 1 软件工程、软件工程方法学:三要素 1.1 软件工程:○1应用系统化的、规范化的、可度量的方法来开发、运行和维护软件,即将工 程应用到软件;○2对○1的各种方法的研究 1.2 软件工程是一门研究用工程化方法构建和维护有效的实用的和高质量的软件的学科 1.3 软件工程三要素是:方法、工具、过程 软件工程的方法:是指完成软件开发各项任务的技术方法 软件工具:是指为软件工程方法的运用提供自动半自动的软件支撑环境 软件工程过程:是指将软件工程方法和工具综合起来以达到合理、及时地进行计算机软件开发这一目的 2 软件工程的原则包括:模块化原则、信息隐蔽原则、抽象化原则、模块独立原则(内聚、耦合)、 依赖倒转原则、开闭原则等 2.1 模块化原则:指解决一个复杂问题时自顶向下逐层把软件系统划分为若干模块的过程。模 块是程序中相对独立的成分,一个独立的编程单位,应有良好的编程接口,模块的大小要 适中,模块过大会使模块内部的复杂性增加不利于模块的理解和修改,模块过小会导致整 个系统表示过于复杂,不利于控制系统的复杂性。 2.2 信息隐蔽原则:采用封装技术,将程序模块的实现细节隐藏起来,使模块接口尽量简单。 2.3 抽象化原则:抽取事物最基本的特性和行为,忽略非本质细节,采用分层次抽象,自顶向 下,逐层细化的办法控制软件开发过程的复杂性。 2.4 模块独立原则:是指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少 且接口简单。要求在一个物理模块内集中逻辑上相互关联的计算机资源,保证模块间由松 散的偶合关系,模块内部有较强的内聚性,这有助于控制系统的复杂性。(即:高内聚低 耦合) 2.5 依赖倒转原则:抽象不应该依赖于细节,细节应该依赖于抽象。 2.6 开闭原则:软件实体应该是可扩展的,但是不可以修改。即对于扩展是开放的,对于更改 是封闭的。 3 软件开发模型:瀑布模型;快速原型;喷泉模型;各种模型的工作原理、阶段、每阶段任务、 特点、示意图; 软件开发模型(也称为软件过程模型):是从软件项目需求定义开始直至软件经使用后废弃为止,跨 越整个生命周期的系统开发、运行和维护所实施的全部过程、活动和任务的结构框架 3.1 瀑布模型(又称线性模型): 3.1.1工作原理:规定了它们自上而下、相互衔接的固定次序,如同瀑布流水,逐级下落。 前一阶段的工作成果是后一阶段工作开始的基础.所以,每个阶段都必须交出合格的文档,必须对前阶段的工作进行评审,前一阶段的工作完成后才可以开始后一阶段的工作 3.1.2 阶段: 计划时期:问题定义、可行性研究 开发时期:需求分析、设计、编码、测试 运行时期:运行和维护 3.1.3 各阶段任务: 1.需求分析和定义 在软件项目进行过程中,需求分析是从软件定义到软件开发的关键步骤,是今后软件,开发的基本依据,同时也是用户对软件产品进行验收的基本依据。需求分析和定义是以用

软件测试基础知识整理

软件测试基础教程 测试是软件生存周期中十分重要的一个过程,是产品发布、提交给最终用户前的稳定化阶段。 一、测试的分类: 从测试方法的角度分为: (1)手工测试:不使用任何测试工具,根据事先设计好的测试用例来运行系统,测试各功能模块。 (2)自动化测试:利用测试工具,通过编写测试脚本和输入测试数据,自动运行测试程序。目前最常用的自动化测试工具是基于GUI的自动化测试工具,基本原理都是录制、回放技术。 > 从整体的角度分为: (1)单元测试:是针对软件设计的最小单位—程序模块,进行正确性检验的测试工作。一般包括逻辑检查、结构检查、接口检查、出错处理、代码注释、输入校验、边界值检查。单元测试的依据是系统的详细设计;一般由项目组开发人员自己 完成。 (2)集成测试:在单元测试的基础上,将所有模块按照设计要求组装进行测试。一般包括逻辑关系检查、数据关系检查、业务关系检查、模块间接口检查、外部接口检查。 (3)系统测试:系统测试是在所有单元、集成测试后,对系统的功能及性能的总体测试。 (4)确认测试:模拟用户运行的业务环境,运用黑盒测试方法,验证软件系统是否满足用户需求或软件需求说明书中指明的软件特性(功能、非功能)上的。 从测试原理上分为: . (1)白盒测试:是通过程序的源代码进行测试而不使用用户界面。这种类型的测试需要从代码句法发现内部代码在算法,溢出,路径,条件等等中的缺点或者错误,进而加以修正。 (2)黑盒测试:是通过使用整个软件或某种软件功能来严格地测试,而并没有通过检查程序的源代码或者很清楚地了解该软件的源代码程序具体是怎样设计的。测试人员通过输入他们的数据然后看输出的结果从而了解软件怎样工作。在测试时, 把程序看作一个不能打开的黑盆子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它 只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收和正确的输出。 黑盒测试方法主要有等价类划分、边界值分析、因—果图、错误推测法。 A、等价类划分:是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子 集中选取少数具有代表性的数据作为测试用例。该方法是一种重要的,常用的黑盒测试 用例设计方法。 B、边界值分析:长期的测试工作经验告诉我们,大量的错误是发生在输入或输出范围的边界上,而不是 发生在输入输出范围的内部。因此针对各种边界情况设计测试用例,可以查出更多的错 误。 C、错误推测法:基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的 方法。错误推测方法的基本思想:列举出程序中所有可能有的错误和容易发生错误的特 殊情况,根据他们选择测试用例。例如,在单元测试时曾列出的许多在模块中常见的 错误。以前产品测试中曾经发现的错误等,这些就是经验的总结。还有,输入数据 和输出数据为0的情况。输入表格为空格或输入表格只有一行。这些都是容易发生错 误的情况。可选择这些情况下的例子作为测试用例。

软件测试基础知识总结

一、什么是软件测试? 1979年,myer:软件测试就是为了发现错误而执行程序或系统的过程。 1983年,IEEE:软件测试即使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。 二、现代软件测试活动的内容? 制定测试计划、设计测试用例、实施测试、提交缺陷报告、测试总结 三、软件测试的目的? GrenfordJ.Myers在《The Art of Software Testing》一书中的观点: 1、测试是程序的执行过程,目的在于发现错误 2、一个成功的测试用例在于发现至今未发现的错误 3、一个成功的测试是发现了至今未发现的错误的测试 简单的说,测试的根本目的就是确保最终交给用户的产品符合用户的需求,在产品交给用户之前尽可能多的发现并改正问题。 四、测试一般要达到的目标? 确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明; 确保产品满足性能和效率的要求; 确保产品是健壮的和适应用户环境的。 五、软件测试分类? 1、按测试策略分类: a静态测试与动态测试 静态测试 定义:不运行被测程序本身而寻找程序代码中可能存在的错误或评估程序代码的过程。 Ps:通过分析或检查源程序的文法、结构、过程、接口等来检验程序的正确性,找出缺陷和可疑之处,例如不匹配的参数、不适当的分支嵌套和循环嵌套、未使用过的变量、空指针的引用等;可采用人工和软件工具进行;静态测试工具的代表:telelogic公司的logiscope 软件、PR公司的PRQA软件等。 静态测试特点: 不必动态地运行程序,也不必进行测试用例设计和结果判断等工作; 可由人工进行,充分发挥人得逻辑思维优势; 不需要特别的条件,容易展开。 静态测试要点: 代码审查(code inspection或code review)、代码走查(walkthrough)、桌面检查、技术评审(软件需求分析和设计评审)、静态分析(使用软件工具,包括控制流分析、数据流分析、接口分析和表达式分析) 动态测试 定义:实际运行被测程序,输入相应的测试实例,检查运行结果和预期结果的差异,判断执行结果是否符合要求,从而检验程序的正确性、可靠性和有效性,并分析系统运行效率和健壮性等性能。 组成:构造测试实例、根据测试实例运行程序、分析程序的输出结果。 主要方法:黑盒测试和白盒测试。 动态测试特点: 实际运行被测试程序,取得程序运行的真实情况、动态情况,并进行分析; 必须生成测试数据来运行程序,测试质量依赖于测试数据;

软件工程知识点总结

软件工程知识点总结 软件工程专业是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。接下来是为大家收集的软件工程知识点总结,以供大家学习! 知识点一软件工程的基本概念 1、软件定义:是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。 1)程序是软件开发人员根据用户需求开发的、用程序设计语言描述的、适合计算机执行的指令(语句)序列。 2)数据是使程序能够正常操作信息的数据结构。 3)文档是与程序开发、维护和使用有关的图文资料。 国标(GB)计算机软件的定义:与计算机系统的操作相关的计算机程序、规程、规则以及可能有的文件、文档及数据。 2、软件特点: 1)软件是一种逻辑实体,而不是物理实体,具有抽象性,是计算机的无形部分; 2)软件的生产与硬件不同,它没有明显的制作过程; 3)软件在运行、使用期间不存在磨损、老化问题; 4)软件的开发、运行对计算机系统具有依赖性,受计算机系统的限制,这导致了软件移植的问题; 5)软件复杂性高,成本昂贵; 6)软件开发涉及诸多的社会因素

3、软件的分类: 按照功能可以分为:应用软件、系统软件、支撑软件(或工具软件) 1)应用软件是为解决特定领域的应用而开发的软件。 2)系统软件是计算机管理自身资源,提高计算机使用效率并为计算机用户提供各种服务的软件。 3)支撑软件是介于系统软件和应用软件之间,协助用户开发软件的工具软件。 4、软件危机:是指在软件的开发和维护过程中所遇到的一系列严重问题。软件危机主要体现在以下几个方面: ①软件开发的实际成本和进度估计不准确 ②开发出来的软件常常不能使用户满意 ③软件产品的质量不高,存在漏洞,需要经常打补丁 ④大量已有的软件难以维护 ⑤软件缺少有关的文档资料 ⑥开发和维护成本不断提高,直接威胁计算机应用的扩大 ⑦软件生产技术进步缓慢,跟不上硬件的发展和人们需求增长 5、软件工程:此概念的出现源自软件危机。软件工程是指应用计算机科学、数学及管理科学等原理,以工程化的原则和方法来开发与维护软件的学科。

软件工程师考试大纲

一、考试说明 1.考试要求: (1) 掌握数据表示、算术和逻辑运算; (2) 掌握相关的应用数学、离散数学的基础知识; (3) 掌握计算机体系结构以及各主要部件的性能和基本工作原理; (4) 掌握操作系统、程序设计语言的基础知识,了解编译程序的基本知识; (5) 熟练掌握常用数据结构和常用算法; (6) 熟悉数据库、网络和多媒体的基础知识; (7) 掌握C程序设计语言,以及C++、Java、Visual、Basic、Visual C++中的一种程序设计语言; (8) 熟悉软件工程、软件过程改进和软件开发项目管理的基础知识; (9) 熟悉掌握软件设计的方法和技术; (10) 掌握常用信息技术标准、安全性,以及有关法律、法规的基本知识; (11) 了解信息化、计算机应用的基础知识; (12) 正确阅读和理解计算机领域的英文资料。 2.通过本考试的合格人员能根据软件开发项目管理和软件工程的要求,按照系统总体设计规格说明书进行软件设计,编写程序设计规格说明书等相应的文档,组织和指导程序员编写、调试程序,并对软件进行优化和集成测试,开发出符合系统总体设计要求的高质量软件;具有工程的实际工作能力和业务水平。 3.本考试设置的科目包括: (1) 计算机与软件工程知识,考试时间为150分钟,笔试; (2) 软件设计,考试时间为150分钟,笔试。

二、考试范围 考试科目 1.计算机科学基础 1.1 数制及其转换 二进制、十进制和十六进制等常用制数制及其相互转换 1.2 数据的表示 数的表示(原码、反码、补码、移码表示,整数和实数的机内表示,精度和溢出)非数值表示(字符和汉字表示、声音表示、图像表示) 校验方法和校验码(奇偶校验码、海明校验码、循环冗余校验码) 1.3 算术运算和逻辑运算 计算机中的二进制数运算方法 逻辑代数的基本运算和逻辑表达式的化简 1.4 数学基础知识 命题逻辑、谓词逻辑、形式逻辑的基础知识 常用数值计算(误差、矩阵和行列式、近似求解方程、插值、数值积分) 排列组合、概率论应用、应用统计(数据的统计分析) 运算基本方法(预测与决策、线性规划、网络图、模拟) 1.5 常用数据结构 数组(静态数组、动态数组)、线性表、链表(单向链表、双向链表、循环链表)、队列、栈、树(二叉树、查找树、平衡树、线索树、线索树、堆)、图等的定义、存储和操作 Hash(存储地址计算,冲突处理)

软件工程期末复习知识点整理

复习整理 、绪论 1. 软件的定义 软件是能够完成预定功能和性能的可执行的计算机程序,包括使程序正常执行所需要的数据,以及有关描述程序操作和使用的文档。(软件=程序+文档) 2.软件工程的定义 是指导计算机软件开发和维护的一门工程学科;采用工程化的原理与方法对软件进行计划、开发和维护;把证明正 确的管理技术和最好技术综合运用到软件开发中;研究经济地开发岀高质量的软件方法和技术;研究有效维护软件 的方法和技术。 3.软件危机的概念,及出现的原因 软件开发技术的进步未能满足发展的要求。在软件开发中遇到的问题找不到解决的办法,问题积累起来,形态尖锐的矛盾,导致了软件危机。 产生原因: ⑴软件规模越来越大,结构越来越复杂 ⑵软件开发管理困难而复杂。 ⑶软件开发费用不断增加。 ⑷软件开发技术落后。 ⑸生产方式落后,仍采用手工方式。 ⑹开发工具落后,生产率提高缓慢。 4.三种编程范型的特点 (1)过程式编程范型:把程序理解为一组被动的数据和一组能动的过程所构成;程序=数据结构 +算法;着眼于程序的过程和基本控制结构,粒度最小 (2)面向对象编程范型:数据及其操作被封装在对象中;程序=对象+消息;着眼于程序中的对 象,粒度比较大 (3)基于构件技术的编程范型:构件是通用的、可复用的对象类;程序=构件+架构;眼于适合 整个领域的类对象,粒度最大 二、软件生存周期与软件过程 1、软件生存周期的定义,把生存周期划分为若干阶段的目的是什么,有哪几个主要活动 定义:一个软件从开始立项起,到废弃不用止,统称为软件的生存周期 目的:软件生存周期划分为计划、开发和运行3个时期;把整个生存周期划分为较小的阶段, 给每个阶段赋予确定而有限的任务,就能够化简每一步的工作内容,使因为软件规模而增长而大大增加了软件复杂性变得较易控制和管理。 主要活动:需求分析、软件分析、软件设计、编码、软件测试、运行维护( P19) 2、软件生命周期划分为哪几个阶段 软件生命周期分为三个时期八个阶段: 软件定义:问题定义、可行性研究; 软件开发:需求分析、概要设计、详细设计、编码、测试; 软件运行:软件维护

软件测试必备基础知识

软件测试必备基础知识 一、基本概念 软件测试 在规定条件下对程序进行操作,以发现错误,对软件质量进行评估,包括对软件形成 过程的文档、数据以及程序进行测试 软件测试的目的 发现程序中存在的错误发现程序中存在的错误,而不是证明程序无错误。一个好的测试用例在于它能发现至今尚未发现的错误。一个成功的测试则是发现了至今未发现的错误。开始我们认为做测试无非是为了证明我们编的程序是无错误的,那是大错特错了。因为bug会因时间不同,条件不同而出现。永远无法证明我们的程序是绝对正确的。 为反馈信息做准备为开发者或软件项目经理提供反馈信息,以及为风险评估所准备的信息 软件测试的原则 所有的测试都应追溯到用户需求。因为软件的目的是使用户完成预定的任务,满足其 需求,而软件测试揭示软件的缺陷和错误,一旦修正这些错误就能更好地满足用户需求。 应尽早地和不断地进行软件测试。由于软件的复杂性和抽象性,在软件生命周期各阶 段都可能产生错误,所以不应把软件测试仅仅看作是软件开发的一个独立阶段,而应当把 它贯穿到软件开发的各个阶段去。在需求分析和设计阶段就应开始进行测试工作,编写相 应的测试计划及测试设计文档,同时坚持在开发各阶段进行技术评审和验证,这样才能尽 早发现和预防错误,杜绝某些缺陷和错误,提高软件质量,测试工作进行得越早,越有利 于提高软件的质量,这是预防性测试的基本原则。 在有限的时间和资源下进行完全测试,找出软件所有的错误和缺陷是不可能的,软件 测试不能无限进行下去,应适时终止。因为,测试输入量大、输出结果多、路径组合太多,用有限的资源来达到完全测试是不现实的。

测试只能证明软件存在错误而不能证明软件没有错误。测试是无法显示潜在的错误和缺陷,继续进一步错误可能还会找到其它错误和缺陷。 充分关注测试中的集群现象。在测试的程序段中,若发现的错误数目多,则残存在其中的错误也越多,因此应当花较多的时间和代价测试那些具有更多错误数目的程序模块。 程序员应避免检查自己的程序。考虑到人们的心理因素,自己揭露自己程序中的错误是件不愉快的事,自己不愿意否认自己的工作;另一方面,由于思维定势,自己难以发现自己的错误。因此,测试一般由独立的测试部门或第三方机构进行。 尽量避免测试的随意性。软件测试是有组织、有计划、有步骤的活动,要严格按照测试计划进行,要避免测试的随意性。 软件测试对象 程序开发过程中的各个文档、源程序、目标程序及数据 软件测试的模型 V模型 从左到右,描述了基本的开发过程和测试行为,非常明确地标明了测试过程中存在的不同级别,并且清楚地描述了这些测试阶段和开发过程期间各阶段的对应关系。 左边依次下降的是开发过程各阶段,与此相对应的是右边依次上升的部分,即各测试过程的各个阶段。 V模型问题: "测试是开发之后的一个阶段,"测试的对象就是程序本身。 "实际应用中容易导致需求阶段的错误一直到最后系统测试阶段才被发现。 "整个软件产品的过程质量保证完全依赖于开发人员的能力和对工作的责任心,而且上一步的结果必须是充分和正确的,如果任何一个环节出了问题,则必将严重的影响整个工程的质量和预期进度 W模型相对于V模型,W模型更科学。W模型是V模型的发展,强调的是测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、功能和设计同样要测试。测试与开发是同步进行的,从而有利于尽早地发现问题。 W模型也有局限性。W模型和V

软件工程基础知识题库1-0-8

软件工程基础知识题 库1-0-8

问题: [单选]程序员需要用文档来表述自己的思想。文档设计的要点不包括()。 A.文档制作应先做规划,列出纲目,内容的逻辑性要强,并不断改进 B.选择最适合表达某种算法的形式(文本、表格、图) C.尽量保持文档与程序的一致性,文档上下文的4致性 D.采用文档模板以减少以后随软件版本的升级而更新文档的工作量 文档编制要求具有针对性、精确性、清晰性、完整性、灵活性、可追溯性。

问题: [单选]以下关于子类和父类的叙述中,正确的是()。 A.代码中使用父类对象的地方,都可以使用子类对象替换 B.代码中使用子类对象的地方,都可以使用父类对象替换 C.父类定义的对象与子类定义的对象在属性和方法上一定相同 D.父类定义的对象与子类定义的对象在属性和方法上一定不同 一个子类可以继承其父类(或祖先类)中的属性和操作,这些属性和操作在子类中不必定义,子类中还可以定义自己的属性和操作。

问题: [单选]以下关于类和对象的叙述中,正确的是()。 A.由类生成的对象数目可以是0,1,2,… B.由类生成的对象数目一定是1 C.由类生成的对象数目一定不少于1 D.由类生成的对象数目一定不少于2 静态类可以不生成对象,而直接使用属性方法,但是一般的类要创建对象才可以调用属性和方法。出处:飞禽走兽老虎机 https://https://www.doczj.com/doc/c516012004.html,/;

问题: [单选]以下关于面向对象分析与设计叙述中,正确的是()。 A.面向对象分析的结果适合采用C++语言表达 B.面向对象分析的结果适合采用汇编语言表达 C.面向对象设计的结果适合采用UML(UnifiedModelingLanguagE.表达 D.面向对象设计的结果适合采用DFD(DataFlowDiagram)表达 20世纪80年代以后相继出现了多种面向对象分析和设计的方法,较为流行的有Booch方法、Coad和Yourdon方法、Jocobson方法。20世纪90年代出现了统一建模语言(UnifiedModelingLanguage,UML),以其简单、统一,又能够表达软件设计中的动态和静态信息,成为可视化建模语言事实上的工业标准。

软件测试基础知识

软件测试基础知识(摘自《软件评测师教程》) 什么是软件测试? RE:“软件测试”的经典定义是在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。 什么是软件质量? RE:在1991年软件产品质量评价国际标准ISO 9126中定义的“软件质量”是:软件满足规定或潜在用户需求特性的综合。 到1999年,软件“产品评价”国际标准ISO 14598经典的“软件质量”定义是:软件特性的总和,软件满足规定或潜在用户需求的能力。 软件测试的目的是什么? RE:测试的目的,是想以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。 同时,测试是以评价一个程序或者系统属性为目标的活动,测试是对软件质量的度量与评估,以验证软件的质量满足用户的需求的程度,为用户选择与接受软件提供有力的依据。 软件测试的原则是什么? RE:A 所有的软件测试都应追溯到用户需求。 B 应当把“尽早地和不断地进行软件测试”作为软件测试者的座右铭。 C 完全测试是不可能的,测试需要终止。 D 测试无法显示软件潜在的缺陷。 E 充分注意测试中的群集现象。 F 程序员应避免检查自己的程序。 G 尽量避免测试的随意性。 什么是黑盒测试? RE:黑盒测试也称功能测试,它是通过测试来检测每个功能是否都能正常使用。 黑盒测试法注重于测试软件的功能需求,主要试图发现下列积累错误::. A 功能不正确或遗漏; B 界面错误; C 数据库访问错误; D 性能错误; E 初始化和终止错误。 什么是测试用例? RE:测试用例就是设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。测试用例是将测试行为具体量化的方法之一。 使用测试用例的好处是什么? RE:A 在开始实施测试之前设计好测试用例,可以避免盲目测试并提高测试效率。 B 测试用例的使用令软件测试的实施重点突出、目的明确。 C 在软件版本更新后只需修正少部分的测试用例便可展开测试工作,降低工作强度,缩短项目周 期。 D 功能模块的通用化和复用化使软件易于开发,而测试用例的通用化和复用化则会使软件测试易 于开展,并随着测试用例的不断精化其效率也不断攀升。

软件工程基础知识测试

1. 选择连续的对象,单击第一个对象后,可按住( )键,并单击( ),则所有连续对象全部选中( )。 A.shift,第一个对象 B.shift,最后一个对象 C.shift,随便一个对象 D.alt,最后一个对象 2.要在Excel单元格中输入数字字符,例如学号“09140202”,下列输入正确的是() A.“09140202” B. =09140202 C. 09140202 D. ’09140202 3. WWW浏览器使用的应用协议是( )。 A.HTTP B.TCP/IP C.FTP D.Telnet 4. 以下程序运行时输出结果是 ( ) 。 #include #define M 3 #defme N M+1 #define NN N*N/2 main() . {printf("%d\n",NN);} A.8 B.7 C.6 D.5 5.从第一代计算机到第四代计算机的体系结构都是相同的,都是由运算器、控制器、存储器以及输入输出设备组成的。这种体系结构称为( )体系结构。 A.艾伦.图灵 B. 罗伯特.诺依斯 C. 比尔.盖茨 D. 冯.诺依曼 6.以下程序运行时输出结果是( ) 。 #include void f(int a[],int n,int x,int *c); int main() { int a[10]={1,3,5,2,3,5,3,7,4,1},t=0; f(a,10,5,&t); printf("%d",t); return 0; } void f(int a[],int n,int x,int *c) { if(n==0) return; if(a[0]>=x) (*c)++; f(a+1,n-1,x,c);}

相关主题
文本预览
相关文档 最新文档