软件测评师教程 第2章 软件测试基础 笔记

article/2025/7/15 3:25:26

第2章 软件测试基础 笔记 25.03.18

2.1 软件测试的基本概念

2.1.1 什么是软件测试

软件测试的定义:

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

软件测试应尽可能去发现更多的错误

软件测试的对象是软件,抱哈按程序、数据和文档

环境:软件的运行环境、测试环境

2.1.2 验证与确认

验证 Verification:通过提供客观证据来证实规定需求已经得到满足

确认 Validation :通过提供客观证据来证实针对某一特定预期用途或应用需求已经得到满足

验证的依据是 产片要求(需求规格),生产者内部的要求

确认的依据是用户的应用需求,一种外部要求

2.1.3 软件缺陷

将软件的问题(Problem)、错误(Error)以及因软件而引起的异常(Anomaly)、故障(Fault)、失效(Failure)、偏差(Variance)等均称为软件缺陷

软件错误是指在软件生存期内的不希望或不可接受的人为错误,其结果是导致软件缺陷的产生;
软件缺陷是存在于软件(文档、数据、程序)之中的那些不希望或不可接受的偏差
软件故障是指软件运行时出现的一种不希望或不可接受的内部状态
软件失效是指软件运行时产生的一种不希望或不可接受的外部行为

在需求分析、设计、编码阶段都会引入软件缺陷

需求分析阶段 占比 超过40%

设计阶段 占比 超过30%

编码阶段 低于 30%

编码阶段的缺陷更容易被发现,需求分析和设计阶段产生的缺陷很隐蔽,不易被发现

软件缺陷 要尽快修复,从发现到修复 间隔时间越短,代价越小

缺陷的分类包括:缺陷的状态、优先级严重性、发生概率、影响质量特性的范
围、引入的阶段、原因分析、解决方案、处置结果、处理风险等20余项。

优先级:紧急、高、中、低、无

严重性:阻塞、严重、一般、轻微、可忽略

2.1.4 测试与质量保证

质量保证(Quality Assurance,QA):为了提供足够的信任表明实体能够满足质量要求,而在质量管理体系中实施并根据需要进行证实的全部有计划和有系统的活动

质量模型

包括:产品质量模型、使用质量模型

产品质量模型将质量属性划分为八个质量特性:功能性、性能效率、兼容性、易用性、
可靠性、信息安全性、维护性和可移植性,每一个特性由相关的若干子特性组成;

使用质量模型包含了与系统交互结果有关的五个特性:有效性、效率、满意度、抗风险和周境覆盖,其中满意度、抗风险和周境覆盖还各自包含一些子特性。

软件质量保证与软件测试是包含关系,

软件质量保证 涉及的活动更宽泛,侧重管理性活动

软件测试 是软件质量保证的一种手段,侧重技术性活动

2.1.5 测试用例

测试用例(Test Case):为某个特定目标而开发的输入、执行条件以及预期结果的集合

要点:

第一,测试用例是测试人员针对具体目标设计或开发的,有非常强的目的性

第二,测试用例将体现软件的某一个具体运行实例或场景,包括输入的测试数据、执行条件、逻辑过程以及预期的逻辑结果等

第三,测试用例须提供准确的判定准则,即依照该用例实施测试获得实际结果时如何判定。

测试用例应该包含:用例的标识、名称、说明、环境配置、操作过程、各种条件、评价准则以及建立用例的人员和时间等信息,

其中 操作过程 要描述每一步操作的输入数据、过程说明、预期结果和通过准则等。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

测试脚本通常指一个特定测试的 可以被自动化工具执行的一系命令,可以通过工具录制测试操作、使用脚本语言编写。

2.1.6 测试策略

软件测试需要在有限资源的约束下,尽可能发现软件缺陷的技术和管理活动,理想情况是实现测试代价和测试质量的最佳平衡。

软件测试策略是在一定的软件测试标准、测试规范的指导下,依据测试项目的特定
环境而规定的软件测试的原则、方法的集合。

软件测试策略的确定是基于测试需求的分析以及测试风险评估的结果,定义测试
的范围和要求,选择合适的测试方法,并制定测试启动、停止、完成的标准和条件。

软件测试策略 分类:

