测试分类详解

测试分类

一、按测试对象分类

1. 界面测试

1.1 测试内容介绍
界面测试验证用户界面(UI)的视觉呈现和交互逻辑,确保符合设计规范并提供良好的用户体验。测试内容包括:

  • 页面布局和元素对齐
  • 字体、颜色和图标一致性
  • 交互反馈(悬停、点击状态)
  • 导航逻辑和流程
  • 响应式设计(不同设备适配)

1.2 关键指标

  • 设计规范符合度 ≥ 95%
  • 操作路径深度 ≤ 3步(核心功能)
  • 元素响应时间 ≤ 300ms
  • 无障碍标准(WCAG 2.1 AA级)

1.3 常见界面错误

  • 文字重叠
  • 截断显示
  • 不合理换行
  • 错位元素
  • 焦点丢失
  • 状态不一致
  • 未对齐元素

2. 可靠性测试

2.1 可靠性概念

可靠性指系统在规定条件下和时间内,无故障执行所需功能的能力。反映软件的健壮性持续服务能力

2.2 关键指标

可靠性等级年故障时间适用场景
99.9%(三个9)≤8.76小时普通应用
99.99%(四个9)≤52.6分钟企业系统
99.999%(五个9)≤5.26分钟金融/医疗

2.3 常见可靠性问题

  • 服务不可用(HTTP 503)
  • 数据损坏或丢失
  • 事务处理中断
  • 资源耗尽导致的崩溃
  • 级联故障(一个组件故障引发系统崩溃)

3. 容错性测试

验证系统在异常输入故障环境下的自我恢复能力:

  • 输入容错:非法字符、超长文本、空值提交
  • 环境容错
    • 硬件故障(磁盘满、内存不足)
    • 网络中断(丢包率>50%)
    • 依赖服务不可用
  • 恢复机制
    • 自动重试策略(如指数退避)
    • 事务回滚能力
    • 优雅降级方案

4. 文档测试

国家有关计算机软件产品开发文件编制指南中共有14 种文件,可分为3 大类。

  • 开发文件:可行性研究报告、软件需求说明书、数据要求说明书、概要设计说明书、详细设计说明书、数据库设计说明书、模块开发卷宗。
  • 用户文件:用户手册、操作手册,用户文档的作用:改善易安装性;改善软件的易学性与易用性;改善软件可靠性;降低技术支持成本。
  • 管理文件:项目开发计划、测试计划、测试分析报告、开发进度月报、项目开发总结报告。

在实际的测试中,最常见的是用户文件的测试,例如:手册说明书等。也会有一些公司对需求文档进行测试,来保证需求文档的质量。

测试要点:

  • 步骤可执行性(按文档操作能否达成目标)
  • 术语一致性(与UI和代码保持一致)
  • 截图与版本匹配
  • 多语言翻译准确性
  • 搜索功能有效性(PDF/在线文档)

5. 兼容性测试

跨维度兼容验证矩阵:

维度测试范围工具推荐
操作系统Windows/macOS/Linux/iOS/AndroidVirtualBox, Docker
浏览器Chrome/Firefox/Safari/EdgeBrowserStack
分辨率720P/1080P/4K/折叠屏Viewport Resizer
外设打印机/扫描仪/特殊输入设备Device Farmer
API版本向后兼容3个历史版本Postman, Swagger

6. 易用性测试

基于尼尔森十大原则的验证:

  1. 系统状态可见性 → 进度指示器
  2. 系统与现实匹配 → 符合领域术语
  3. 用户控制与自由 → 可撤销操作
  4. 一致性与标准 → 统一交互模式
  5. 防错设计 → 危险操作确认
  6. 识别优于回忆 → 可视化操作路径
  7. 灵活高效 → 支持快捷键
  8. 美学与简约 → 信息层级清晰
  9. 容错与恢复 → 错误指导方案
  10. 帮助文档 → 上下文敏感帮助

7. 安装卸载测试

关键测试场景矩阵:

阶段WindowsmacOSLinuxMobile
安装管理员/普通权限安装应用商店/直接安装源码编译/包管理器应用商店/侧载
升级增量更新/覆盖安装版本兼容升级依赖冲突解决热更新/强更
卸载控制面板卸载残留检测AppCleaner验证包管理器卸载验证清除用户数据
回滚版本回退功能TimeMachine恢复快照还原历史版本安装

8. 安全测试

