您的位置:首页 > 其它

【软件测试】软件及其开发过程

2017-01-06 11:23 447 查看

1.软件

1.1 软件的含义

能够完成预定功能和性能的、可执行的指令(计算机程序);

使得程序能够适当地操作信息的数据结构;

描述程序的操作和使用的文档。

软件 = 程序 + 数据 (库) + 文档 + 服务

1.2 软件的组成

客户需求 - Customer Requirements

市场需求文档 - MRD (Marketing Requirement Document)

软件规格说明书 - Specifications

技术设计文档 – Technical Design Docs

测试文档 Test Documents

在线帮助 - Online help

产品发布注释 - Release Notes / Read Me

产品软件包 - Release packages

帮助文件 Help files

 示例 Samples and examples to illustrate points

 产品支持文档 Product support information

 错误信息 Error messages

 安装手册 Setup and installation instructions

 用户手册 User manual(s)

 产品标签 Label and stickers

 产品广告或宣传材料  Ads and marketing material

1.3 软件的特点

软件则是逻辑的、知识性的产品集合,是对物理世界的一种抽象,或者是某种物理形态的虚拟化

 软件是硬件的灵魂,硬件是软件的基础 

软件,是智慧和知识的结晶 

软件不会“磨损”,而是逐步完善 .

2.软件开发过程的特性

2.1  软件开发的基本过程



需求分析: 根据客户的要求,清楚了解客户需求中的产品功能、特性、性能、界面和具体规格等,然后进行分析,确定软件产品所能达到的目标。
设计: 根据需求分析的结果,考虑如何在逻辑、程序上去实现所定义的产品功能、特性等,可以分为概要设计和详细设计,也可分为数据结构设计、软件体系结构设计、应用接口设计、模块设计、界面设计等。
编程:  将设计转换成计算机可读的形式。
测试: 对设计、编程进行验证和用户需求确认的过程
维护:维持软件运行,修改软件缺陷、增强已有功能、增加新功能、升级等。

2.2 软件开发过程模型

 瀑布模型

 原型模型

 快速应用开发(RAD)模型

 改进的V模型

 螺旋模型

 增量模型和迭代模型

 构件组装模型

 并发模型

 XP模型

 瀑布模型



原型模型



原型+瀑布模型



螺旋模型



2.3  UML代表软件建模的发展趋势

敏捷开发(Agile Development) 
“极限编程”(eXtreme Programming 
泛型编程(Generic Programming) 
面向切面方面的编程(Aspect Oriented Programming,简称AOP) 

UML( Unified Modeling Language, 统一建模语言 )可以说代表软件建模的今后5到10年的发展方向,成为面向对象技术领域内占主导地位的标准建模语言,支持从需求分析开始的软件开发的全过程。总的来说,UML是一种定义良好、易于表示、功能强大且普遍实用的建模语言 



标准建模语言UML共定义了三大类、共12种模型图:
结构类 Structural Diagrams:用4种模型图描述系统应用的静态结构,包括类图、对象图、组件图和配置图;
行为类 Behavior Diagrams:用5种模型图描述系统动态行为的各个方面,包括用例图、序列图、行为图、协作图和状态图
模型管理类 Model Management Diagrams :用3种模型图来组织和管理各种应用模型,包括软件包、子系统、模型等

3. 软件测试的重要性

3.1  软件所带来的悲剧

在上个世纪70年代,程序员为了节约非常宝贵的内存资源和硬盘空间,在存储日期时,只保留年份的后两位,如“1980”被存为“80”。当2000年到来的时候,问题就会出现,比如银行存款程序在计算利息时,应该用现在的日期“2000年1月1日”减去当时存款的日期,比如“1989年1月1日” ,结果应该是21年,如果利息是3%,银行要付给顾客每100元,大约86元利息。如果程序没有纠正年份只存储两位的问题,其存款年数就变为-89年,变成顾客反要付银行1288元的巨额利息。

就是为了这样一个简单的设计缺陷,全世界付出几十亿美元。 

问题出在哪呢?

 没有足够测试
 缺乏测试平台
 不正确的测试环境
 缺少集成测试
 缺少性能测试
 缺少强度测试
 缺少可靠性测试
3.2  测试的重要性

“程序测试是为了发现错误而执行程序的过程”。测试的目的是发现程序中的错误,是为了证明程序有错,而不是证明程序无错。在软件开发过程中,分析、设计与编码等工作都是建设性的,惟独测试是带有“破坏性”,测试可视为分析、设计和编码3个阶段的“最终复审”,在软件质量保证中具有重要地位。 
 微软的经验:Windows 95/98  Windows 2000 系统的稳定性有了明显改善,DEV:QA = 1:2 

3.3   软件测试的目的

观点一:

测试是程序的执行过程,目的在于发现错误

一个成功的测试用例在于发现至今未发现的错误

一个成功的测试是发现了至今未发现的错误的测试

这种观点指出测试是以查找错误为中心,而不是为了演示软件的正确功能 

观点二:

确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明

确保产品满足性能和效率的要求

确保产品是健壮的和适应用户环境的

确保最终交给用户的产品功能符合用户的需求,在产品交给用户之前尽可能多的发现并改正问题 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: