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

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种模型图:
  1. 结构类 Structural Diagrams:用4种模型图描述系统应用的静态结构,包括类图、对象图、组件图和配置图;
  2. 行为类 Behavior Diagrams:用5种模型图描述系统动态行为的各个方面,包括用例图、序列图、行为图、协作图和状态图
  3. 模型管理类 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  测试的重要性

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

3.3   软件测试的目的

观点一:
测试是程序的执行过程,目的在于发现错误
一个成功的测试用例在于发现至今未发现的错误
一个成功的测试是发现了至今未发现的错误的测试

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

观点二:
确保产品完成了它所承诺或公布的功能,并且用户可以访问到的功能都有明确的书面说明
确保产品满足性能和效率的要求
确保产品是健壮的和适应用户环境的

确保最终交给用户的产品功能符合用户的需求,在产品交给用户之前尽可能多的发现并改正问题 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值