【软件测试】第一章·软件测试概述
🌈 个人主页:十二月的猫-CSDN博客
🔥 系列专栏: 🏀软件测试与软件项目管理_十二月的猫的博客-CSDN博客💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光
目录
1. 前言
2. 导论
2.1 软件测试概述
2.2 为什么要进行软件测试
2.3 什么是软件测试
2.3.1 软件测试与程序测试
2.3.2 软件测试的目的
2.3.3 软件测试的定义
2.4 软件测试和质量保证的关系
2.5 软件测试和软件开发的关系
2.6 测试驱动开发的思想
2.6.1 TDD、UTDD和ATDD
3. 总结
1. 前言
考试前猫猫又开始更新考试科目了(也就是开始学了bushi)。本学期更新的科目有:
- 软件测试
- 软件项目管理
- 爬虫和Web数据管理
- 数据可视化
本系列【软件测试】将针对软件测试的基础知识进行拆分讲解,既是对自己学习的一次巩固也想为后面学习的猫友们提供一些帮助。如果大家有空可以点个免费的赞和收藏呀~~你的鼓励真的对猫猫很重要。
2. 导论
2.1 软件测试概述
系统地理解软件测试:
- 第一条路:质量——目标——方法——测试用例——缺陷【测试】
- 第二条路:质量——思想——管理——阶段——缺陷【管理测试】
- 第一条路目的:测试发现缺陷,处理缺陷。
- 第二条路目的:思想指导下,在软件开发的各个阶段有目的的安排/管理各种测试清除缺陷。
2.2 为什么要进行软件测试
为什么要做某事:某种特性/现象——》通过做某事能够缓解/解决某类现象。
- 软件总存在缺陷。
- 软件测试能够发现缺陷,保证软件质量。
- 软件存在缺陷会带来巨大损失。
- 软件测试提早发现缺陷,控制开发成本。
- 软件存在缺陷,导致软件不稳定。
- 软件测试能够提早更正软件,提高产品的可靠性。
2.3 什么是软件测试
2.3.1 软件测试与程序测试
软件测试 不等于 程序测试
- 软件不是可执行的程序。“需求、设计和代码”都是软件的一部分,对这三者的评审属于“静态测试”,平常理解的测试大多是对可执行程序的测试属于“动态测试”。
- 缺陷发现的越早,开发成本越低。
2.3.2 软件测试的目的
Bill Hetzel博士(证明为主):
- 软件测试就是为程序能够按预期设想那样运行而建立足够的信心。
-
“软件测试是一系列活动以评价一个程序或系统的特性或能力并确定是否达到预期的结果”。
-
测试是为了验证软件是否符合用户需求,即验证软件产品是否能正常工作。
Glenford J.Myers(破坏为主):
- 测试是为了证明程序有错,而不是证明程序无错误。
- 一个好的测试用例是在于它能发现至今未发现的错误。
- 一个成功的测试是发现了至今未发现的错误的测试。
《软件测试完全指南》(评估为主):
- 测试是以评价一个程序或系统属性为目标的一种活动,测试是对质量的度量。
- 测试不仅仅是一个发现错误的过程,而且包含对软件质量的评价内容。因此需要制定各类软件质量的标准。
- 提出VV&T理论:软件测试是由验证和确认组成的整体。 验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性;“确认”是确认所开发的软件是否满足用户真正需求的活动。
Rick的《系统的软件测试》(预防为主):
- 测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。
- 测试和开发是并行的,用来预防缺陷的发生没提高软件质量。
现代的软件测试包含:正向思维、逆向思维
2.3.3 软件测试的定义
- 验证/确认软件的质量,并获得产品质量的全面、客观的信息。(正向思维)
- 发现问题,提高质量。在开发全过程中,持续性提供质量反馈,控制项目风险。(逆向思维)
正向思维:证明为主+评估为主
逆向思维:破坏为主+预防为主
2.4 软件测试和质量保证的关系
软件开发需要进行SQA,也就是软件质量保证活动。
软件质量保证(Software Quality Assurance,SQA)活动是通过对软件产品有计划的进行评审和审计来验证软件是否合乎标准的系统工程,通过协调、审查和跟踪以获取有用信息,形成分析结果以指导软件过程。
-
对软件工程各个阶段的进展、完成质量及出现的问题进行评审、跟踪。
-
审查和验证软件产品是否遵守适用的标准、规程和要求,并最终确保符合标准、满足要求。
-
建立软件质量要素的度量机制,了解各种指标的量化信息,向管理者提供可视信息。
软件测试与SQA的关系:
- SQA指导、监督软件测试的计划和执行,督促测试工作的结果客观、准确和有效,并协助测试流程的改进。
- 软件测试是SQA重要手段之一,为SQA提供所需的数据,作为质量评价的客观依据。
- SQA是一项管理工作,侧重于对流程的评审和监控。
- 测试是一项技术性的工作,侧重对产品进行评估和验证。
2.5 软件测试和软件开发的关系
测试不是开发的下一道工序!!!
瀑布模型的错误性:
真正的关系:
2.6 测试驱动开发的思想
TDD(test driven development):测试在前,开发在后
2.6.1 TDD、UTDD和ATDD
- TDD有广义、狭义之分;狭义上,TDD 指的是UTDD;广义上,TDD 包括UTDD、ATDD。
- 为了消除歧义,此处我们进行 统一术语(TDD采用广义说法)。所以,TDD可分为UTDD、ATDD两大分支;在代码层面,进行TDD(测试驱动开发),称为UTDD(单元测试驱动开发);在业务层面,进行TDD(测试驱动开发),则称为ATDD(验收测试驱动开发)。
- ATDD(验收测试驱动开发),由于验收方法和类型也是多种多样的。所以根据验收方法和类型的不同,将ATDD细分为BDD、EDD,FDD、CDCD等各种的实践方法。
3. 总结
本篇文章作为【软件测试】系列的第一篇文章,主要用来帮助大家先与软件测试认识一下,见个面~~~后续将一一带大家和软件测试成为好朋友!
如果想持续关注【软件测试】和【软件项目管理】系列文章,可以订阅:
- 软件测试与软件项目管理_十二月的猫的博客-CSDN博客
如果想学习计算机其他方面的核心知识(都是猫猫的优质好文哦),可以订阅:
- 计算机网络_十二月的猫的博客-CSDN博客
- 软件工程与面向对象_十二月的猫的博客-CSDN博客、
- 操作系统与数据库_十二月的猫的博客-CSDN博客
- 编译原理_十二月的猫的博客-CSDN博客
- 算法启示录_十二月的猫的博客-CSDN博客
如果觉得本文对你有帮助,友友们可以点个赞,收个藏呀~
相关文章:
【软件测试】第一章·软件测试概述
🌈 个人主页:十二月的猫-CSDN博客 🔥 系列专栏: 🏀软件测试与软件项目管理_十二月的猫的博客-CSDN博客 💪🏻 十二月的寒冬阻挡不了春天的脚步,十二点的黑夜遮蔽不住黎明的曙光 目录…...
格雷希尔G10和G15系列自动化快速密封连接器,适用于哪些管件的密封,以及它们相关的特性有哪些?
格雷希尔G10和G15系列快速密封连接器,用于自动化和半自动化过程中的外部或内部密封,通过使用气压驱动来挤压内部的密封圈,创造一个适用于各种管件的无泄漏密封连接,连接器内部的弹性密封圈可以提供其他产品不能提供的卓越密封性能…...
从零实现一个高并发内存池 - 1
C 高性能内存池解析 在 C 开发中,内存管理一直是影响程序性能的关键因素之一。传统的内存分配方式如 malloc 和 free 在高并发场景下往往存在性能瓶颈。为了解决这一问题,很多优秀的内存池方案应运而生,其中 Google 的 tcmalloc(T…...
在 STM32 上使用 register 关键字
在 STM32 上使用 register 关键字时,有一些特别需要注意的事项。虽然 register 是 C 语言中的一个标准关键字,它用于提示编译器将变量尽可能存放在寄存器中,以加速访问,但在 STM32 这样的嵌入式平台上,还是需要考虑几个…...
【入门】纸盒的最大体积是多少?
描述 在一张尺寸为 n * n 厘米的正方形硬纸板的四个角上,分别裁剪掉一个 m * m 厘米的小正方形,就可以做成一个无盖纸盒,请问这个无盖纸盒的最大体积是多少? 立方体的体积 v 底面积 * 高) 比如: n 5 &am…...
漏桶算法的实际应用案例:数据库批量写入流量控制
场景描述 假设有一个物联网平台,需要实时接收成千上万台设备上报的数据(如温度、湿度等),并将数据存入数据库。设备可能在某些时刻集中发送数据(例如定时批量上报),直接写入数据库可能导致以下问…...
c++函数参数列表后面的const的作用(常量成员函数)
c函数参数列表后面的const的作用 class Person { public://普通构造函数Person():age(0){}//常量成员函数void read_age() const {age100; //错误!常量成员函数不允许修改成员变量(除非成员变量用mutable修饰)std::cout << "age:…...
Java的While循环写的出票简单程序
import java.util.Scanner;public class Hello {public static void main(String[] args) {Scanner in new Scanner(System.in);int balance 0;while(true){System.out.print("请投币: ");int amount in.nextInt();balance balance amount;if(balance >10 )…...
时间序列基础【学习记录】
文章目录 1. 时间序列中的标签2. 时间序列中的窗口分割器2.1.概述2.2.窗口分割器demo 3. 时间序列的数据加载器3.1.概述3.2.时间序列的dataset3.3.Tensor类型3.4.测试完整流程demo 1. 时间序列中的标签 在目标检测领域的数据集中的图像会有一个标签**(标记一个物体是猫还是狗或…...
Andorid之TabLayout+ViewPager
文章目录 前言一、效果图二、使用步骤1.主xml布局2.activity代码3.MyTaskFragment代码4.MyTaskFragment的xml布局5.Adapter代码6.item布局 总结 前言 TabLayoutViewPager功能需求已经是常见功能了,我就不多解释了,需要的自取。 一、效果图 二、使用步骤…...
光谱相机的光电信号转换
光谱相机的光电信号转换是将分光后的光学信息转化为可处理的数字信号的核心环节,具体分为以下关键步骤: 一、分光后光信号接收与光电转换 分光元件作用 光栅/棱镜/滤光片等分光元件将入射光分解为不同波长单色光,投射至探测器阵列表面…...
MySQL历史版本下载及安装配置教程
1、访问官网下载mysql https://dev.mysql.com/downloads/mysql/ 2、找到历史版本 我这里的版本是最新的mysql8.0.42 下载完成之后,将压缩包进行解压 3、环境变量 在系统变量中找到Path,点击进入编辑,然后依次点击确定退出即可 注意!!&am…...
【ArcGIS】根据shp范围生成系列等距点:范围外等距点+渔网点(Python全代码)
【ArcGIS】根据shp范围生成系列等距点 目标1:生成边界外一定范围、并且等间距分布的点📁 所需数据:操作步骤-ArcGIS代码处理-Python 目标2:生成等距渔网点📁 所需数据:代码处理-Python 参考 目标1ÿ…...
基于FPGA的视频接口之千兆网口(六GigE纯逻辑)
协议简介 相信大家只有对于GigE有所了解的读者,才能找到这篇文章,所谓的GigE协议包含两个方面分别是视频协议(GVSP)和控制协议(GVCP)。 在本文我们重点讲的是基于FPGA纯逻辑实现阉割版的GigE协议,也就是说在很多视频传输过中,只用到了视频流传输,并没有控制方面的要求…...
android 权限配置
在AOSP 14的ROM定制中,<exceptions>和<privapp-permissions>是用于管理特权应用权限的两种不同机制,主要区别在于作用范围、配置方式和权限授予逻辑。以下是具体分析: 1. <privapp-permissions> 标签 作用: 用…...
广告推荐算法入门 day1 --项目选型
文章目录 0 前言1 广告推荐的基本流程2 场景和baseline初步框定2.1召回场景2.2排场景2.3精排场景 3 一个入门小例子感受--淘宝用户购物行为数据可视化分析3.1 数据集介绍3.2 数据分析目标1.时间维度2.产品维度3.行为维度4.用户维度 4 基础项目选型4.1场景 推荐资料后记 0 前言 …...
【Qt】之音视频编程2:QtAV的使用篇
QtAV 基本播放控制功能实现(C & QML) QtAV 提供了完整的播放控制 API,支持 播放、暂停、停止、快进快退、截屏 等功能。以下是具体实现方法: 1. C 控制方式 基本播放控制 #include <QtAV> #include <QtAV/AVPlaye…...
技术视角下的TikTok店铺运营:从0到1的5个关键点
在当今数字化时代,TikTok Shop作为新兴的电商平台,为众多商家带来了新的机遇。从技术运营的角度来看,以下5个关键点是每个TikTok店铺运营者都需要注意的: 1、规则先行,技术助力合规开店 地区选择:技术分析显…...
机器学习 --- 特征工程(一)
机器学习 — 特征工程(一) 文章目录 机器学习 --- 特征工程(一)一,特征工程概念二,特征工程API三,DictVectorizer 字典列表特征提取四,CountVectorizer 文本特征提取4.1 API4.2 英文…...
cocos creator 3.8 下的 2D 改动
在B站找到的系统性cocos视频教程,纯2D开发入门,链接如下: zzehz黑马程序员6天实战游戏开发微信小程序(Cocos2d的升级版 CocosCreator JavaScript)_哔哩哔哩_bilibili黑马程序员6天实战游戏开发微信小程序(Cocos2d的升级版 CocosCreator Ja…...
2025-05-13 表征学习
表征学习 表征学习(Representation Learning),又称特征学习,是机器学习领域中的一类技术,旨在自动的从原始数据中学习处有效的特征表示,使得后续的机器学习任务(分类、聚类、预测)能…...
【WebApi】YiFeiWebApi接口安装说明
YiFeiWebApi接口安装说明 一、 数据库配置文件修改二、 IIS环境配置(建议IIS7.0)三、 安装.NET 8.0 运行时四、 IIS配置站点五、 发布系统六、 测试接口七、测试服务器站点接口八、其他问题查看日志解决九、ApiPost项目文档 一、 数据库配置文件修改 说明: DSCSYSSq…...
亚马逊云科技:开启数字化转型的无限可能
在数字技术蓬勃发展的今天,云计算早已突破单纯技术工具的范畴,成为驱动企业创新、引领行业变革的核心力量。亚马逊云科技凭借前瞻性的战略布局与持续的技术深耕,在全球云计算领域树立起行业标杆,为企业和个人用户提供全方位、高品…...
爬虫请求频率应控制在多少合适?
爬虫请求频率的控制是一个非常重要的问题,它不仅关系到爬虫的效率,还涉及到对目标网站服务器的影响以及避免被封禁的风险。合理的请求频率需要根据多个因素来综合考虑,以下是一些具体的指导原则和建议: 一、目标网站的政策 查看网…...
Rimworld Mod教程 武器Weapon篇 近战章 第二讲:生物可用的近战来源
本讲分析的是在原版(coreall dlc)环境下,一个Pawn可以用的Tools的所有来源。 重点要分析的是RimWorld.Pawn_MeleeVerbs下的方法GetUpdatedAvailableVerbsList,我把它贴在下面: public List<VerbEntry> GetUpdat…...
SAP汽配解决方案:无锡哲讯科技助力企业数字化转型
汽配行业面临的挑战与机遇 随着汽车行业的快速发展,汽配企业面临着激烈的市场竞争、供应链复杂化、成本压力增大等多重挑战。传统的管理模式已难以满足现代汽配企业对高效生产、精准库存、快速响应的需求。在此背景下,数字化转型成为汽配企业的必然选…...
day19-线性表(顺序表)(链表I)
一、补充 安装软件命令: sudo apt-get install (软件名) 安装格式化对齐:sudo apt-get install clang-format内存泄漏检测工具: sudo apt-get install valgrind 编译后,使用命令 valgrind ./a.out 即可看内存是…...
里氏替换原则:Java 面向对象设计的基石法则
一、原则起源与核心定义 20 世纪 80 年代,计算机科学家芭芭拉・里氏(Barbara Liskov)在一篇论文中首次提出了里氏替换原则(Liskov Substitution Principle,LSP),这成为面向对象设计的重要理论基…...
GBK与UTF-8编码问题(2)
1. 问题现象 在python代码中,用open函数打开文本文件并显示文本内容,中文显示乱码,代码如下。 from tkinter import * import tkinter.filedialogroot Tk() # 给窗口的可视化起名字 root.title(Open File Test)# 设定窗口的大小(长 * 宽) r…...
项目三 - 任务6:回文日期判断
本任务通过判断回文日期,深入学习了Java中日期和字符串处理的相关知识。通过输入年、月、日,生成8位日期字符串,利用StringBuffer的reverse()方法反转字符串,比较原字符串与反转后的字符串是否一致,从而判断是否为回文…...
从零开始掌握FreeRTOS(1)移植到STM32
目录 提前准备 源码文件移植 修改 stm32f10x_it.c 修改 FreeRTOS.h 本章思维导图。 提前准备 学习 FreeRTOS 的第一步就是有一份最工程能够跑在 STM32 上。本篇将记录本人从0搭建一个最基础的移植工程Demo。 要完成这份 Demo,首先我们需要预先准备以下东西&…...
esp32硬件支持AT指令
步骤1:下载AT固件 从乐鑫官网或Git鑫GitHub仓库(https://github.com/espressif/esp-at)获取对应ESP32型号的AT固件(如ESP32-AT.bin)。 步骤2:安装烧录工具 使用 esptool.py(命令行工具&#…...
【神经网络与深度学习】局部最小值和全局最小值
引言 在机器学习和优化问题中,目标函数的优化通常是核心任务。优化过程可能会产生局部最小值或全局最小值,而如何区分它们并选择合适的优化策略,将直接影响模型的性能和稳定性。 在深度学习等复杂优化问题中,寻找全局最小值往往…...
部署安装git-2.49.0.tar.xz
实验环境 git主机:8.10 所需软件 git-2.49.0.tar.xz 实验开始 实验目的:安装升级git2.49.0 编译安装 yum remove git -y --卸载旧版git cd /usr/local/src/ wget https://www.kernel.org/pub/software/scm/git/git-2.49.0.tar.xz …...
SpringBoot的单体和分布式的任务架构
在Spring Boot生态中,定时任务框架的选择需根据架构类型(单体或分布式)和功能需求进行权衡。以下从框架特性、适用场景及Spring Boot集成方式等角度,详细梳理主流的定时任务框架及其分类: 一、单体架构下的定时任务框架…...
第四章 部件篇之按钮矩阵部件
第四章 部件篇之按钮矩阵部件 在 LVGL中, 按钮矩阵部件相当于一系列伪按钮的集合,它按一定的序列来排布这些按钮。值得注意的是,这些伪按钮并不是真正的按钮部件(lv_btn) , 它们只是具有按钮外观的图形&…...
二分查找算法的思路
二分查找思路总结 明确目标与单调性特点: 核心目标:寻找满足某种条件的答案(如最小/最大值)。单调性要求:需要证明你的判断函数具有单调性——即如果某个答案 T 可行,那么大于 T 的答案通常也是可行的&…...
Shell脚本与Xshell的使用、知识点、区别及原理
Shell脚本与Xshell的使用、知识点、区别及原理 Shell脚本 基本概念 Shell脚本是一种为Shell编写的脚本程序,通常用于自动化执行一系列命令。它是在Unix/Linux系统下的命令行解释器与用户交互的接口。 主要知识点 脚本结构:以#!/bin/bash开头…...
【PmHub后端篇】PmHub中基于Redis加Lua脚本的计数器算法限流实现
1 限流的重要性 在高并发系统中,保护系统稳定运行的关键技术有缓存、降级和限流。 缓存通过在内存中存储常用数据,减少对数据库的访问,提升系统响应速度,如浏览器缓存、CDN缓存等多种应用层面。降级则是在系统压力过大或部分服务…...
【递归、搜索与回溯】专题一:递归(二)
📝前言说明: 本专栏主要记录本人递归,搜索与回溯算法的学习以及LeetCode刷题记录,按专题划分每题主要记录:(1)本人解法 本人屎山代码;(2)优质解法 优质代码…...
【Linux】操作系统入门:冯诺依曼体系结构
引言:从一次QQ聊天说起 你是否好奇,当你在键盘上敲下一行文字发送给好友时,计算机内部发生了什么?为什么鼠标点击后程序就能瞬间响应?这一切的答案,都藏在计算机的“心脏”——冯诺依曼体系结构中。 一、硬…...
量化感知训练与 PyTorch 的哪些事
大家好呀!今天咱们要来聊聊一个超厉害的技术——量化感知训练(Quantization-Aware Training,简称 QAT) 在神经网络的世界里,我们总是想方设法地让模型变得更准确、更高效,毕竟谁不想自己的模型在边缘设备上…...
【Mac 从 0 到 1 保姆级配置教程 15】- Python 环境一键安装与配置,就是这么的丝滑
文章目录 前言安装 Python 环境VSCode 配置Python 环境NeoVim 配置 Python 环境(选看)1. Python LSP 配置2. 打开 python 语言支持 最后参考资料系列教程 Mac 从 0 到 1 保姆级配置教程目录,点击即可跳转对应文章: 【Mac 从 0 到 …...
前端学习(3)—— CSS实现热搜榜
效果展示 具体的展示效果如下,可以直接在浏览器显示: 页面分为两部分,一部分是 body 标签里的 html 结构,一部分是 style 标签里的CSS代码(页面布局的部分数据直接在代码里显示了) 一,html结…...
大数据——解决Matplotlib 字体不足问题(Linux\mac\windows)
1、将下载好的字体文件放到文件夹中 谷歌官方字体 import matplotlib print(matplotlib.matplotlib_fname())cp NotoSansSC-Regular.ttf /data/home/miniconda3/envs/python3128/lib/python3.12/site-packages/matplotlib/mpl-data/fonts/ttf/cp wqy-zenhei.ttc /data/home/m…...
嵌入式培训之数据结构学习(二)顺序表与单向链表
目录 一、顺序表 (一)顺序表的基本操作 1、创建顺序表 2、销毁顺序表 3、遍历顺序表 4、尾插,在顺序表的最后插入元素 5、判断表是否满 6、判断表是否空 7、按指定位置插入元素 8、查找元素,根据名字 9、根据名字修改指…...
PyInstaller 打包后 Excel 转 CSV 报错解决方案:“excel file format cannot be determined“
一、问题背景 在使用 Python 开发 Excel 转 CSV 工具时,直接运行脚本(python script.py)可以正常工作,但通过 PyInstaller 打包成可执行文件后,出现以下报错: excel file format cannot be determined, you must specify an engine manually 该问题通常发生在使用pandas…...
鸿蒙 PC 发布之后,想在技术上聊聊它的未来可能
最近鸿蒙 PC 刚发布完,但是发布会没公布太多技术细节,基本上一些细节都是通过自媒体渠道获取,首先可以确定的是,鸿蒙 PC 本身肯定是无法「直接」运行 win 原本的应用,但是可以支持手机上「原生鸿蒙」的应用,…...
HarmonyOS 【诗韵悠然】AI古诗词赏析APP开发实战从零到一系列(一、开篇,项目介绍)
诗词,作为中国传统文化的瑰宝,承载着中华民族几千年的思想智慧和审美情趣。然而,在现代社会快节奏的生活压力下,诗词文化却逐渐被忽视,更多的人感到诗词艰涩深奥,难以亲近。与此同时,虽然市场上…...
实物工厂零件画图案例(上)
文章目录 滑台气缸安装板旋转气缸安装板张紧调节块长度调节块双轴气缸安装板步进电机安装板梯形丝杆轴承座 简介:案例点击此处下载,这次的这几个案例并没有很大的难度,练习这几个案例最为重要的一点就是知道:当你拿到一个实物的时…...