软件工程复习

发布 2022-01-11 22:41:28 阅读 2164

一、 理论部分。

1、 软件测试的目的?

软件测试是一个为了寻找软件错误而运行程序的过程。目的就是为了发现软件中的错误。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。

一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。软件测试主要分为白盒测试和黑盒测试两大类。

2、 软件测试方案?(根据**,测试方案)p198

黑盒测试也称为功能测试,它着眼于程序的外部特征,而不考虑程序的内部逻辑结构。测试者把被测程序看成一个黑盒,不用关心程序的内部结构。黑盒测试是在程序接口处进行测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。

黑盒测试主要采用的技术有:等价分类法、边界值分析法、错误推测法和因果图等技术。

等价分类法的测试技术采用的一般方法,举例:

1) 为每个等价类编号;

2) 设计一个新的测试方案,以尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步骤,直到所有有效等价类被覆盖为止。

3) 设计一个新的测试方案,使它覆盖一个尚未被覆盖的无效等价类, 重复这一步骤,直到所有无效等价类被覆盖为止。

白盒测试也称为结构测试,测试者了解被测程序的内部结构和处理过程,对程序的所有逻辑路径进行测试,在不同点检查程序状态,确定实际状态与预期状态是否一致。

白盒测试主要采用的技术有:逻辑覆盖法。

路径测试技术中几种主要覆盖的含义,举例:

语句覆盖:至少执行程序中所有语句一次。

判定覆盖:使被测程序中的每一个分支至少执行一次。故也称为分支覆盖。

条件覆盖:执行所有可能的穿过程序的控制路流程。

条件组合测试:设计足够的测试用例,使每个判定中的所有可能条件取值组合至少执行一次。

软件测试的一般步骤?

单元测试、子系统测试、系统测试、验收测试、平行测试。

3、 软件测试的技术、方法?

软件测试方法一般分为两大类,动态测试方法与静态测试方法。

静态测试指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

动态测试指通过运行程序发现错误,分为黑盒测试法和白盒测试法。

黑盒法:把被测试对象看成一个黑盒子,测试人员完全不考虑程序的内部结构和处理过程,只在软件的接口处进行测试,依据需求规格说明书,检查程序是否满足功能要求。因此,黑盒测试又称为功能测试或数据驱动测试。

白盒法:把测试对象看作一个打开的盒子,测试人员须了解程序的内部结构和处理过程,以检查处理过程的细节为基础,对程序中尽可能多的逻辑路径进行测试,检验内部控制结构和数据结构是否有错,实际的运行状态与预期的状态是否一致。 由于白盒测试是结构测试,所以被测对象基本上是源程序,以程序的内部逻辑为基础设计测试用例。

黑盒测试的优点有:

1)比较简单,不需要了解程序内部的**及实现;

2)与软件的内部实现无关;

3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;

4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;

5)在做软件自动化测试时较为方便。

黑盒测试的缺点有:

1)不可能覆盖所有的**,覆盖率较低,大概只能达到总**量的30%;

2)自动化测试的复用性较低。

2. 白盒测试。

白盒测试是指在测试时能够了解被测对象的结构,可以查阅被测**内容的测试工作。它需要知道程序内部的设计结构及具体的**实现,并以此为基础来设计测试用例。白盒测试的直接好处就是知道所设计的测试用例在**级上哪些地方被忽略掉,它的优点是帮助软件测试人员增大**的覆盖率,提高**的质量,发现**中隐藏的问题。

白盒测试的缺点有:

1)程序运行会有很多不同的路径,不可能测试所有的运行路径;

2)测试基于**,只能测试开发人员做的对不对,而不能知道设计的正确与否,可能会漏掉一些功能需求;

3)系统庞大时,测试开销会非常大。

软件测试方法:

(1)动态测试方法:指通过运行程序发现错误。

可分为黑盒测试法和白盒测试法。

(2)静态测试方法:指被测试程序不在机器上运行,而是采用人工检测和计算机辅助静态分析的手段对程序进行检测。

软件测试技术:

(1)适合于白盒测试的逻辑覆盖法技术。

(2)适用于黑盒测试的等价分类法、边界值分析法、错误推测法和因果图等技术。

软件调试方法:p204

1) 归纳法。

2) 演绎法。

3) 回归法。

4) 对半查找法。

软件调试技术:

1) 打印结果。

2) 输出存储器结果。

3) 设置断点。

4、 软件测试与调试的区别?举例说明。

软件测试是一个为了寻找软件错误而运行程序的过程。目的就是为了发现软件中的错误。一个好的测试用例是指很可能找到迄今为止尚未发现的错误的用例。

一个成功的测试是指揭示了迄今为止尚未发现的错误的测试。

1) 测试从一个侧面证明程序员的失败;调试证明程序员的正确;

2) 测试从已知条件开始,使用预先定义的程序,且有预知的结果,不可预见的仅是程序是否通过测试;调试从不可知内部条件开始,除统计性调试外,结果是不可预见的;

3) 测试有计划并且要进行测试设计;调试不受时间约束;

4) 测试是发现错误、改正错误、重新测试的过程;调试是一个推理的过程;

5) 测试执行是有规程的;调试执行要求程序员进行必要的推理;

6) 测试由独立的测试组在不了解软件设计的件下完成;调试由了解详细设计的程序员完成;

7) 大多数测试的执行和设计可由工具支持;调试用的工具主要是调试器。

测试的目的是找出存在的错误;调试的目的是定位并修改程序以修正错误。

测试从一个已知的条件开始,使用预先定义的过程,有预知的结果;调试从一个未知的条件开始,结束的过程不可预计。

5、 需求分析的任务、过程。