OWASP Top 10 2023核心测试点:

  • 注入攻击
  • 认证失效
  • 敏感数据泄露
  • XXE漏洞
  • 访问控制缺陷
  • 安全配置错误
  • XSS攻击
  • 反序列化漏洞
  • 组件已知漏洞
  • 日志监控缺失

渗透测试工具链:

  • 侦察阶段:Nmap, Shodan
  • 漏洞扫描:OWASP ZAP, Nessus
  • 渗透利用:Burp Suite, Metasploit
  • 后渗透:Cobalt Strike, Mimikatz

9. 性能测试

分层性能指标:

层级关键指标测试工具
前端FCP/LCP/FID/CLSLighthouse
接口TPS/响应时间P99/错误率JMeter, Locust
服务器CPU/内存/磁盘IO/网络吞吐Prometheus, Grafana
数据库查询耗时/锁等待/连接池SQL Profiler
全链路端到端延迟/事务成功率SkyWalking

性能反模式检测:

  • 循环内数据库查询
  • 未分页的大数据加载
  • 同步阻塞调用
  • 缓存穿透/雪崩
  • 线程死锁

10. 内存泄漏测试

内存泄漏检测方法论:

检测方法
静态分析
运行时监控
压力测试
堆转储分析
Lint工具
Valgrind
Java VisualVM
长时间负载
MAT分析工具

内存泄漏典型场景:

  • 未释放资源:数据库连接、文件句柄
  • 监听器未注销:事件总线订阅
  • 静态集合膨胀:缓存无淘汰策略
  • 线程局部变量:未清理的ThreadLocal
  • 第三方库缺陷:Native代码泄漏

排查黄金法则:

  1. 监控内存趋势(持续增长即泄漏)
  2. 对比GC前后内存快照
  3. 定位支配树(Dominator Tree)中的异常对象
  4. 检查引用链(Reference Chain)中的非预期持有者

二、按是否查看代码分类

1. 黑盒测试

1.1 测试方法概览
  • 等价类划分
  • 边界值分析
  • 因果图/正交判定表
  • 正交测试法
  • 场景设计法
  • 错误猜测法
1.2 黑盒测试优缺点总结
优点缺点
✅ 无需了解内部实现细节❌ 无法覆盖所有代码路径
✅ 贴近用户实际使用场景❌ 可能遗漏边界条件组合
✅ 早期即可开展测试❌ 测试用例设计依赖需求质量
✅ 适合功能验证❌ 难以检测深层次逻辑错误

2. 白盒测试

2.1 语句覆盖(Statement Coverage)

定义:确保程序中的每条可执行语句至少被执行一次

测试用例设计

# 示例函数
def login(username, password):if username == "admin":  # 语句1print("管理员登录")   # 语句2else:print("普通用户登录") # 语句3return True              # 语句4# 满足语句覆盖的用例
test_case1 = ("admin", "123456")  # 覆盖语句1,2,4
test_case2 = ("user", "password") # 覆盖语句1,3,4

覆盖能力:⭐

缺陷检测:无法发现条件分支中的逻辑错误

2.2 判定覆盖(Decision Coverage)

定义:每个逻辑判断的真假分支至少执行一次

测试用例设计

# 示例函数
def check_discount(amount, is_vip):if amount > 100 and is_vip:  # 判定点return 0.8return 1.0# 满足判定覆盖的用例
test_case1 = (150, True)   # 真分支
test_case2 = (50, False)   # 假分支

覆盖能力:⭐⭐

