软件测试的概念与过程

一、 软件测试的引入

1. 软件的概念与分类

1.1 软件的概念

软件是计算机系统中与硬件相互依存的一部分,包括 程序、数据以及其相关文档 的完整集合。

  1. 程序是按事先设计的功能和性能要求执行的指令序列;
  2. 数据是使程序能正常操作信息的数据结构;
  3. 文档是与程序开发、维护和使用有关的图文材料。

1.2 软件的分类

按重要性

  • 系统软件
  • 支持软件
  • 应用软件

按架构

  • 单机版软件
  • 分布式软件
    1. C/S 架构
    2. B/S 架构

2. 软件失效

2.1 软件都是安全的吗?软件中有错误吗?

1991 年,爱国者导弹防御系统

  • 美国爱国者导弹防御系统是里根总统提出的战硌防御计划(即星球大战计划), 海湾战争中,用于拦截伊拉克飞毛腿导弹,但在沙特阿拉伯的多哈中失利,28 名美国士兵丧生。
  • 分析发现症结在于一个软件缺陷,系统时钟的一个很小的计时错误积累起来到 14 小时后,跟踪系统不再准确。在多哈的这次袭击中,系统已经运行了 100 多个小时。

2000 年,千年虫问题

  • 20C70S,美国一程序员位公司开发工资系统,当时的计算机存储空间很小, 为了节省存储空间,把 4 位数日期缩减为 2 位数,如 1973—73。他简单地认 为,只有在到达 2000 年他的程序计算 00 或 01 这样的年份时问题才会发生问 题,他认定在 25 年之内程序肯定会升级或替换,而且眼前的任务比现在计划 遥不可及的未来更加重要。后来,程序员退休了,程序仍然在使用,谁也不会 想到如何深入到程序中检查 2000 年兼容问题,更不用说去修改了。
  • 据估计,世界各地检查和解决 2000 年兼容问题和错误花费了数千亿美元

2.2 软件危机(software crisis)

20 世纪六七十年代,出现了软件数量急剧增长,但软件失败率高速上升的现象。 1968 年初,北大西洋公约组织的在联邦德国召开的国际学术会议上,计算机科学 家们正式提出了 “软件危机”(Softwre Crisis)

  1. 对进度和成本估计不准确,开发成本远远超出预算,项目进度和软件开发效率 严重滞后;
  2. 用户对提交的产品经常会不满意;
  3. 产品的质量不可靠,缺陷很多,维护成本非常高;
  4. 软件开发过程的文档匮乏。

2.3 软件为什么会失效?

在这里插入图片描述
总结起来就是用户、项目组长、分析员、程序员、咨询员等的理解和沟通上有偏差,导致用户最后得到的和预期结果差距较大

缺陷产生的原因

在这里插入图片描述

二、 软件测试的定义

1. 经典定义

1979,Myers,《软件测试艺术》

  • 测试是为发现错误而执行程序的过程。

理解:

  • 测试是为了证明程序有错,而不是证明程序无错误。
  • 一个成功的测试是发现了至今未发现的错误的测试。

2. 标准定义

1983,IEEE

  • 使用人工或自动手段来运行或测定某个系统的过程,其目的在于检验它是否满 足规定的需求或是弄清预期结果与实际结果之间的差别。

理解:

  • 测试是在用户需求和开发技术之间找一个平衡点。

3. 国内定义

GB/T 11457

  • 依据规范的软件检测过程和检测方法,按照测试计划和测试需求对被检测软件 的文档、程序和数据进行测试的技术活动。

理解

  1. 软件测试是一个过程,测试不只是测试执行,它包括从计划开始到测试结 束的一系列活动。
  2. 软件测试需要测试方法和技术,或者说技巧。
  3. 软件包括程序、数据和文档,除了执行程序,数据和文档也需要测试。

4 其他理解

  1. 不同时期关于测试的其他定义
  2. 确信程序做了它应该做的事(Hetzel,1973)。
  3. 确认程序正确实现了所要求的功能。
  4. 查出规格说明中错误,以及与规格说明不符的地方。
  5. 测试是一切以评价程序或系统的属性、能力为目的的活动;测试是对软件质量 的度量(Hetzel,1983)。
  6. 评价程序或系统的过程。
  7. 测试是与软件开发或维护工作并行进行的一个过程。
  8. 测试是一个获取信息,降低决策风险的过程。通过测试,向整个团队提供关于 产品质量和项目环境的信息,帮助他们做出决定。

三、 软件测试的过程

1 分析测试需求

测试人员对用户的需求进行分析,了解软件要做什么,怎么做,进而确定将来怎么 测试。

2 编写测试计划

测试负责人编写测试计划;
测试计划的内容

  • 包含产品概述、测试范围/测试区域/测试项、 测试目标/被测特征、测试优先 级、测试配置/测试资源(硬件、软件、人力、技术等)、测试周期、进度安 排(测试任务、人员安排)、 测试策略、测试方法/途径、测试交流、风险分 析、测试标准、需交付文档等内容。

3 设计与编写测试用例

  • 设计用例主要反映在编写测试点上;
  • 根据公司格式或者选择一些模板编写测试用例。

4 执行测试

  • 搭建测试环境;
  • 执行测试用例,记录测试事件;
  • 提交和跟踪缺陷。

5 评估与总结

  • 分析实际测试与计划的偏差;
  • 收集并提交各种测试文档和数据,对数据进行分析;
  • 给出是否继续测试还是终止测试结论;
  • 总结经验教训

四、 软件测试的目的/目标

在这里插入图片描述

五、 区分概念

1. 测试 & 调试

在这里插入图片描述

2. 软件质量保证 & 软件测试

软件质量保证(SQA,Software Quality Assurance)
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yang_yang_heng/article/details/107682578
今日推荐