软件测试都有什么???

文章目录

  • 一、白盒测试(结构测试)
  • 二、黑盒测试(功能测试)
  • 三、灰盒测试
  • 四、其他测试类型
  • 五、覆盖准则对比
  • 六、应用场景

软件测试主要根据测试目标、技术手段和覆盖准则进行分类。分为白盒测试、黑盒测试、灰盒测试及其他补充类型


一、白盒测试(结构测试)

基于代码内部逻辑设计测试用例,关注程序结构和覆盖准则:

  1. 语句覆盖
    确保每条代码语句至少执行一次。
  2. 分支(判定)覆盖
    覆盖代码中所有分支(如 if-else 的所有可能结果)。
  3. 条件覆盖
    覆盖每个逻辑条件(如 a>0 && b<5 中的每个子条件)。
  4. 条件组合覆盖
    覆盖所有条件组合(如 a>0b<5 的真假组合)。
  5. 路径覆盖
    覆盖代码中所有可能的执行路径(复杂度高,常用于关键模块)。
  6. MC/DC(修正条件/判定覆盖)
    航空领域常用,确保每个条件能独立影响判定结果。

二、黑盒测试(功能测试)

基于需求规格设计用例,不关注代码实现:

  1. 等价类划分
    将输入划分为有效/无效类,每类选代表性用例。
  2. 边界值分析
    针对输入边界(如最小值、最大值)设计用例。
  3. 决策表测试
    基于条件组合生成表格,覆盖所有规则。
  4. 状态转换测试
    针对系统状态迁移(如登录失败后的锁定机制)。
  5. 因果图分析
    将输入条件与输出结果关联,生成逻辑组合。
  6. 错误猜测法
    基于经验猜测易错场景(如空输入、超长字符串)。

三、灰盒测试

结合白盒与黑盒,部分了解内部逻辑:

  1. 基于模型的测试
    使用状态机或流程图生成用例。
  2. 接口测试
    验证模块间接口数据传递(如API参数校验)。
  3. 日志与监控分析
    结合日志数据定位代码问题。

四、其他测试类型

  1. 组合测试
    • Pairwise(配对测试):覆盖参数两两组合,减少用例数量。
  2. 基于经验的测试
    • 探索式测试:动态设计用例,依赖测试者直觉。
  3. 安全测试
    • 模糊测试(Fuzzing):输入随机/异常数据检测漏洞。
  4. 自动化测试
    • 数据驱动测试:分离测试逻辑与数据。
    • 关键字驱动测试:用自然语言描述测试步骤。

五、覆盖准则对比

覆盖类型描述强度排序(低→高)
语句覆盖每行代码至少执行一次最低
分支覆盖每个分支(如if结果)覆盖高于语句
条件覆盖每个子条件(如a>0)覆盖可能低于分支覆盖
条件组合覆盖所有子条件组合覆盖高(组合爆炸问题)
路径覆盖所有执行路径覆盖最高(但通常不可行)
MC/DC条件独立影响判定结果航空标准,高于分支覆盖

六、应用场景

  • 白盒测试:单元测试、代码审查、高可靠性系统(如航空航天)。
  • 黑盒测试:功能验证、用户场景模拟、验收测试。
  • 灰盒测试:集成测试、性能优化、接口验证。

根据项目需求选择合适的方法,通常需要组合多种策略以达到效率与覆盖率的平衡。

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

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

相关文章

very_easy_sql(SSRF+SQL注入)

题目有一行提示&#xff1a; you are not an inner user, so we can not let you have identify~&#xff08;你不是内部用户&#xff0c;所以我们不能让你进行身份验证&#xff09;联想到可能存在SSRF漏洞&#xff0c;一般情况下&#xff0c;SSRF攻击的目标是外网无法访问的内…

国内外主流AI编程工具全方位对比分析(截至2025年5月)