局限:无法检测条件内部的错误(如 amount > 100 写成 amount >= 100

2.3 条件覆盖(Condition Coverage)

定义:每个子条件的真假取值至少出现一次

测试用例设计

# 示例函数
def grant_access(age, has_permission):if age >= 18 and has_permission:  # 条件1: age>=18, 条件2: has_permissionreturn Truereturn False# 条件覆盖用例
test_case1 = (20, True)   # 条件1真, 条件2真
test_case2 = (15, False)  # 条件1假, 条件2假

覆盖能力:⭐⭐⭐

特点:比判定覆盖更细致,但可能遗漏判定组合

2.4 判定-条件覆盖(Condition/Decision Coverage)

定义:同时满足判定覆盖和条件覆盖

测试用例设计

# 接上例
test_case1 = (20, True)   # 真分支, 条件1真, 条件2真
test_case2 = (15, True)   # 假分支, 条件1假, 条件2真 → 覆盖假分支
test_case3 = (20, False)  # 假分支, 条件1真, 条件2假 → 覆盖假分支

覆盖能力:⭐⭐⭐⭐

价值:平衡了判定和条件的验证深度

2.5 条件组合覆盖(Multiple Condition Coverage)

定义:所有条件取值的可能组合都被覆盖

测试用例设计

# 两个条件,需4种组合
test_case1 = (20, True)   # 条件1真, 条件2真 → 真分支
test_case2 = (20, False)  # 条件1真, 条件2假 → 假分支
test_case3 = (15, True)   # 条件1假, 条件2真 → 假分支
test_case4 = (15, False)  # 条件1假, 条件2假 → 假分支

覆盖能力:⭐⭐⭐⭐⭐

代价:条件数n → 组合数2^n(指数级增长)

2.6 路径覆盖(Path Coverage)

定义:覆盖程序中所有可能的执行路径

测试用例设计

def process_order(status, amount):if status == "PAID":          # 分支1if amount > 1000:         # 分支2print("大额订单审核")else:print("订单直接发货")else:print("等待付款")# 路径覆盖用例
test_case1 = ("PAID", 1500)  # 路径:分支1真→分支2真
test_case2 = ("PAID", 500)   # 路径:分支1真→分支2假
test_case3 = ("UNPAID", 0)   # 路径:分支1假

覆盖能力:⭐⭐⭐⭐⭐

挑战:循环结构可能导致路径无限(需设置最大迭代)

2.7 白盒测试优缺点总结
优点缺点
✅ 高代码覆盖率(可达100%)❌ 需要编程能力和源码访问权限
✅ 发现深层次逻辑错误❌ 测试成本高(设计/维护)
✅ 适合关键模块测试❌ 可能产生"过度测试"
✅ 支持自动化测试❌ 无法检测遗漏功能

3. 灰盒测试

功能验证
代码洞察
黑盒
灰盒测试
白盒
接口测试
性能分析
安全扫描
3.1 典型应用场景
  1. API测试:基于接口文档设计用例 + 监控代码执行路径
  2. 性能优化:负载测试(黑盒) + 代码热点分析(白盒)
  3. 渗透测试:模拟攻击(黑盒) + 漏洞源码定位(白盒)
3.2 灰盒测试优缺点总结
优势挑战
✅ 兼顾内外视角❌ 需要跨领域技能
✅ 高效定位缺陷根源❌ 测试设计复杂度高
✅ 适合微服务架构❌ 工具链整合成本
✅ 优化测试资源分配❌ 可能遗漏纯黑盒场景

三、按开发阶段分类

1. 单元测试

单元测试是对软件组成单元进行测试。其目的是检验软件基本组成单位的正确性。测试的对象是软件设计的最小单位:模块。

  • 测试阶段:编码后或者编码前(TDD)
  • 测试对象:最小模块
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:代码和注释+详细设计文档
  • 测试方法:白盒测试
  • 测试内容:模块接口测试、局部数据结构测试、路径测试、错误处理测试、边界测试

2. 集成测试

集成测试也称联合测试(联调)、组装测试,将程序模块采用适当的集成策略组装起来,对系统的接口及集成后的功能进行正确性检测的测试工作。集成主要目的是检查软件单位之间的接口是否正确。

  • 测试阶段:一般单元测试之后进行
  • 测试对象:模块间的接口
  • 测试人员:白盒测试工程师或开发工程师
  • 测试依据:单元测试的模块+概要设计文档
  • 测试方法:黑盒测试与白盒测试相结合
  • 测试内容:模块之间数据传输、模块之间功能冲突、模块组装功能正确性、全局数据结构、单模块缺陷对系统的影响

3. 系统测试

将软件系统看成是一个系统的测试。包括对功能、性能以及软件所运行的软硬件环境进行测试。

  • 测试阶段:集成测试通过后
  • 测试对象:完整可交付系统
  • 测试人员:专业测试团队
  • 测试依据:需求规格说明书(SRS)
  • 测试方法:黑盒测试为主
  • 环境要求:功能、界面、可靠性、易用性、性能、兼容性、安全性等

4. 回归测试

回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。

5. 冒烟测试

冒烟测试的对象是每一个新编译的需要正式测试的软件版本,目的是确认软件主要功能和核心流程正常,在正式进行系统测试之前执行。冒烟测试一般在开发人员开发完毕后提交给测试人员来进行测试时,先进行冒烟测试,保证基本功能正常,不阻碍后续的测试。

如果冒烟测试通过,则测试人员开始进行正式的系统测试,如果不通过,则测试人员可以让开发人员重新修复代码直到冒烟测试通过,再开始进行系统测试。

回归测试和冒烟测试都属于系统测试

6. 验收测试

验收测试是部署软件之前的最后一个测试操作。它是技术测试的最后一个阶段,也称为交付测试。验收测试的目的是确保软件准备就绪,按照项目合同、任务书、双方约定的验收依据文档,向软件购买都展示该软件系统满足原始需求。

  • 测试阶段:系统测试通过之后
  • 测试对象:整个系统(包括软硬件)。
  • 测试人员:主要是最终用户或者需求方。
  • 测试依据:用户需求、验收标准
  • 测试方法:黑盒测试
  • 测试内容:同系统测试(功能…各类文档等)

四、按实施组织分类

1. Alpha测试

2. Beta测试

类型执行者典型活动
Alpha测试内部用户受控环境模拟操作
Beta测试外部公测用户真实环境收集反馈
UAT(用户验收测试)真实客户生产环境验证业务流程
合同验收测试客户+供应商SLA(服务等级协议)验证

五、按是否运行代码分类

1. 静态测试

谓静态测试(static testing)就是不实际运行被测软件,而只是静态地检查程序代码、界面或文档中可能存在的错误的过程。不以测试数据的执行而是对测试对象的分析过程,仅通过分析或检查源程序的设计、内部结构、逻辑、代码风格和规格等来检查程序的正确性。

2. 动态测试

动态测试(dynamic testing),指的是实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程,所以判断一个测试属于动态测试还是静态的,唯一的标准就是看是否运行程序。

六、按是否手工进行测试分类

1. 手工测试

手工测试就是由人去一个一个的输入用例,然后观察结果,和机器测试相对应,属于比较原始但是必须的一个步骤。

优点:自动化无法替代探索性测试、发散思维结果的测试。

缺点:执行效率慢,量大易错。

2. 自动化测试

在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。

七、按地域分类

国际化测试、本地化测试

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

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

相关文章

打开NRODIC SDK编译不过怎么处理,keil与segger studio

打开NRODIC SDK编译不过怎么处理,以下是keil处理. 1,如图,不要安装安装也不会过 2. 不要安装点击否 3.点击确定后进来这个样子 4.这里选择这个勾,OK后就不会再有后面的pack_license 5.去掉勾后这里要选择自己SDK对应的pack版本,我的是8.27.0 6.OK后弹出个界面也要反复选择…

HarmonyOS ArkUI-X开发中的常见问题及解决方案

一、跨平台编译与适配问题 1. 平台特定API不兼容 ‌问题现象‌:使用Router模块的replaceUrl或startAbility等鸿蒙专属API时,编译跨平台工程报错cant support crossplatform application。 ‌解决方案‌: 改用ohos.router的跨平台封装API&a…

CSS篇-2

4. position 的值分别是相对于哪个位置定位的? position 属性是 CSS 布局中一个非常核心的概念,它允许我们精确控制元素在文档中的定位方式,从而脱离或部分脱离正常的文档流。理解 position 的不同值以及它们各自的定位基准,是实…

设计模式:观察者模式 - 实战

一、观察者模式场景 1.1 什么是观察者模式? 观察者模式(Observer Pattern)观察者模式是一种行为型设计模式,用于定义一种一对多的依赖关系,当对象的状态发生变化时,所有依赖于它的对象都会自动收到通知并更…

Axure中继器交互完全指南:核心函数解析×场景实战×避坑策略(懂得才能应用)

亲爱的小伙伴,在您浏览之前,烦请关注一下,在此深表感谢!如有帮助请订阅专栏! Axure产品经理精品视频课已登录CSDN可点击学习https://edu.csdn.net/course/detail/40420 主要内容:中继器核心函数解析、场景方法详解、注意事项、特殊函数区别 课程目标:提高中继器的掌握…

【设计模式-4.5】行为型——迭代器模式

说明:本文介绍设计模式中,行为型设计模式之一的迭代器模式。 定义 迭代器模式(Iterator Pattern),也叫作游标模式(Cursor Pattern),它提供一种按顺序访问集合/容器对象元素的方法&…

鸿蒙OSUniApp自定义手势识别与操作控制实践#三方框架 #Uniapp

UniApp自定义手势识别与操作控制实践 引言 在移动应用开发中,手势交互已经成为提升用户体验的重要组成部分。本文将深入探讨如何在UniApp框架中实现自定义手势识别与操作控制,通过实际案例帮助开发者掌握这一关键技术。我们将以一个图片查看器为例&…

【数据结构】树形结构--二叉树

【数据结构】树形结构--二叉树 一.知识补充1.什么是树2.树的常见概念 二.二叉树(Binary Tree)1.二叉树的定义2.二叉树的分类3.二叉树的性质 三.二叉树的实现1.二叉树的存储2.二叉树的遍历①.先序遍历②.中序遍历③.后序遍历④.层序遍历 一.知识补充 1.什…

从认识AI开始-----解密LSTM:RNN的进化之路

前言 我在上一篇文章中介绍了 RNN,它是一个隐变量模型,主要通过隐藏状态连接时间序列,实现了序列信息的记忆与建模。然而,RNN在实践中面临严重的“梯度消失”与“长期依赖建模困难”问题: 难以捕捉相隔很远的时间步之…

接地气的方式认识JVM(一)

最近在学jvm,浮于表面的学了之后,发现jvm并没有我想象中的那么神秘,这篇文章将会用接地气的方式来说一说这些jvm的相关概念以及名词解释。 带着下面两个问题来阅读 认识了解JVM大致有什么在代码运行时的都在背后做了什么 JVM是个啥&#xf…

Next.js 15 与 Apollo Client 的现代集成及性能优化

Next.js 15 与 Apollo Client 的现代集成及性能优化 目录 技术演进集成实践性能优化应用案例未来趋势 技术演进 Next.js 15 核心特性对开发模式的革新 Next.js 15 通过引入 App Router、服务器组件(Server Components)和客户端组件(Clie…

无人机桥梁3D建模、巡检、检测的航线规划

无人机桥梁3D建模、巡检、检测的航线规划 无人机在3D建模、巡检和检测任务中的航线规划存在显著差异,主要体现在飞行高度、航线模式、精度要求和传感器配置等方面。以下是三者的详细对比分析: 1. 核心目标差异 任务类型主要目标典型应用场景3D建模 生成…

Hive数据倾斜问题深度解析与实战优化指南

一、数据倾斜现象的本质与危害 数据倾斜是Hive在MapReduce计算过程中,​部分Key对应的数据量远超其他Key,导致少数Reducer任务处理时间远高于其他任务的性能瓶颈问题。典型表现为: ​作业进度卡在99%​​:99%的Reducer已完成,剩余1%持续数小时​资源利用率失衡​:部分节…

VRRP 原理与配置:让你的网络永不掉线!

VRRP 原理与配置:让你的网络永不掉线! 一. VRRP 是什么,为什么需要它?二. VRRP 的核心概念三. VRRP 的工作原理四. 华为设备 VRRP 配置步骤 (主备模式)4.1 拓扑示例4.2 🛠 配置步骤 五. VRRP 配…

解决开发者技能差距:AI 在提升效率与技能培养中的作用

企业在开发者人才方面正面临双重挑战。一方面,IDC 预测,到2025年,全球全职开发者将短缺400万人;另一方面,一些行业巨头已暂停开发者招聘,转而倚重人工智能(AI)来满足开发需求。这不禁…

痛点即爆点?如何挖掘客户的痛点和需求?

销售的核心在于精准洞察客户需求与痛点,并运用专业能力为其提供定制化解决方案,从而消除客户顾虑、解决问题,最终实现双赢。而快速识别客户痛点,不仅是成交的关键,更是建立专业形象、赢得客户信任的核心能力。那么&…

云服务器如何自动更新系统并保持安全?

云服务器自动更新系统是保障安全、修补漏洞的重要措施。下面是常见 Linux 系统(如 Ubuntu、Debian、CentOS)和 Windows 服务器自动更新的做法和建议: 1. Linux 云服务器自动更新及安全维护 Ubuntu / Debian 系统 手动更新命令 sudo apt up…

fvm install 下载超时 过慢 fvm常用命令、flutter常用命令

Git 配置问题 确保 Git 使用的是 HTTPS,而不是 SSH。如果你有 .gitconfig,确保没有配置奇怪的代理: git config --global --get http.proxy git config --global --get https.proxy如果有代理设置且不需要,取消代理:…

多语种OCR识别系统,引领文字识别新时代

在全球化与数字化深度融合的今天,语言障碍成为企业跨国协作、信息管理的一大挑战。无论是跨国合同签署、多语言档案管理,还是跨境商务沟通,高效精准的文字识别技术已成为刚需。中安智能OCR多语种识别系统应运而生,凭借其强大的光学…