【软件测试】第1章 软件测试概述

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 第1章 软件测试概述
    • 1.1 软件、软件危机和软件工程
      • 1.1.1 基本概念
      • 1.1.2 软件工程的目标及其一般开发过程
      • 1.1.3 软件过程模型
    • 1.2 软件缺陷与软件故障
      • 1.2.1 基本概念
      • 1.2.2 典型案例
    • 1.3 软件测试的概念
      • 1.3.1 软件测试的定义
      • 1.3.2 软件测试的目的:保证软件产品的最终质量
      • 1.3.3 软件测试的基本原则
      • 1.3.4 软件测试的局限性
    • 1.4 软件质量与质量模型
      • 1.4.1 软件质量的含义
      • 1.4.2 软件质量模型
    • 1.5 软件测试的分类
    • 1.6 软件测试过程模型
    • 1.7 测试的生命周期
      • 1.7.1 软件测试过程中的活动及内容
  • 总结


前言


第1章 软件测试概述

1.1 软件、软件危机和软件工程

1.1.1 基本概念

  • 软件 = 程序 + 数据(库) + 文档
  • 软件测试:为了尽快尽早地发现在软件产品中所存在的各种软件缺陷而展开的贯穿整个软件开发生命周期、对软件产品(包括阶段性产品)进行验证和确认的活动过程
  • 软件危机的表现:
    • 软件生产供不应求
    • 软件生产率随软件规模与复杂性提高而下降
    • 软件开发的进度与成本失控
    • 软件系统实现的功能与实际需求不符
    • 软件难以维护
    • 软件文档配置没有受到足够的重视
  • 软件危机的表现:
    • 软件生产供不应求
    • 软件生产率随软件规模与复杂性提高而下降
    • 软件开发的进度与成本失控
    • 软件系统实现的功能与实际需求不符
    • 软件难以维护
    • 软件文档配置没有受到足够的重视

1.1.2 软件工程的目标及其一般开发过程

  • 微观目标:生产出满足需求的软件(成本、时间、质量、可维护性等)
  • 宏观目标:提高软件质量和生产率,最终实现软件的工业化生产
  • 一个软件产品从形成概念开始,经过开发、测试、使用和维护,直到最后退出使用的全过程称为软件生存周期
  • 软件定义:计划和需求分析
  • 软件开发:概要设计、详细设计和实现
  • 软件测试:单元测试、集成测试、系统测试和验收测试
  • 软件使用和维护:改正性维护、适应性维护和完善性维护

1.1.3 软件过程模型

  • 瀑布过程模型
    • 1970年温斯顿•罗伊斯(Winston Royce)提出
    • 瀑布过程模型强调阶段的划分及其顺序性、各阶段工作及其文档的完备性
    • 是一种严格线性的、按阶段顺序的、逐步细化的开发模式
      在这里插入图片描述
  • 螺旋过程模型
    • 螺旋过程模型的基本思路是,依据前一个版本的结果构造新的版本
    • 这个不断重复迭代的过程形成了一个螺旋上升的路径
      在这里插入图片描述
  • 增量过程模型
    • 增量过程模型是用一种几乎连续的过程小幅度地推进项目
      在这里插入图片描述
  • 快速原型过程模型
    • 快速原型过程模型首先是快速进行系统分析,在设计人员和用户的紧密配合下,快速确定软件系统的基本要求,尽快实现一个可运行的、功能简单的原型系统,然后通过对原型系统逐步求精,不断扩充完善得到最终的软件系统

1.2 软件缺陷与软件故障

1.2.1 基本概念

  • 软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差。其结果是软件运行于某一特定条件时出现软件故障,这时称软件缺陷被激活
  • 软件故障是指软件运行过程中出现的一种不希望或不可接受的内部状态,此时若无适当措施(容错)加以及时处理,便产生软件失效
  • 软件缺陷(software bug)的主要类型
    • 软件未达到产品说明书中已经标明的功能;
    • 软件出现了产品说明书中指明不会出现的错误;
    • 软件未达到产品说明书中虽未指出但应当达到的目标;
    • 软件功能超出了产品说明书中指出的范围;
    • 软件测试人员认为软件难以理解、不易使用,或者最终用户认为该软件使用效果不良。

1.2.2 典型案例

1.3 软件测试的概念