基于分析(如风险分析、需求规格分析)的策略、

基于模型(如业务模型、软件质量模型、系统性能演化模型)的策略、

基于标准规范(如GB/T25000.51标准、软件验收标准)的策略

以及基于自动化的回归测试策略等等。

测试策略的输入 包括:
·测试所需软硬件资源的详细说明。
·针对测试和进度约束,需要的人力资源的角色和职责。
·测试方法、测试标准和完成标准。
·目标系统的功能性和非功能性需求、技术指标。
·系统局限(即系统不能够满足的需求)等。

测试策略的输出 包括:
·已批准或审核的测试策略文档、测试用例、测试计划。
·需要解决方案的测试项目。

制定测试策略的过程为:

  • 确定测试的需求。需要注意以下几点:
    ①测试需求必须是可观测、可测评的。
    ②软件需求与测试需求以及测试用例不是一对一关系。
    ③测试需求可能有许多来源。

  • 评估风险并确定测试优先级。

  • 确定测试策略

    一个好的测试策略应包括:实施的测试类型和测试目标、实施测试的阶段、技术、评估测试结果和测试是否完成的标准、对测试工作存在英雄的特殊事项等

2.2 软件测试的原则

遵循一些普遍性原则:

溯源性原则:测试应该溯源到原始需求

工程性原则:测试应观察软件开发的各个阶段,须尽早开展测试

独立性原则:避免开发者自己测试程序

合理性原则:测试成本与测试强度成正比,遗留缺陷与测试强度成反比,需要在质量要求和测试强度之间寻找合理的结合点,避免测试不足和过度测试,合理地设置测试终止条件

不完全性原则:测试只能尽可能多地发现错误,不能证明软件没有错误

相关性原则:软件中缺陷多的模块,应该加强测试

可接受性原则:根据修复代价决定是否修复缺陷

风险性原则:做好风险评估,明确风险化解的解决方案

2.3 软件测试模型

2.3.1 V模型

软件测试的V模型 - 开发的瀑布模型

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3.2 W模型

W模型是V模型的改进,充分体现尽早开展测试的原则,

目标: 从 发现缺陷 上升到 确保软件质量

W模型是两个V的叠加,一个V描述开发过程,一个V描述测试过程

测试分布于软件开发过程中的各个阶段

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3.3 H模型

W模型不适用:存者大量交叉活动、使用快速开发或敏捷开发的软件

H模型:把测试活动独立出来,软件开发过程中任意时间点,只要满足测试条件,就开展测试

测试流程可以与其他流程并行

H模型 能更好的兼顾测试的效率和灵活性,适用于各种规模及类型的软件项目。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.3.4 敏捷测试模型

敏捷测试是敏捷开发的组成部分,需要与开发流程良好融合

需要与项目的其他人员以及用户保持紧密协作,时刻关注需求变化并实施测试,体现测试的时效性和适应性

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

2.4软件测试分类

2.4.1 按工程阶段划分的测试

主要阶段:单元测试、集成测试、系统测试、确认测试和验收测试

单元测试(模块测试)

最小单位的测试活动,寻找模块内部的各种错误

依据:模块的详细设计文档

方法:白盒测试、黑盒测试以及灰盒测试

集成测试

主要任务:发现模块间接口可能存在的问题,

目标:验证个模块组装之后是否满足软件的设计文档的要求

集成策略:一次性集成、增量式集成

系统测试

目标:确认软件的应用系统是否按预期工作并满足应用的需求

依据:需求规格说明书

方法:黑盒测试 + 测试工具

确认测试和验收测试 以 需求规格说明书为依据,使用 黑盒测试方法

确认测试(有效性测试)

开发方组织,针对需求规格进行局部或全部的确认测试

包括:α测试、β测试

验收测试

用户方组织,在生产环境下进行全面的确认测试,并输出验收测试报告

2.4.2 按是否执行代码划分的测试

分为:动态测试、静态测试

动态测试:

通过运行软件来发现错误或验证程序是否符合预期要求

静态测试:

不运行软件,只做检查和审核,

测试对象包括:需求文档、设计文档、产品规格说明书以及代码

文档类 使用 评审方式进行

代码 使用 走查、代码审查方式

静态评审 包括:内部评审、外部评审