一、国际主流工具对比 1. Windsurf&#xff08;Codeium公司&#xff09; 核心功能&#xff1a;代理型AI编程&#xff08;代码导航/修改/命令执行&#xff09;、浏览器DOM访问、网页研究功能语言支持&#xff1a;70语言&#xff0c;包括Python/Java/JavaScript/Rust等[[22-23]…

ARP协议的工作原理

文章目录 ARP协议的工作原理ARP报文&#xff08;以太网&#xff09;ARP高速缓存 ARP协议的工作原理 ARP协议的作用是实现任意网络层地址到任意物理地址转换。工作原理是&#xff1a; 主机向自己所在网络广播一个ARP请求&#xff0c;该请求包含目标机器的网络地址。处于该网络…

【小知识酷】《Matlab》考点精简

在线编译器 https://matlab.mathworks.com/?elqsidumic49viv8wu5r6fckew 第1章 matlab基础知识 第1节 输出函数 1. 使用disp函数 disp函数可用于输出变量的值或者字符串。 % 输出字符串 disp(Hello, MATLAB!); %显示Hello, MATLAB!% 输出变量 x 10; disp(x); %显示10% 输出数…

码蹄集——中庸之道(三个数比较)

MT1112 中庸之道 请编写一个简单程序&#xff0c;输入3个整数&#xff0c;比较他们的大小&#xff0c;输出中间的那个数 格式 输入格式&#xff1a; 输入整型&#xff0c;空格分隔 输出格式&#xff1a;输出整型 样例 1 输入&#xff1a;1 5 3 输出&#xff1a;3 比较…

快速搭建一个vue前端工程

一、环境准备 1、安装node.js 下载地址&#xff1a;Node.js 推荐版本如下&#xff1a; 2、检查node.js版本 node -v npm -v 二、安装Vue脚手架 Vue脚手架是Vue官方提供的标准化开发工具。vue官网&#xff1a;https://cn.vuejs.org/ 全局安装vue/cli &#xff08;仅第一次…

React Native基础环境配置

React Native基础环境配置 1.引言2.React-Native简介3.项目基础环境搭建1.引言 感觉自己掌握的知识面还是有点太窄了,于是决定看看移动端的框架,搞个react搭一个后端管理项目,然后拿react-native写个小的软件,试着找个三方上架一下应用市场玩玩。毕竟不可能一直在简历上挂一…

PHP和Composer 安装

Composer 是 PHP 的 依赖管理工具&#xff0c;就像&#xff1a; Node.js 用 npm Python 用 pip Java 用 maven 用来安装和管理 PHP 项目中需要用到的第三方库 安装PHP可以理解成 Java解释器 安装PHP PHP For Windows: Binaries and sources Releaseshttps://windows.php.n…

API请求参数有哪些?

通用参数 app_key&#xff1a;应用的唯一标识&#xff0c;用于验证应用身份&#xff0c;调用API时必须提供。 timestamp&#xff1a;请求时间戳&#xff0c;通常为当前时间的毫秒级时间戳&#xff0c;用于防止请求被重放攻击。 format&#xff1a;返回数据的格式&#xff0c;…

并发笔记-条件变量(三)

文章目录 背景与动机30.1 条件变量的定义与基本操作 (Definition and Routines)30.2 生产者/消费者问题 (Bounded Buffer Problem)30.3 覆盖条件 (Covering Conditions) 与 pthread_cond_broadcast30.4 总结 背景与动机 到目前为止&#xff0c;我们已经学习了锁 (Locks) 作为并…

stm32实战项目:无刷驱动

目录 系统时钟配置 PWM模块初始化 ADC模块配置 霍尔接口配置 速度环定时器 换相逻辑实现 主控制循环 系统时钟配置 启用72MHz主频&#xff1a;RCC_Configuration()设置PLL外设时钟使能&#xff1a;TIM1/ADC/GPIO时钟 #include "stm32f10x.h"void RCC_Configu…

LC-3 中常见指令