1.3.1 软件测试的定义

  • 定义1 :正向逆向思维共存
    • Bill Hetzel,1973年
    • 测试就是建立一种信心,确信程序能够按预期的设想运行
  • 定义2:正向逆向思维共存
    • Glenford Myers,1979年
    • 软件测试是为发现错误而执行程序的过程
  • 定义3 :注重软件质量评价
    • Bill Hetzel,1983年
    • 测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量
  • 定义4:注重软件质量评价
    • Craig & Jaskiel ,2002年
    • 测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程
  • IEEE标准术语:突出用户重要作用
    • “使用人工或自动手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或弄清楚预期结果与实际结果之间的差别”
  • 软件缺陷在开发前期发现比在开发后期发现,在资金、人力上节约90%
  • 软件缺陷在推向市场前发现比在推出后发现,在资金、人力上节约90%
  • 软件测试应该从软件生命周期的第一个阶段开始,并贯穿于整个的软件生命周期
  • 检验各阶段的成果是否接近预期目标,尽可能早的发现错误并加以修正

1.3.2 软件测试的目的:保证软件产品的最终质量

  • 测试是一个程序的执行过程,其目的在于发现错误
  • 一个好的测试用例很可能会发现至今尚未察觉的错误
  • 一个成功的测试是发现至今尚未察觉的错误的测试
  • 直接目的:发现软件缺陷
  • 最终目的:验证用户需求
  • 附加目的:改进开发过程

1.3.3 软件测试的基本原则

  • 穷尽测试是不可能的,测试需要终止
    • 穷尽测试:对所有输入数据的各种可能进行排列组合试验的测试
  • 测试工作具有创造性,但很困难
    • 测试是破坏性工作?重复性的工作?
    • 测试需要有创造性和洞察力、广泛的知识、测试经验和正确的测试方法
  • 测试工作应由独立的专业的软件测试机构完成
    • 程序员应避免测试自己编写的程序
    • 编写软件组织不应测试自己编写的软件
  • Pareto原则
    • 程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比
    • 错误总是倾向于聚集存在
    • 寄生虫现象
    • 杀虫剂现象
  • 测试需尽早介入,且贯穿于整个生命周期
  • 设计测试用例时应考虑各种情况
    • 测试用例的编写不仅应当根据有效和预期的输入情况,而且应当根据无效和未预料到的输入情况
    • 检查程序是否“未做其应该做的”,还要检查程序是否“做了其不应该做的”
  • 计划测试工作时不应默许假定不会发生错误
    • Glenford Myers (1979): “Testing is the process of executing a program or system with the intent of finding errors.”

1.3.4 软件测试的局限性

  • 输入/状态空间的无限性
  • 故障敏感性和巧合正确性
    • 代码对测试包隐藏故障的能力称为故障敏感性
    • 错误的代码执行时,却产生了正确的结果,被称为巧合正确性
  • 系统缺陷的不确定性
    • 由于无法确切知道系统的缺陷数量及所在的位置,对修正这些缺陷而带来的新的缺陷也是不可预测的,所以系统质量是不容易把握的

1.4 软件质量与质量模型

1.4.1 软件质量的含义

  • 能满足给定需求的特性(功能、性能)
  • 具有所期望的各种属性的组合的程度,即软件结构良好,合理利用系统资源,易读、易于理解,并易于修改、维护
  • 能满足用户综合期望的程度,软件系统具有友好的用户界面,便于用户使用
  • 软件的组合特性。软件生存周期中各阶段文档齐全、规范,便于配置、管理

1.4.2 软件质量模型

  • McCall(1979年)
    在这里插入图片描述
  • ISO/IEC 9126-1991
    在这里插入图片描述
    在这里插入图片描述
  • 新的ISO/IEC 9126
    在这里插入图片描述
  • ISO/IEC 25010-2011
    在这里插入图片描述
    在这里插入图片描述

1.5 软件测试的分类

  • 软件测试知识体系
    在这里插入图片描述
  • 按测试执行方式
    • 静态测试:不需要执行所测试的程序,查询代码是否符合规范,对程序的数据流和控制流进行分析
    • 动态测试:选择实际测试用例运行所测试程序,模拟用户输入
  • 按测试对象
    • 黑盒测试:
      • 行为测试、功能测试、基于需求的测试、数据驱动测试
      • 需求覆盖率
    • 白盒测试:
      • 结构测试、基于代码的测试、逻辑驱动测试
      • 代码覆盖率
    • 灰盒测试:白盒 + 黑盒
      在这里插入图片描述
  • 按照测试过程
    在这里插入图片描述
    在这里插入图片描述
  • 按测试目的
    • 功能测试、健壮性测试、接口测试、性能测试、强度测试、压力测试、
    • 用户界面测试、安全测试、可靠性测试、安装 / 卸载测试、文档测试、恢复测试、兼容性测试
  • 按测试执行手段
    • 自动化测试 和 手工测试
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