内部评审:范围比较广泛,侧重技术层面

外部评审:更多的对需求和设计文档进行评审,用户代表、领域专家参加

静态测试做得比较好,能及时发现更多的错误,减少动态测试的压力,降低修复成本,更好地保证软件的质量。

2.4.3 按测试实施主体划分的测试

分为:开发方测试、用户方测试、第三方测试

开发方测试:

应该涵盖软件生产及交付的各个阶段,以满足用户需求为最终目的。

熟悉软件,测试效率高

用户方测试

只能开展验收测试,基于真实需求,确认软件是否符合需求

第三方测试

主要进行软件的确认测试、验收测试和符合性测试

优势:

1.公平公正 2.高度专业化的测试团队和管理团队

3.丰富的测试经验和完备的测试工具 4.严格的专业资质

2.4.4 按是否关联代码划分的测试

分为:白盒测试、黑盒测试、灰盒测试

白盒测试(结构化测试、逻辑驱动测试、基于代码的测试)

测试人员了解程序内部结构、语句及工作过程

主要工作:进行各类逻辑覆盖测试,如:语句覆盖、路径覆盖、判定覆盖、条件覆盖、条件组合覆盖等

对程序完全覆盖 不现实,需要设计恰当的测试用例,用尽可能少的用例覆盖尽可能多的情况

黑盒测试(功能测试、基于规格说明的测试、数据驱动的测试)

通过软件外部表现进行测试,不关心程序内部结构、实现,只关心程序的输入和输出。

依据 需求规格说明书,设计测试用例,分析在特定输入情况下预期的输出结果,根据软件实际运行结果来判定程序是否存在错误。

方法:等价类划分、边界值分析、判定表、因果图

白盒测试可以发现软件中的技术性错误,并准确定位错误位置,

黑盒测试可以判断用户需求的符合程度,测试效率更高,测试用例可复用

灰盒测试

介于白盒测试和灰盒测试之间,既关注黑盒测试中的输入输出,也在一定程度上关注程序的内部情况,

模块内黑盒测试,模块间白盒测试

2.4.5 按软件质量特性划分的测试

软件产品质量的八个质量特性:功能性、性能效率、兼容性、易用性、可靠性、信息安全性、维护性和可移植性,相应地可以针对这些特性或它们的子特性开展测试,从而形成系统的功能性测试、性能效率测试、兼容性测试、易用性测试、可靠性测试等等。

1.功能性测试

在指定条件下使用时,测试软件提供满足明确和隐含要求的功能的程度,包括软件功能的完备性、正确性和适合性。

2.性能效率测试

在指定条件下使用时,测试软件的性能及效率满足需求的程度,包括时间特性(如响应时间、处理时间、吞吐率)、资源利用性(如内存占用、CPU占用)、容量(如并发用户数、通信带宽、交易吞吐量、数据库规模)。

3.兼容性测试

在共享相同的硬件或软件环境的条件下,测试软件能够与其他软件交换信息和/或执行其所需的功能的程度,包括软件的共存性和互操作性。

4.易用性测试

在指定的使用周境中,测试软件在有效性、效率和满意度特性方面为了指定的目标可为指定用户使用的程度,包括软件的可辨识性、易学性、易操作性、用户差错防御性、用户界面舒适性、易访问性等。

5.可靠性测试

测试软件在指定条件下指定时间内执行指定功能的程度,包括软件的成熟性、可用性、容错性、易恢复性。

6.信息安全性测试

测试软件保护信息和数据的程度,包括保密性、完整性、抗抵赖性、可核查性、真实性。

7.维护性测试

测试软件能够被预期的维护人员修改的有效性和效率的程度,包括软件的模块化、可重用性、易分析性、易修改性、易测试性。

8.可移植性测试

测试软件能够从一种硬件、软件或其他运行(或使用)环境迁移到另一种环境的有效性和效率的程度,包括软件的适应性、易安装性、易替换性。

2.4.6 按符合性评价要求划分的测试

通过符合性测试,对软件进行符合性评价。

符合性测试的前提:符合性准则的文件,就绪的软件、软件的系统元素已存在

2.4.7 回归测试

只要软件发生了变化,都应该进行回归测试。

回归测试除了验证修改的部分,还要验证可能受到影响的功能。