当然可以&#xff01;以下是 LC-3 中常见指令&#xff08;汇编格式&#xff09;与对应的二进制编码格式 的总结表&#xff0c;通俗易懂地介绍每条指令的用途、操作码&#xff08;opcode&#xff09;以及格式结构。 ✅ 常见 LC-3 指令与对应的二进制格式 指令名称操作码&#x…

深入解析Docker:核心架构与最佳实践

文章目录 前言一、Docker 解决了什么问题&#xff1f;二、Docker 底层核心架构2.1 Docker 引擎的分层架构2.2 镜像的奥秘&#xff1a;联合文件系统&#xff08;UnionFS&#xff09;2.3 容器隔离的核心技术2.3.1 命名空间2.3.2 控制组&#xff08;Cgroups&#xff09;2.3.3 内核…

从零打造企业级Android木马:数据窃取与远程控制实战

简介 木马病毒已从简单的恶意软件演变为复杂的攻击工具,尤其在2025年企业级攻击中,木马病毒正成为黑客组织的主要武器之一。 本文将深入探讨如何制作具备数据窃取和远程控制功能的Android木马,从基础原理到企业级防御绕过技术,同时提供详细的代码实现,帮助开发者理解木马…

ES常识5:主分词器、子字段分词器

文章目录 一、主分词器&#xff1a;最基础的文本处理单元主分词器的作用典型主分词器示例 二、其他类型的分词器&#xff1a;解决主分词器的局限性1. 子字段分词器&#xff08;Multi-fields&#xff09;2. 搜索分词器&#xff08;Search Analyzer&#xff09;3. 自定义分词器&a…

【第三十五周】Janus-pro 技术报告阅读笔记

Janus-Pro 摘要Abstract文章信息引言方法Janus 架构Janus 训练Janus-Pro 的改进 实验结果总结 摘要 本篇博客介绍了Janus-Pro&#xff0c;这是一个突破性的多模态理解与生成统一模型&#xff0c;其核心思想是通过解耦双路径视觉编码架构解决传统方法中语义理解与像素生成的任务…

MySQL 数据操纵与数据库优化

MySQL数据库的DML 一、创建&#xff08;Create&#xff09; 1. 基本语法 INSERT INTO 表名 [(列名1, 列名2, ...)] VALUES (值1, 值2, ...); 省略列名条件&#xff1a;当值的顺序与表结构完全一致时&#xff0c;可省略列名&#xff08;需包含所有字段值&#xff09;批量插…

(9)被宏 QT_DEPRECATED_VERSION_X_6_0(“提示内容“) 修饰的函数,在 Qt6 中使用时,会被编译器提示该函数已过时

&#xff08;1&#xff09;起因是看到 Qt 的官方源代码里有这样的写法&#xff1a; #if QT_DEPRECATED_SINCE(6, 0) //里面的都是废弃的成员函数QT_WARNING_PUSHQT_WARNING_DISABLE_DEPRECATEDQT_DEPRECATED_VERSION_X_6_0("Use the constructor taking a QMetaType inst…

【bibtex4word】在Word中高效转换bib参考文献,Texlive环境安装bibtex4word插件

前言 现已退出科研界&#xff0c;本人水货一个。希望帮到有缘人 本篇关于如何将latex环境中的参考文献bib文件转化为word&#xff0c;和一些踩坑记录。 可以看下面的资料进行配置&#xff0c;后面的文字是这些资料的补充说明。 参考文章&#xff1a;https://blog.csdn.net/g…

Python 自动化脚本开发秘籍:从入门到实战进阶(6/10)

摘要&#xff1a;本文详细介绍了 Python 自动化脚本开发的全流程&#xff0c;从基础的环境搭建到复杂的实战场景应用&#xff0c;再到进阶的代码优化与性能提升。涵盖数据处理、文件操作、网络交互、Web 测试等核心内容&#xff0c;结合实战案例&#xff0c;助力读者从入门到进…