软件工程复习简略
- 1.什么是软件生存周期?通常可划分为哪些阶段?
- 2.简述需求分析要经过哪些步骤,每个步骤的作用。
- 3.详细设计有哪些常用工具?(注意Pad图的画法)
- 4.软件测试的目的和原则是什么?
- 5.测试有哪些步骤?说明每一步骤的主要目标以及这些测试与软件开发各阶段之间的关系。
- 6.说明软件测试和调试的目的有何区别?
- 7.提高软件可维护性的方法有哪些?
- 8.简述软件项目成本主要由哪些方面构成?
- 9.什么软件质量?它强调哪几个要点?
- 10.简述面向对象的开发方法有哪些优点。
- 11.简述面向对象3种模型和5个层次
- 12.UML的定义是什么?它的组成部分有哪些?
- 13.盒图/PAD图
- 14.用例图/类图
- 14.1用例图
- 14.2类图
- 15设计黑盒测试用例
- 15.1等价类划分法
- 15.2边界值分析法
- 15.3 错误推测法
- 15.4因果图法
- 15.5决策表法
- 15.6场景法
- 16白盒测试
- 16.1代码检查法
- 16.2静态结构分析法
- 16.3程序插桩技术
- 16.4逻辑覆盖法
1.什么是软件生存周期?通常可划分为哪些阶段?
软件生命周期指软件产品或软件系统孕育、诞生、成长、成熟、衰亡的生存过程,是软件从设计、投入使用到被淘汰的全过程。
分为软件定义、软件开发及软件运行维护3个阶段。
(1)问题定义
(2)可行性研究与计划
(3)需求分析
(4)总体设计
(5)详细设计
(6)编码和单元测试
(7)综合测试
(8)使用和维护
2.简述需求分析要经过哪些步骤,每个步骤的作用。
步骤:
- 验证可行性研究阶段得到的结果
- 分析系统的主要要求
- 得到系统的逻辑模型
- 修正系统的开发计划
- 验证软件需求
作用:
- 获得用户的真实需求
- 全面、准确理解用户需求
- 准确表达用户需求
- 修正开发计划、重新指定开发进度、预算。
- 建立需求规格说明书,确保软件需求的全面性、精确性和一致性
3.详细设计有哪些常用工具?(注意Pad图的画法)
- 程序流程图
- 盒图(N-S图)
- PAD问题分析图
- 过程设计语言PDL
- 判定表
- 判定树
4.软件测试的目的和原则是什么?
目标:
用最少的人力物力时间,找出软件中存在的问题,修正问题,规避商业风险。
原则:
- 完全测试是不可能的
- 测试中存在风险
- 软件测试只能表明缺陷的存在,而不能证明软件产品已经没有缺陷
- 软件产品中潜在的错误数与已发现的错误数成正比
- 让不同的测试人员参与到测试工作中
- 让开发小组和测试小组分立,开发工作和测试工作不能由同一部分人来完成
- 尽早并不断地进行测试,使测试工作贯穿于整个软件开发的过程中
- 在设计测试用例时,应包括输入数据和预期的输出结果两个部分,并且,输入数据不仅应该包括合法的情况,还应该包括非法的输入情况
- 要集中测试容易出错或错误较多的模块
- 应该长期保留所有的测试用例
5.测试有哪些步骤?说明每一步骤的主要目标以及这些测试与软件开发各阶段之间的关系。
测试类型/步骤:
- 单元测试
- 组装测试
- 确认测试
- 系统测试
目标:
- 单元测试:保证每个模块能作为一个独立的单元正确运行
- 组装测试:检查模块之间的接口及 接口之间的数据传递关系问题,以及单元组合后是否能够实现预期的功能等
- 确认测试:确认软件是否满足用户需求
- 系统测试:充分运行系统,验证系统,同系统的需求定义做比较,发现软件与系统定义不符合或矛盾的地方
关系:
项目规划阶段:负责从单元测试到系统测试的整个测试阶段的监控。
需求分析阶段:确定测试需求分析,即确定在项目中需要测试什么,同时制定系统测试计划。
概要设计与详细设计阶段:制定单元测试计划和集成测试计划。
编码阶段:编写相应的测试代码和测试脚本。
测试阶段:执行测试并提交相应的测试报告。
6.说明软件测试和调试的目的有何区别?
1、目的:测试的目的是找问题,调试的目的是找到并解决问题。
2、人员:测试由专门的测试人员完成,调试由开发人员完成。
3、结果:测试从已知条件开始,使用预定义的过程,并且有预期结果;而调试条件未知,结果不可 预知。
4、过程:测试可以预先计划,可以制订测试用例和计划,进度可以度量;调试没有计划,进度也不可以度量。
5、阶段:测试贯穿于软件生命周期的整个阶段;调试只在编码阶段进行。
7.提高软件可维护性的方法有哪些?
1、建立明确的软件质量目标和优先级
2、使用提高软件质量的技术和工具。
3、选择便于维护的程序设计语言
4、采取明确的有效的质量保证审查报告
5、完善程序的文档
8.简述软件项目成本主要由哪些方面构成?
- 硬件成本
- 差旅费及培训费用
- 软件开发成本
- 项目管理费用
9.什么软件质量?它强调哪几个要点?
软件质量
概括地说:
软件与明确地和隐含地定义的需求相一致的程度。
具体地说:
软件质量是软件符合明确叙述的功能和性能需求、文档中明确描述的开发标准,以及所有专业开发的软件都应具有的隐含特征的程度。
定义强调以下三点:
- 软件需求是度量软件质量的基础,与需求不一致就是质量不高。
- 指定的标准定义了一组指导软件开发的准则,如果没有遵守这些准则,几乎肯定会导致质量不高。
- 通常,有一组没有显式描述的隐含需求。如果软件满足明确描述的需求,但却不满足隐含的需求,那么软件的质量仍然是值得怀疑的。
10.简述面向对象的开发方法有哪些优点。
优点:
- 与人们习惯的思维方法一致
- 稳定性好
- 可重用性好
- 可维护性好。
- 较易开发大型软件产品
11.简述面向对象3种模型和5个层次
三个模型:
1.描述系统数据结构的对象模型,
2.描述系统控制结构的动态模型
3.描述系统功能的功能模型。
五个层次:
主题层、类与对象层、结构层、属性层、服务层
12.UML的定义是什么?它的组成部分有哪些?
定义:
UML是为软件系统的制品进行描述、可视化、构造、文档化的一种语言。
组成部分:
UML=UML成员+UML建模规则
UML建模规则:相当于建模语言的语法
UML成员:它是UML的基本组成部分
UML成员=UML基本模型元素+关系+模型图
UML成员可进一步划分为:
UML 基本模型元素
关系
模型图
UML中有九种图(diagram)和五种视图(view)。
九种图包括:用例图、类图、对象图、状态图、顺序图、协作图、活动图、构件图和部署图。
用来观察系统的五种视图有:用例视图、逻辑视图、构件视图、并发视图和部署图。
13.盒图/PAD图
点击查看【bilibili】
点击查看【bilibili】
PAD图基础画法:
流程图基本画法:
盒图基本画法:
例题
分析:
盒图:
PAD图
- 多张子图
- 一整张图
14.用例图/类图
点击查看【bilibili】
14.1用例图
例题:
注意动词性的词
14.2类图
示例:
15设计黑盒测试用例
15.1等价类划分法
划分等价类的原则:
- 如果输入条件规定了取值范围或个数,则可确定一个有效等价类和两个无效等价类。
例如,输入值是选课人数,在0到100之间,那么有效等价类是“0≤学生人数≤100”,无效等价类是“学生人数<0”和“学生人数>100”。
- 如果输入条件规定了输入值的集合或是规定了“必须如何”的条件,则可确定一个有效等价类和一个无效等价类。
例如,输入值是日期类型的数据,那么有效等价类是:日期类型的数据;无效等价类是:非日期类型的数据。
- 如果输入条件是布尔表达式,则可以分为一个有效等价类和一个无效等价类。
例如,要求密码非空,则有效等价类为非空密码,无效等价类为空密码。
- 如果输入条件是一组值,且程序对不同的值有不同的处理方式,则每个允许的输入值对应一个有效等价类,所有不允许的输入值的集合为一个无效等价类。
例如,输入条件“职称”的值是初级、中级或高级,那么有效等价类应该有3个,即初级,中级,高级,无效等价类有一个,即其他任何职称。
- 如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从不同的角度违反规则)。
例如,在Pascal语言中对变量标识符规定为“以字母为开头的…串”,那么其有效等价类是“以字母开头的串”,而“以非字母开头的串”为其中的一个无效等价类。
- 如已划分的等价类各元素在程序中的处理方式不同,则应将此等价类进一步划分成更小的等价类。
如最终用户与系统交互的提示。
设计测试用例的步骤可以归结为以下3步。
- 对每个输入和外部条件进行等价类划分,画出等价类表,并为每个等价类进行编号。
- 设计一个测试用例,使其尽可能多地覆盖有效等价类,重复这一步,直到所有的有效等价类被覆盖。
- 为每一个无效等价类设计一个测试用例。
15.2边界值分析法
边界值分析法是一种补充等价类划分法的黑盒测试方法,它不是选择等价类中的任意元素,而是选择等价类边界的测试用例。边界值分析法不仅重视输入范围边界,也从输出范围中导出测试用例。
通常情况下,软件测试所包含的边界条件有以下几种类型:数字、字符、位置、质量、大小、速度、方位、尺寸、空间等;对应的边界值应该在:最大/最小、首位/末位、上/下、最快/最慢、最高/最低、最短/最长、空/满等情况。
边界值分析法原则:
- 如果输入条件规定了取值范围,应以该范围的边界内及刚刚超范围的边界外的值作为测试用例。
如以a和b作为输入条件,测试用例应当包括a和b,以及略大于a和略小于b的值;
- 若规定了值的个数,应分别以最大、最小个数和稍小于最小和稍大于最大个数作为测试用例。
例如,一个输入文件有1-300个记录,设计测试用例时则可以分别设计有1个记录、300个记录以及0个记录和301个记录的输入文件;
- 针对每个输出条件,也使用上面的两条原则;
如果程序规格说明书中提到的输入或输出范围是有序的集合,如顺序文件、表格等,应注意选取有序集的第一个和最后一个元素作为测试用例;
- 分析规格说明,找出其他的可能边界条件。
15.3 错误推测法
基本想法:
- 列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。
例如,输入数据为零或输出数据为零往往容易发生错误;如果输入或输出的数目允许变化(如被检索的或生成的表的项数),则输入或输出的数目为0和1的情况(如表为空或只有一项)是容易出错的情况。
- 仔细分析程序规格说明书,注意找出其中遗漏或省略的部分,以便设计相应的测试方案,检测程序员对这些部分的处理是否正确。
15.4因果图法
在因果图中,用C表示原因,E表示结果,各节点表示状态,取值0表示某状态不出现,取值1表示某状态出现。
因果图法设计测试用例的步骤如下:
- 分析程序规格说明书的描述中,哪些是原因,哪些是结果,原因常常是输入条件或输入条件的等价类,而结果常常是输出条件;
- 分析程序规格说明书中描述的语义内容,并将其表示成连接各个原因与各个结果的因果图;
- 由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的,为表明这些特定的情况,在因果图上使用若干特殊的符号标明约束条件;
- 把因果图转化为决策表;
- 为决策表中每一列表示的情况设计测试用例。
15.5决策表法
15.6场景法
16白盒测试
16.1代码检查法
16.2静态结构分析法
16.3程序插桩技术
16.4逻辑覆盖法
点击查看【bilibili】
例:
if A and B
then action1
if C or D
then action2
路径覆盖