http://www.hkcw.cn/article/wCyDWLiNjh.shtml

相关文章

[网页五子棋][匹配对战]落子实现思路、发送落子请求、处理落子响应

文章目录 落子实现思路发送落子请求处理落子响应两种棋盘的区别实现 handleTextMessage实现对弈功能控制台打印棋盘完善前端逻辑 落子实现思路 先来实现:点击棋盘,能发送落子请求 客户端 1 点击了棋盘位置,先不着急画子,而是给服…

【QT控件】QWidget 常用核心属性介绍 -- 万字详解

目录 一、控件概述 二、QWidget 核心属性 2.1 核心属性概览 2.2 enabled ​编辑 2.3 geometry 2.4 windowTitle 2.5 windowIcon 使用qrc文件管理资源 2.6 windowOpacity 2.7 cursor 2.8 font ​编辑 2.9 toolTip 2.10 focusPolicy 2.11 styleSheet QT专栏&…

【Java EE初阶】计算机是如何⼯作的

计算机是如何⼯作的 计算机发展史冯诺依曼体系(Von Neumann Architecture)CPU指令(Instruction)CPU 是如何执行指令的(重点) 操作系统(Operating System)进程(process) 进程 PCB 中的…

【仿muduo库实现并发服务器】使用正则表达式提取HTTP元素

使用正则表达式提取HTTP元素 1.正则表达式2.正则库的使用3.使用正则表达式提取HTTP请求行 1.正则表达式 正则表达式它其实是描述了一种字符串匹配的模式,它可以用来在一个字符串中检测一个特定格式的字串,以及可以将符合特定规则的字串进行替换或者提取…

力扣刷题Day 68:搜索插入位置(35)

1.题目描述 2.思路 方法1:回溯的二分查找。 方法2:看到了一个佬很简洁的写法,代码贴在下面了。 3.代码(Python3) 方法1: class Solution:def searchInsert(self, nums: List[int], target: int) ->…

23. Merge k Sorted Lists

目录 题目描述 方法一、k-1次两两合并 方法二、分治法合并 方法三、使用优先队列 题目描述 23. Merge k Sorted Lists 方法一、k-1次两两合并 选第一个链表作为结果链表,每次将后面未合并的链表合并到结果链表中,经过k-1次合并,即可得到…

docker-部署Nginx以及Tomcat

一、docker 部署Nginx 1、搜索镜像(nginx) [rootlocalhost /]# docker search nginx Error response from daemon: Get "https://index.docker.io/v1/search?qnginx&n25": dial tcp 192.133.77.133:443: connect: connection refused 简…

【dshow】VIDEOINFOHEADER2 头文件

VIDEOINFOHEADER2 是用于描述视频流格式的结构体&#xff0c;常用于 Windows 平台的 DirectShow 或 Media Foundation 编程中。 它的定义在以下头文件中&#xff1a; ✅ 所在头文件&#xff1a; #include <dvdmedia.h>&#x1f4cc; 前置说明&#xff1a; VIDEOINFOHEA…

CentOS8.3+Kubernetes1.32.5+Docker28.2.2高可用集群二进制部署

一、准备工作 1.1 主机列表 HostnameHost IPDocker IPRolek8s31.vm.com192.168.26.3110.26.31.1/24master&worker、etcd、dockerk8s32.vm.com192.168.26.3210.26.32.1/24master&worker、etcd、dockerk8s33.vm.com192.168.26.3310.26.33.1/24master&worker、etcd、…

Python----目标检测(Ultralytics安装和YOLO-V8快速上手)

一、Ultralytics安装 网址&#xff1a;主页 -Ultralytics YOLO 文档 Ultralytics提供了各种安装方法&#xff0c;包括pip、conda和Docker。通过 ultralytics pip包安装最新稳定版本的YOLOv8&#xff0c;或克隆Ultralytics GitHub 存储库以获取最新版本。可以使用Docker在隔离的…

Git实战--基于已有分支克隆进行项目开发的完整流程

Git克隆项目开发流程 ✅ 一、完整流程概述✅ 二、详细操作步骤Step 1&#xff1a;克隆仓库&#xff08;如果尚未克隆&#xff09;Step 2&#xff1a;获取远程分支信息并切换到 feature/ 获取所有远程分支Step 3&#xff1a;创建并切换到你的新分支Step 4&#xff1a;开始开发新…