需求分析的最基本的任务是弄清楚“系统必须做什么”。出发点是可行性报告,其结果是软件需求规格说明书。具体任务包括:

1.确定对系统的综合需求。

2.分析系统的数据要求。

3.导出系统的逻辑模型。

4.修正系统开发计划。

5.开发原型系统。

需求分析任务:

1.沿数据流程图回溯。

从“输出端”到“输入端”回溯,分析数据元素。

2.用户复查。

借助已有的数据流程图,帮助复查,再次完善数据流程图。

3.细化数据流程图。

4.修正开发计划。

5.书写文档。

系统规格说明:系统的概貌、功能要求、运行要求、将来可能的要求。

数据要求:数据字典、图形工具(数据结构的层次图、warnier图)

用户系统描述:初步的用户手册。

修正的开发计划。

6、 简述软件开发过程、每个里程碑的提交物。

软件开发的基本过程:

1)可行性研究,做初步的需求分析工作,决定项目可行与否。

2)软件需求分析,软件工程师必须了解软件的信息领域,以及需求的功能、行为、性能和接口。系统需求和软件需求均需文档化,并与用户一起复审。并提交需求分析报告。

3)设计,包括概要设计和详细设计,软件设计是一个多步骤的过程,主要是对软件的数据结构、软件体系结构、界面表示及过程细节进行设计。设计过程将需求转换为软件表示,在编码之前可以评估其质量,所有设计均要文档化,它是软件配置的重要组成部分,经复审后提交相应的概要设计和详细设计报告。

4)编码,把设计转化为机器可执行的程序。提交源程序清单。

5)测试,提交测试报告。

6)维护,提交维护报告。

7、简述软件生命周期开发方法的基本过程及每个阶段的任务。

1)问题定义阶段,尽可能清楚地描述问题,搞清楚要解决的问题是什么;

2)可行性研究阶段,主要是确定待解的问题是否有可行的解决办法。需要做经济可行性分析、技术可行性分析、操作可行性分析和法律可行性分析;

3)需求分析阶段,主要是确定目标系统必须具备的功能。通常用数据流图、数据字典和简要的算法表示系统的逻辑模型。

4)总体设计阶段,从总体上解决问题,确定可实现的方案,并设计出软件的层次结构图;

5)详细设计,把解法具体化,确定如何具体地实现这个系统。针对每个模块设计相应的算法;

6)编码和单元测试阶段,把详细设计的结果翻译成选定的语言所写的程序,并对每个模块进行单元测试。

7)测试阶段,系统地设计测试用例,尽可能多地发现软件中的错误,并调试改正软件中的错误;

8) 软件维护阶段,主要目的是通过修改软件使所开发的软件能够持久地满足用户的需要。

8、简述软件工程目标和面临的主要问题。

软件工程是一门工程性的学科,其目标主要是成功地建造一个大型软件系统,建造高质量的软件。包括:付出较低的开发成本;达到要求的软件功能;取得较好的软件性能;开发的软件易于移植;需要较低的维护费用;能按时完成开发任务,及时交付使用;开发的软件可靠性高。

面临的主要问题是:软件费用软件可靠性软件维护软件生产率软件重用。

10、 如何提高软件的可维护性。(简述提高可维护性的方法)

1)建立明确的软件质量目标。

2)利用先进的软件开发技术和工具。

3)建立明确的质量保证工作。

4)选择可维护的程序设计语言。

5)改进程序文档。

11、 文档的作用?试**档在软件开发过程中的重要性。

在软件的生产过程中,总是伴随着大量的信息要记录、要使用。因此,软件文档在软件产品的开发过程中起着举足轻重的作用。

(1)提高软件开发过程的能见度。

2)提高开发效率。

3)作为开发人员阶段工作成果和结束标志。

4)记录开发过程的有关信息便于使用与维护;

5)提供软件运行、维护和培训有关资料;

6)便于用户了解软件功能、性能。

12、常见的几中软件开发模型?特点、对比?

软件开发模型是软件开发的全部过程、活动和任务的结构框架。软件开发模型能清晰、直观地表达软件开发全过程,明确规定了要完成的主要活动和任务,用来作为软件项目开发的基础。典型的开发模型有:

1) 瀑布模型。

瀑布模型将软件生命周期的各项活动规定为依固定顺序联接的若干阶段工作,形如瀑布流水,最终得到软件产品。特点:

1) 阶段间具有顺序性和依赖性。

2) 推迟实现的观点。

3) 质量保证观点。

优点:约束开发人员采用规范的开发方法。

软件工程复习

单选填空简答思考题。1 传统的软件瀑布生命模型包括哪六个方面?需求 分析 设计 实现 交付后维护 退役2 传统瀑布生命模型的中交付后维护包括哪三种?改正性维护 适应性维护 完善性维护3 现代维护和传统维护的观点有何不同?1 传统维护的观点是先开发后维护。2 现代维护的观点是无论是在软件安装前还是安装...

软件工程复习

软件工程复习资料。备注 1.老师反复强调我们之前做过的作业要熟练掌握 需求陈述 实验课画的模型 自己画。的数据流图 2 蓝颜色的字都是老师上课补充的,还有很多需要自己去补充,欢迎修正完善。核心问题 在考试做大是要表述清楚详细,关。键词要有 问题定义 专用名词表要解决的问题是什么?达要准确,不能更改 ...

软件工程 复习

1.概念 软件危机是指在计算机软件开发 使用与维护过程中遇到的一系列严重问题。2.为什么会产生软件危机?当软件开发技术的进步不能跟上硬件技术的进步,未能满足发展的要求,致使软件开发中遇到的问题找不到解决的办法,使问题积累起来,形成了尖锐的矛盾,因而导致了软件危机。3.软件危机的表现 经费预算经常突破...