软件工程与测试复习.docx
- 文档编号:30243731
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:19
- 大小:458.42KB
软件工程与测试复习.docx
《软件工程与测试复习.docx》由会员分享,可在线阅读,更多相关《软件工程与测试复习.docx(19页珍藏版)》请在冰豆网上搜索。
软件工程与测试复习
软件工程与测试复习
软件概念
软件是计算机系统中与硬件相互依存的另一部分,由程序、数据及相关文档组成的完整集合。
软件工程的产生
软件危机
软件工程的定义
用系统化、规范化、数量化等工程原理和方法进行软件的开发和维护的学科,是一类设计软件的工程,它应用计算机科学、数学及管理科学等原理,借鉴传统软件工程的原则、方法,创建软件以达到提高质量,降低成本的目的;它包括两个方面,及软件开发技术和软件项目管理。
•软件工程的研究对象(基本要素)
✓方法(methodologies)
提供如何构造软件技术,如项目估算、需求分析、系统设计、编码及测试等
✓工具(tools)
为方法和语言提供自动或半自动的支持
✓过程(procedures)
定义了方法使用的顺序、可交付产品(文档、报告及格式)的要求,为保证质量和协调变化所需要的管理,以及软件开发各个阶段完成的标志。
软件工程过程是为了获得高质量的软件所需要完成的一系列任务的框架,它规定了完成各项任务的工作步骤。
软件生命周期的基本任务
1.问题定义:
要解决的问题是什么?
2.可行性分析:
上一阶段所确定的问题是否有行得通的解决方法?
3.需求分析:
目标系统必须作什么?
4.概要设计:
怎样实现目标系统?
5.详细设计:
应该怎么具体地实现这个系统?
6.编码和单元测试:
写出正确的易理解、易维护的程序模块。
7.综合测试:
通过各种类型的测试使软件达到预定的要求。
8.软件维护:
通过各种必要的维护使系统持久地满足用户的需要
瀑布模型(WaterfallModel)
瀑布模型的特点:
•阶段间具有顺序性和依赖性
•推迟实现的观点
•质量保证的观点
快速原型模型
增量模型
螺旋模型
喷泉模型
问题定义(problemdefinition)即软件定义,是计划时期的第一个阶段,为软件的可行性研究和软件开发计划的制定提供功能与性能的依据。
目的:
弄清楚用户需要计算机解决的根本问题,以及项目所需的资源和经费。
可行性研究概念
概念:
用最小的代价在最短的时间内,确定问题定义阶段所定义的问题是否值得解决;在预定的规模内是否有可行的解;即在较高层次上以较抽象的方式进行系统分析,论证系统开发的可行性。
可行性研究的任务不是研究如何解决问题,是对以后的行动方针提出建议,如可行则系统分析员应推荐一个较好的解决方案,并为系统制定一个初步的开发计划。
可行性研究内容
•技术可行性
根据客户提出的系统功能、性能以及实现系统的各项约束条件,从技术的角度研究实现系统的可行性——关键
•经济可行性
通过成本-效益分析,评估系统的经济效益是否超过其开发成本,并将估算的成本与预算的利润进行对比,分析系统开发对其他产品或利润的影响——难于精确但很重要
•操作可行性
又称为社会可行性或运行可行性,是对开发系统在一个给定的工作环境中能否运行或运行好坏程度的度量——必要
项目的定义
项目是为完成一独特的产品或服务所做的一次性努力。
(PMBOK)
项目管理
在项目管理活动中运用知识、技能、工具和技术,以满足项目干系人对项目的需求和期望。
项目管理要素范围时间、成本三个因素之间的互相影响的关系。
项目组织结构的类型
(1)职能式
(2)项目式
(3)矩阵式(强、弱、平衡)
(4)事业部式
项目管理工具:
Project2003
任务资源成本
工作分解结构(WBS)就是一种用于组织任务分解以便报告日程和跟踪成本的分层结构。
Project2003在项目中使用一系列的数字、字母或二者的结合所组成的任务标识号来标识任务大纲结构。
需求分析与设计
需求的层次
•业务需求(businessrequirement)反映了组织机构或客户对系统或产品高层次的目标要求,它们在项目视图与范围文档中予以说明。
•用户需求(userrequirement)描述了用户使用产品必须要完成的任务,可以在用例模型或方案脚本中予以说明。
•功能需求(functionalrequirement)定义了开发人员必须实现的软件功能,使得用户能完成他们的任务,从而满足了业务需求。
•非功能需求(non-functionalrequirement)是从各个角度对系统的约束和限制,反映了应用对软件系统质量和特性的额外要求。
非功能需求包括过程需求、产品需求和外部需求三类,其中过程需求有交付、实现方法和标准等需求,产品需求包括性能、可用性、实用性、可靠性、可移植性、安全保密性、容错性等方面的需求,外部需求有法规、成本、操作性等需求。
UML:
统一建模语言,主要用于面向对象的分析与设计。
•对象是具有清晰边界和标识的实体,实体中封装了状态和行为。
–状态是指对象的属性和关系
–行为是指操作、方法和状态转换
•对象在UML中用矩形表示,对象的名称具有下划线。
•类是一系列对象的描述,这些对象共享相同的属性、操作、关系和语义。
对象是类的实例。
•类的抽象体现在
–突出共同的相关的特性
–忽略无关的特性
UML类的表示
包
•用分组的方式来组织模型
•可以包含其他的模型元素
泛化
•聚合Aggregation
–表示两个类或组件之间是“ispartof”关系
•聚合层次AggregationHierarchy
–通过聚合关系联系的一组类
•关联Association
–对象和其它对象发生联系
•内聚Cohesion
–封装单元(如组件或类)的相关程度
•耦合Coupling
–两个项目的依赖程度
•接口Interface
–定义内聚行为集的一个或多个操作特征标记的集合
•消息Message
–是信息请求或执行一个动作的请求
•传递消息Messaging
–为了协作,类互相发送与接收消息
•方法Method
–类完成的事情(与结构化编程中函数类似)
用例图元语
POST用例图
顺序图:
基于用例的需求分析过程
•1.获取原始需求
•2.开发一个可以理解的需求
–2.1识别参与者
–2.2识别用例
–2.3构建用例图
•3详细、完整地描述需求
–进行用例阐述
•4重构用例模型
–4.1识别用例间的关系
–4.2对用例进行组织和分包
参与者:
在系统之外,透过系统边界与系统进行有意义交互的任何事物
–用例实例是系统执行的一系列动作,这些动作将生成特定参与者可观测的结果值
–一个用例定义一组用例实例
•简洁:
参与者使用系统达到目标
用例规约组成
•用例名称
•用例标识
•涉及的参与者
•描述
•用例的规格说明
–前置条件PreConditions
–后置条件PostConditions
–正常事件流Flowofevents
–备选事件流Alternateflow
•其它
–非功能需求、设计约束、尚存在的问题
活动图
用例关系
软件缺陷产生的原因
软件测试的定义
•定义1:
软件测试是为了发现错误而执行程序的过程。
•定义2:
软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计的一批测试用例,并利用这些测试用例运行程序以发现错误的过程,即执行测试步骤。
测试用例:
所谓测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果;测试用例是执行测试的最小实体。
软件测试的目的
(1)软件测试的目的是为了发现尽可能多的缺陷,不是为了说明软件中没有缺陷。
(2)检查系统是否满足需求也是测试的期望目标。
(3)一个好的测试用例在于发现了还未曾发现的错误;一次成功的测试则是发现了错误的测试。
注意:
测试无法证明程序是正确的,简单而言就是找缺陷。
2、软件测试的原则
(1)尽早地和及时地测试;
(2)测试用例应当由测试数据和与之对应的预期结果这两部分组成;
(3)在程序提交测试后,应当由专门的测试人员进行测试;
(4)测试用例应包括合理的输入条件和不合理的输入条件;
(5)严格执行测试计划,排除测试的随意性;
(6)充分注意测试当中的群体现象;
(7)应对每一个测试结果做全面的检查;
(8)保存测试计划、测试用例、出错统计和最终分析报告,为维护工作提供充分的资料。
软件测试的分类
按照软件测试用例的设计方法而论,软件测试可以分为白盒测试法和黑盒测试法。
按是否运行程序来区分,可分成
–静态检查
•确保系统按照组织的标准和过程运行,主要依赖于评审和非运行的手段来检查。
通常包括需求评审、设计评审、代码走查和代码检查。
–动态检查
•在生命周期中进行测试(运行)。
通常包括单元测试、集成测试、系统测试、用户的验收测试。
•软件能力成熟度模型(CMM,CapabilityMaturityModel):
——是软件行业标准模型,用来定义和评价软件企业开发过程的成熟度,提供如何做才能够提高软件质量的指导。
软件测试的复杂性
1、无法对程序进行完全测试
2、测试无法显示潜在的软件缺陷和故障
3、找到的软件缺陷越多,就说明附近的软件缺陷更多
4、并非所有软件缺陷都要修复
黑盒测试和白盒测试
黑盒测试又称为功能测试、数据驱动测试和基于规格说明的测试。
它是一种从用户观点出发的测试,一般被用来确认软件功能的正确性和可操作性。
黑盒测试主要根据规格说明书设计测试用例,并不涉及程序内部构造和内部特性,只依靠被测程序输入和输出之间的关系或程序的功能设计测试用例。
•黑盒测试的特点:
(1)黑盒测试与软件的具体实现过程无关,在软件实现的过程发生变化时,测试用例仍然可以使用。
(2)黑盒测试用例的设计可以和软件实现同时进行,这样能够压缩总的开发时间。
•黑盒测试的具体技术方法:
边界值分析法等价类划分法
比较测试法因果图法
决策表法
白盒测试又称为结构测试、逻辑驱动测试或基于程序的测试,一般用来分析程序的内部结构。
•白盒测试将被测程序看作一个打开的盒子,测试者能够看到被测源程序,可以分析被测程序的内部结构,此时测试的焦点集中在根据其内部结构设计测试用例。
•白盒测试要求是对某些程序的结构特性做到一定程度的覆盖,或者说这种测试是“基于覆盖率的测试”。
•通常的程序结构覆盖有:
语句覆盖判定覆盖
条件覆盖判定/条件覆盖
路径覆盖
软件测试过程
•单元测试:
针对每个单元的测试,以确保每个模块能正常工作为目标。
(编码,详细设计)
•集成测试:
对已测试过的模块进行组装,进行集成测试。
目的在于检验与软件设计相关的程序结构问题。
(概要设计)
•确认(有效性)测试:
是检验所开发的软件能否满足所有功能和性能需求的最后手段。
(需求分析)
•系统测试:
检验软件产品能否与系统的其他部分(比如,硬件、数据库及操作人员)协调工作。
(需求定义)
•验收(用户)测试:
检验软件产品质量的最后一道工序。
主要突出用户的作用,同时软件开发人员也应有一定程度的参与。
黑盒测试与用例设计
使用等价类划分法为NextDate函数设计测试用例:
NextDate函数包含三个输入变量month、day和year(要求month、day和
year均为整数值,并且满足:
1≤month≤12;1≤day≤31;1912≤year≤2050),
函数的输出为输入日期后一天的日期。
(2)根据等价类表设计的测试用例如下:
白盒测试与用例设计
基本路径测试方法
voidMySort(intiRecordNum,intiType)
1{
2intx=0;
3inty=0;
4while(iRecordNum-->0)
5{
6If(iType==2)
7x=y+2;
8else
9If(iType==6)
10x=y+6;
11else
12x=y+12;
13}
14}
在开发过程中,将软件的文档、程序、数据进行分割与综合,以利于软件的定义、标识、跟踪、管理,使其最终形成受控的软件版本产品,这一管理过程称为软件配置管理。
配置管理工具subversion
软件维护定义
•在软件已经交付使用后,为改正错误或满足新的需要对软件产品进行的修改(运行/维护阶段)
软件维护类型
•改正性维护
•适应性维护
•完善性维护
•预防性维护
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 测试 复习