FreeBSD 14.3 候选版本附带 Docker 镜像和关键修复

新的月份已经到来&#xff0c;FreeBSD 14.3 候选发布版 1 现已开放测试&#xff0c;它带来了一些您可能会觉得有用的更新&#xff0c;特别是如果您对Docker容器感兴趣的话。RC1 版本中一个非常受欢迎的改进是&#xff0c;FreeBSD 项目已开始将官方开放容器计划 (OCI) 镜像发布到…

界面分析 - 上

上方&#xff1a;图标&#xff0c;搜索框&#xff0c;功能按钮 左侧&#xff1a;文本显示&#xff0c;自定义按钮&#xff0c;点击自定义按钮的时候&#xff0c;最底下播放条不变&#xff0c;右侧界面随着按钮的改变而改变 右侧&#xff1a;文本信息显示&#xff0c;图片按钮…

电路图识图基础知识-高、低压供配电系统电气系统的继电自动装置(十三)

电气系统的继电自动装置 在供电系统中为保证系统的可靠性&#xff0c;保证重要负荷的不间断供电&#xff0c;常采用自动重合闸装置和备用电源自动投入装置。 1 自动重合闸装置 供配电系统多年运行实践表明&#xff0c;架空线路发生的故障多属于暂时性故障&#xff0c;如雷击…

NVMe协议简介之AXI总线更新

更新AXI4总线知识 AXI4总线协议 AXI4总线协议是由ARM公司提出的一种片内总线协议 &#xff0c;旨在实现SOC中各模块之间的高效可靠的数据传输和管理。AXI4协议具有高性能、高吞吐量和低延迟等优点&#xff0c;在SOC设计中被广泛应用 。随着时间的推移&#xff0c;AXI4的影响不…

机器学习:支持向量机(SVM)原理解析及垃圾邮件过滤实战

一、什么是支持向量机&#xff08;SVM&#xff09; 1. 基本概念 1.1 二分类问题的本质 在机器学习中&#xff0c;分类问题是最常见的任务之一。最简单的情况就是二分类&#xff1a;比如一封邮件是“垃圾邮件”还是“正常邮件”&#xff1f;一个病人是“患病”还是“健康”&a…

数据库系统概论(十二)SQL 基于派生表的查询 超详细讲解(附带例题表格对比带你一步步掌握)

数据库系统概论&#xff08;十二&#xff09;SQL 基于派生表的查询 超详细讲解&#xff08;附带例题表格对比带你一步步掌握&#xff09; 前言一、什么是派生表&#xff1f;二、派生表的使用示例场景1&#xff1a;分组统计后过滤数据场景2&#xff1a;替代临时表查询 三、SELEC…

二、Sqoop 详细安装部署教程

作者&#xff1a;IvanCodes 日期&#xff1a;2025年6月2日 专栏&#xff1a;Sqoop教程 Apache Sqoop 是一个强大的工具&#xff0c;用于在 Hadoop (HDFS, Hive, HBase) 与关系型数据库 (如 MySQL, PostgreSQL, Oracle) 之间高效传输数据。本教程将详细指导您如何根据官方网站截…

【烧脑算法】不定长滑动窗口:从动态调整到精准匹配以灵活特性实现高效破题

目录 求最长/最大 2730. 找到最长的半重复子字符串 2779. 数组的最大美丽值 1838. 最高频元素的频数 2516. 每种字符至少取 K 个 2831. 找出最长等值子数组 求最短/最小 1234. 替换子串得到平衡字符串 2875. 无限数组的最短子数组 76. 最小覆盖子串 632. 最小区间 …

一步一步配置 Ubuntu Server 的 NodeJS 服务器详细实录——3. 服务器软件更新,以及常用软件安装

前言 前面&#xff0c;我们已经 安装好了 Ubuntu 服务器系统&#xff0c;并且 配置好了 ssh 免密登录服务器 &#xff0c;现在&#xff0c;我们要来进一步的设置服务器。 那么&#xff0c;本文&#xff0c;就是进行服务器的系统更新&#xff0c;以及常用软件的安装 调整 Ubu…