软件测试与软件质量
一、软件
1、软件的定义
软件:是计算机系统中与硬件相互依存的另一部分,它是包括程序、数据和文档的完整集合。
2、软件与程序的区别
软件=程序+数据+文档
程序:是能够完成预定功能和性能的可执行的指令序列
数据:是使程序能够适当地处理信息的数据结构,输入与输出,数据库等
文档:是开发、使用和维护程序所需要的图文资料,需求分析、概要设计、详细设计等各阶段文档,还包括用户文档
3、软件的分类
按层次:
- 系统软件——在硬件之上
- 支持软件——为了更方便地操纵计算机
- 应用软件——最常用的一类软件
按使用范围:
- 单机版软件
- 分布式软件
4、软件的特性
- 软件是一种逻辑实体,具有抽象性
- 软件产品的生产主要是研制,生产成本主要在开发和研制,开发研制完成后, 通过复制就产生了大量软件产品
- 软件在使用过程中,没有磨损、老化的问题
- 软件对硬件和环境有着不同程度的依赖性。这导致了软件移植的问题
- 软件的研发至今尚未完全摆脱手工作坊式的研发方式,生产效率低
- 软件是复杂的,而且以后会更加复杂
- 软件的成本相当昂贵
二、软件危机与软件工程
1、软件危机
软件危机定义:软件危机是指在计算机软件的开发和维护过程中所遇到的一系列严重问题。
①、软件危机包含两方面问题
- 如何开发软件,以满足不断增长,日趋复杂的需求
- 软件常常是不可维护的
- 如何维护数量不断膨胀的软件产品
②软件危机的典型表现
- 对软件开发成本和进度的估计常常很不准确
- 用户“已完成的”软件系统不满意的现象经常发生
- 软件产品的质量往往靠不住
- 软件通常没有适当的文档资料
- 软件成本在计算机系统总成本中所占的比例逐年上升
- 软件开发生产率提高的速度,即跟不上硬件的发展速度,也远远跟不上计算机应用迅速普及及深入的趋势
③软件危机产生的原因
- 忽视软件开发前期的调研和需求分析工作
- 缺乏软件开发的经验和有关软件开发数据的积累,使得开发计划很难制定
- 开发过程缺乏统一的、规范化的方法论指导
- 忽视与用户、开发组成员间的及时有效的沟通
- 文档资料不规范或不准确,导致开发者失去工作的基础,管理者失去管理的依据
- 没有完善的质量保证体系
2、软件工程
定义:软件工程是一门研究怎么用系统化、规范化、数量化等工程原则和方法去进行软件的研发和维护的学科。
软件工程包括两方面内容:
- 软件研发技术:软件研发方法学、软件工具和软件工程环境
- 软件项目管理:软件度量、项目估算、进度控制、人员组织、设置管理、项目计划等
二、软件测试的产生、概念和意义
1、软件测试产生的背景
①原因一:程序规模的爆炸式增长
- 程序代码规模显著增大
- 程序结构和算法更加复杂
- 程序模块间接口增多
②原因二:在程序员与用户需求间寻找平衡点
- 程序员在开发过程关注:设计需求、技术内涵
- 用户关注:满足自身特定的需求
独立的软件测试的产生,为软件程序自身的技术内涵和用户特定领域的需求之间找到了平衡点,使软件程序员只需关注自己的工作,把软件与用户需求间差距的度量这一费时费力的工作交给了测试人员,大大的缩短了软件开发周期。
③案列
- 阿丽亚娜5型火箭的杯具处女秀
- 消失在太空
- 致命的辐射治疗
- 2011 年温州7.23 动车事故
三、软件测试的意义
①从工作量上来说:解放程序员和售后服务人员
软件测试可以降低软件质量风险,使程序员能够更专 心于解决程序的算法和效率;同时经过严格检验的完整产品也减轻了售后服务人员的工作量。
②从软件测试过程的角度来说:它推动了软件工程的发展,使软件的质量得到了阶段性的提升
2、最浅显直观的理解
- 在购买商品时,消费者会发现在商品上会贴有一个“QC”标签,这就是产品经过质量检验的标志。
- 软件测试就好比制造工厂的质量检验工作,对软件产品和阶段性工作成果进行质量检验。
3、软件测试的重要性总结:
软件BUG对我们的生活、工作都会带来毁灭性的破坏。据悉,每年的软件BUF会让整个市场经济带来600亿美元的损失。
软件测试的定义
1、软件测试的概念
- 是为了发现错误而执行程序的过程。
- 应关心程序的效率和鲁棒性等因素。
- 检验软件是否满足规定的需求。
- 弄清预期与实际结果之间的差别。
2、定义:使用人工或自动手段,来运行或测试某个系统的过程。其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别。
3、软件测试活动一般包含
- 制订测试计划
- 设计测试用例
- 实施测试
- 提交缺陷报告
- 测试总结