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

news2024/11/26 20:35:24

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 第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章 软件测试概述

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模型强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的
      在这里插入图片描述
  • H模型
    • H模型将测试活动完全独立出来,形成了一个完全独立的流程,将测试准备活动和测试执行活动清晰地体现出来
    • H模型揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行
      在这里插入图片描述

1.7 测试的生命周期


总结

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023全球运维大会 | 智能运维中的数据管理和数据探索

GOPS 全球运维大会由高效运维社区(GreatOPS)、开放运维联盟(OOPSA)和 DevOps 时代社区联合主办,指导单位为云计算开源产业联盟、FinOps产业推进方阵。迄今为止,GOPS 已经举行了十九次,大会参会嘉…

Docker网络与资源控制

目录 一、Docker网络 1.Docker网络模式 2.Docker网络实现的原理 3.映射端口 4.none模式 5.bridge模式 二、资源控制 1.CPU 资源控制 2.cgroups有四大功能: 一、Docker网络 1.Docker网络模式 ●Host:容器将不会虚拟出自己的网卡&am…

如何保护数据安全?企业该从部署SSL证书开始

数字化时代,大数据开始蔓延到各行各业,影响着生活的方方面面。在犹如“皇帝穿新衣”般透明的大数据时代,数据泄露无孔不入,存在问题层出不穷,未知的漏洞隐患、安全边界的模糊、新的网络攻击手段、个人隐私的无处藏身等…

音视频开发面试题大盘点:掌握这些基础知识,你就能轻松应对面试

前言 音视频开发作为一种高技术含量的领域,随着人们对数字媒体的需求不断增加,其前景非常广阔。预计在2023年,音视频开发领域仍将继续保持快速发展的态势,尤其是在移动互联网、物联网、虚拟现实、增强现实等领域。 根据BOSS招聘…

deepstream6.2更新的新特性-支持雷达lidar的推理检测

1,其实在deepstream6.1中已经加入了3D深度图像 其实在deepstream6.1中已经加入了3D深度图像,可以将深度图像的数据显示出来,但是需要专门的深度相机,官方给出的是Intel realSense D435相机,它可以读取相机数据,并进行点云显示以及渲染深度绘制,这个功能有点类似调用ope…

ES集群配置

一、高并发下如何保证读写一致 1.1 写操作 对于写操作,一致性级别支持 quorum/one/all,默认为 quorum,即只有当大多数分片可用时才允许写操作。但即使大多数可用,也可能存在因为网络等原因导致写入副本失败,这样该副本…

centos集群上安装hive客户端的操作步骤以及hive介绍

系列文章目录 虚拟机centos7配置Hadoop单节点伪分布配置教程​​​​​​ hbase进阶操作——读流程与写流程介绍 HBase进阶——文件的合并、 MemStore Flush、StoreFile Compaction、 Region Split、高可用与预分区介绍 centos7虚拟机下hbase的使用案例讲解 文章目录 前言…

【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata

NacosSentinelSeata 9/9 1、SpringCloud Alibaba简介1.1 主要功能1.2 具体组件 2、SpringCloud Alibaba Nacos服务注册和配置中心2.1 Nacos介绍2.2 Nacos下载安装2.3 使用Nacos作为注册中心2.3.1 在父工程的pom文件中引入springcloudalibaba依赖2.3.2 创建cloudalibaba-provide…

面向对象(高级)-包装类的理解_基本数据类型、包装类、String类型间的转换及练习

包装类 大纲 包装类的使用 1.为什么要使用包装类? 为了使基本数据类型的变量具备引用数据类型变量的相关特征(比如:封装性、继承性、多态性)。我们给各个基本 数据类型的变量都提供了对应的包装类。2.(掌握&#xff…

Vue电商项目--项目路由

项目路由分析 vue-router 路由分为KV node平台(并非语言) 对于后台而言:K即为URL地址 V即为相应的中间件 前端路由: K即为URL(网络资源定位符) V即为相应的路由组件 路由的一个分析 确定项目结构顺序:上中下 -----只有中间部…

如何构建可靠的台账数据——详解台账管理系统的使用方法

随着数字化的发展,越来越多的企业开始采用电子台账管理,实现了对各项业务数据的及时准确保存和管理。而在台账管理应用中,发票管理、工单管理和库房台账是三大重要方面。下面我将详细介绍一下台账管理系统。 一、发票管理 1.收票台账报表 …

MySQL入门基础(一步一图)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️夕阳下,是最美的绽放&#xff0…

【数据结构】堆(二)

😛作者:日出等日落 📘 专栏:数据结构 把每天当作最后一天来过,那么你就能够学会珍惜。你珍惜了时间,时间自然会对你有所回报。 目录 🎄堆的创建: 堆排序: 向下调整的时…

【51单片机】按键操作(单个灯闪烁流水灯)

🎊专栏【51单片机】 🍔喜欢的诗句:更喜岷山千里雪 三军过后尽开颜。 🎆音乐分享【如愿】 大一同学小吉,欢迎并且感谢大家指出我的问题🥰 目录 🍔同一个灯 🏳️‍🌈效果…

怎么把png图片压缩到100k以内,3个工具高效处理

怎么把png图片压缩到100k以内?为什么要压缩图片呢?当我们在提交资料的时候,而系统却提示图片过大无法上传的情况,大多都限制100K以内,这个时候我们就需要压缩图片。当我们网站打开的速度很慢的时候,这个时候…

DevExpress:报表在winform窗体上显示(使用documentViewer控件)

一:控件认识 documentViewer(版本DX22.2),老版本中的可能是printControl(工具箱面板中可能找不到),通过官网搜索发现,这个控件现在继承于documentViewer这个控件。因此,使用documen…

HTML 5 画布(canvas)

canvas 元素使用 JavaScript 在网页上绘制图像&#xff0c;本身是没有绘图能力。 canvas 是一个矩形区域&#xff0c;可以控制其每一像素。 canvas 拥有多种绘制路径、矩形、圆形、字符以及添加图像的方法。 下面来做几个示例&#xff1a; 1、填充画布 <canvas id"…

ZLMediaKit 流媒体服务器RTSP推流时候 directProxy不同设置 时候的处理

1.directProxy默认值为1 也就是开启代理 我们先看默认设置下的推流流程 断点断在ringbuffer.h文件的write函数这里不管怎样都要经过这里 然后看堆栈 整理一下 RingBuffer<std::shared_ptr<toolkit::List<std::shared_ptr<mediakit::RtpPacket> > > >…

架构运维篇(八):Centos7/Linux中Nginx配置HTTPS支持

文章目标 在Nginx中安装HTTPS证书配置Nginx域名映射映射到shop-web和shop-admin两个项目 版本说明 Nginx : 1.22 配置域名 域名&#xff1a;www.baidu.com Nginx安装目录 /www/server/nginx 第一步&#xff1a;安装HTTPS证书 证书一共有两个文件&#xff1a; 1、www…

深入探究AD域审计:ADAudit Plus为您提供全方位保障

AD域审计是一项至关重要的任务&#xff0c;可以帮助组织保护其网络和数据免受黑客和内部威胁的攻击。ADAudit Plus是一种广泛使用的工具&#xff0c;可以帮助IT团队监控域控制器并检测任何安全问题。 ADAudit Plus 首先&#xff0c;ADAudit Plus提供了实时监视和警报功能&…