1.6 软件测试过程模型

  • V模型
    在这里插入图片描述
  • W模型
    • 增加对每个阶段的验证和确认
    • W模型由两个V字型模型组成,分别代表测试与开发过程
    • W模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的
    • 重点:验证(v&v)、准备
      在这里插入图片描述
  • H模型
    • H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
    • H模型揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行
      在这里插入图片描述

1.7 测试的生命周期

1.7.1 软件测试过程中的活动及内容

  • 根据需求制定测试计划、测试方案
  • 测试用例设计、脚本编写,进行用例评审
  • 执行测试并提交Bug,验证Bug
  • 测试分析与总结
  • 版本发布
    在这里插入图片描述
    在这里插入图片描述
  • 软件测试过程图
    在这里插入图片描述
    在这里插入图片描述

(1) 测试项目启动

  • 软件项目详细流程图
    在这里插入图片描述

(2) 软件测试需求分析
在这里插入图片描述


总结

①熟悉软件工程的一般开发过程和常见过程模型
②掌握软件测试的概念、目的和原则
③熟悉软件测试的分类
④熟悉软件测试过程模型和软件测试的生命周期

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/14955.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

计算机程序安装及使用须知_kaic

安装及使用须知 1 数据库建模程序的使用 本文件夹中的“PowerDesigner建模”目录下包含三个可运行文件TMS1.cdm,TMS.cdm,TMS.pdm分别为TMS系统的实体关系简图、实体关系图和数据库模型,使用PowerDesigner集成开发环境打开任意一个文件即可运…

Linux系统与shell编程第一节课

目录 1.1 Linux发展历史 1.2 什么是linux? 1.3 Linux的发行版 Host-Only(仅主机模式) windows开发 linux服务 区块链, 特点:稳定,安全,可移植性,低资源消耗,开源软…

2023年第十二届数据技术嘉年华(DTC)资料分享

第十二届数据技术嘉年华(DTC 2023)已于4月8日在北京圆满落幕,大会围绕“开源融合数智化——引领数据技术发展,释放数据要素价值”这一主题,共设置有1场主论坛,12场专题论坛,68场主题演讲&#x…

【基础】Kafka -- 日志存储

Kafka -- 日志存储 日志文件目录日志索引偏移量索引时间戳索引 日志清理日志删除基于时间基于日志大小基于日志起始偏移量 日志压缩 日志文件目录 Kafka 中的消息以主题为单位进行基本归类,而每个主题又可以划分为一个或者多个分区。在不考虑多副本的情况下&#x…

【MySQL】插入文件路径,反斜杠消失

系列文章 C#底层库–MySQL脚本自动构建类(insert、update语句生成) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129179216 C#底层库–MySQL数据库访问操作辅助类(推荐阅读) 本文链接:h…

如何优雅的写个try catch的方式!

软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...} 代码块,不仅有大量的冗余代码,而…

07 【Sass语法介绍-控制指令】

1.前言 Sass 为我们提供了很多控制指令,使得我们可以更高效的来控制样式的输出,或者在函数中进行逻辑控制。本节内容我们就来讲解什么是 Sass 控制指令?它能用来做什么?它将使你更方便的编写 Sass 。 2.什么是 Sass 控制指令 控…

Dockere-Compose迁移Gitea部署

Dockere-Compose迁移Gitea部署 ps: 江湖不是打打杀杀,江湖是人情事故。 解释: Gitea:类似于Git的代码版本管理工具。Docker:Docker-Compose: Docker命令: 查看镜像:docker images 删除镜像…

2023年江苏专转本成绩查询步骤

2023年江苏专转本成绩查询时间 2023年江苏专转本成绩查询时间预计在5月初,参加考试的考生,可以关注考试院发布的消息。江苏专转本考生可在规定时间内在省教育考试院网,在查询中心页面中输入准考证号和身份证号进行查询,或者拨…

【u盘提示:驱动器未格式化】如何解决?

