测试理论02软件工程与软件测试

软件工程

什么是软件工程
随着软件工程学的发展,人们对计算机的认知逐渐深化。
软件工作的范围不仅仅局限在程序编写,而是扩展到了整个软件生命周期,
如软件基础概念的形成、需求分析、设计、实现、测试、安装部署、运行维护、
直至软件被更新或者替换新版本。软件工程贯穿软件生命周期的各个阶段,
是一门研究用工程化方法构建和维护有效的、实用的和高质量软件的学科。

软件工程研究领域:
人员管理、项目管理、配置管理、质量管理

软件工程目的:
软件工程的目的是提高软件的质量和生产率,最终实现软件的工业化生产,
采用工程化模型的目的是确保项目成功,而一个项目的成功取决于成本、进度、质量。
成本:人员、工具、设备、错误成本(错误导致返工);
进度:时间控制;
质量:考虑软件对客户需求的满足程度;

软件生命周期:
宏观上,划分六个阶段:计划、需求分析、设计、编码、测试、运行维护(实施与运维)。

发展历史:
初始阶段、工程化阶段、工厂化阶段、过程管理阶段、关注个体阶段
工程化概念提出:20世纪60年代,流行瀑布模型,注重结构化分析和设计、
结构化编码和测试;
软件工厂:20世纪70年代提出,围绕软件过程和软件复用展开研究,
提出“面向对象”编程思想;
软件过程:20世纪80年代,提出生产过程为中心:提出过程能力成熟度模型CMM、
个体软件过程PSP、群组软件过程TSP模型,此阶段,提出快速原型法、螺旋模型、
喷泉模型对瀑布式软件生命周期进行补充。

软件过程相关工具和方法:
微软 – VSTS
惠普 – BTO
IBM –JAZZ
MicroFocus – OpenAlm
 
软件开发模式
1线性模式
代表“瀑布模型”,是其他模型的基础,项目立项分析-需求分析-设计-编码-测试-运维
前提是软件需求完全明确,最大缺陷是集成之日是爆炸之日
2渐进模型
一般在初期阶段需求不明确时,采用渐进模式,代表“螺旋模型”
螺旋做法是在瀑布模型每一个阶段之前引入严格的需求分析和风险管理。
设计到增量开发和迭代开发。
3变换模型
以体系结构为基础的基于构件组装的开发模型,
基于模型设计语言,主要思想是简略代码编程与测试阶段,代之以自动化程序变换过程,
将精力集中在需求分析和建模上;
注:在每一个迭代原型后,测试人员需要从原型界面、系统功能、性能等方面对原型进行评审。
 
RUP下的测试
    1 RUP概念
基于UML、以架构为中心、用例驱动与风险驱动相结合的迭代式增量开发过程;
强调:迭代的开发、管理需求、应用基于构件的构架、为软件建立可视化的模型、
不断的验证质量、控制软件变更。
2 RUP模式下的测试,强调自动化和快速持续测试,
把测试分为单元测试、集成测试、系统测试、验收测试

可靠性
完整性测试 结构性测试
功能
配置测试 功能测试 安装测试 安全测试 容量测试
性能
基准测试 竞争测试 负载测试 性能曲线测试 强度测试

3与RUP不同的是,轻量过程,如敏捷运动、极限编程
极限编程强调,沟通、简化、反馈、勇气
敏捷测试认为要持续的测试,不断地回归测试,快速地测试。测试人员需要多借鉴上下文驱动测试的方法,适当采用自动化加快测试的速度。

CMM与测试
CMM:承制方软件工程能力评估方法,5个等级:
初始化:个别的、混乱的过程,软件过程缺乏定义,项目的成功严重依赖几个关键人物的努力,质量由个人经验保障
可重复级:实施了基础的项目管理和过程控制,依赖以往成功经验保障类似项目的功能
已定义级:遵循一定的标准,具备可量化的、文档化的过程管理,减少对人的依赖
已管理级:加入评估度量机制、利用评估度量对软件过程及产品做出合理的判断和控制
优化级:关注持续改进、融入技术改革、缺陷预防等理念。软件组织可从自己的过程控制和管理中得到反馈信息,用于进一步指导过程的改进。


猜你喜欢

转载自blog.csdn.net/u013667895/article/details/80205802
今日推荐