u盘虽然使用很方便,可随时拷贝资料到任何有电脑的地方,但它的问题也是比较多的,其中u盘提示驱动器未格式化故障最让人心虚,因为已经无法打开u盘了,里面的资料怎么办,很重要的怎么办,所以今天就教…

LSSANet:一种用于肺结节检测的长、短切片感知网络

文章目录 LSSANet: A Long Short Slice-Aware Network for Pulmonary Nodule Detection摘要方法Long Short Slice GroupingLong Short Slice-Aware Network 实验结果 LSSANet: A Long Short Slice-Aware Network for Pulmonary Nodule Detection 摘要 提出了一个长短片感知网…

《Spring MVC》 第六章 MVC类型转换器、格式化器

前言 介绍MVC类型转换器、格式化器 1、使用场景 <form th:action"{/user/register}" method"post">用户名&#xff1a;<input type"text" name"userName"/><br/>密码&#xff1a;<input type"password&q…

【Access】win 10 / win 11:Access 下载、安装、使用教程(「管理信息系统」实践专用软件)

目录 一、前言 二、卸载 Office 三、下载 Office Tool Plus 四、安装 Office&#xff08;内含 Access&#xff09; &#xff08;1&#xff09;启动 Office Tool Plus &#xff08;2&#xff09;部署 &#xff08;3&#xff09;安装 Office&#xff08;内含 Access&#…

【Arduino SD卡和数据记录教程】

【Arduino SD卡和数据记录教程】 1. 前言2. 工作原理3. Arduino SD 卡模块代码4. Arduino SD卡数据记录1. 前言 在本Arduino教程中,我们将学习如何将SD卡模块与Arduino板一起使用。此外,结合DS3231实时时钟模块,我们将制作一个数据记录示例,将温度传感器的数据存储到SD卡中…

Vue3技术7之toRaw与markRaw、customRef、provide与inject、响应式数据的判断、组合式API的优势分析

Vue3技术7 toRaw与markRawtoRawApp.vueDemo.vue markRawDemo.vue 总结 customRefApp.vue总结 provide与inject目录结构App.vueChild.vueSon.vue总结 响应式数据的判断App.vue总结 组合式API的优势配置式的API存在的问题组合式API的优势 toRaw与markRaw toRaw App.vue <te…

H7-TOOL的CANFD Trace全解析功能制作完成,历时一个月(2023-04-28)

为了完成这个功能&#xff0c;差不多耗费了一个月时间&#xff0c;精神状态基本已经被磨平了。 当前已经支持&#xff1a; 1、LUA小程序控制&#xff0c;使用灵活。 2、采用SWD接口直接访问目标板芯片的CANFD外设寄存器和CANFD RAM区实现&#xff0c;支持USB&#xff0c;以太网…

Paimon: Streaming data lake 数据湖项目的后起之秀

什么是Paimon? Paimon的官网介绍是&#xff1a;Streaming data lake platform with high-speed data ingestion, changelog tracking and efficient real-time analytics. Paimon 是流数据湖平台&#xff0c;具有高速数据摄取、变更日志跟踪和高效的实时分析能力 数据湖是大…

Vue 路由

文章目录 Vue 路由安装简单实例NPM 路由实例 Vue 路由 本章节我们将为大家介绍 Vue.js 路由。 Vue.js 路由允许我们通过不同的 URL 访问不同的内容。 通过 Vue.js 可以实现多视图的单页Web应用&#xff08;single page web application&#xff0c;SPA&#xff09;。 Vue.js…

万字长文 - Nature 综述系列 - 给生物学家的机器学习指南 1

生物数据的规模不断扩大和固有复杂性促使越来越多的人在生物学中使用机器学习来构建相关生物过程的信息和预测模型。所有机器学习技术都是把数据拟合到模型&#xff0c;然而&#xff0c;具体方法千差万别&#xff0c;乍一看似乎令人困惑。在这篇综述中&#xff0c;我们旨在向读…

绩效管理系统有哪些推荐?

绩效管理系统有哪些推荐&#xff1f;市面上的绩效管理系统五花八门&#xff0c;这就来给大家推荐几款优质的&#xff01; 一、如何选择绩效管理系统 在选择绩效管理系统之前&#xff0c;需要先考虑以下几个问题&#xff1a; 了解你的企业目标和需求&#xff1a;在选择绩效管…