当前位置: 首页 > news >正文

测试分类介绍

今天小编来介绍下测试分类。

那么为什么要有这个测试分类呢?

软件测试是软件生命周期中的一个重要环节,具有较高的复杂性,对于软件测试,可以从不同的角度/维度加以分类,使开发者在软件开发过程中的不同层次,不同阶段对测试工作进行更好的执行和管理测试的分类方法

按照测试目标进行分类

这个是值根据测试所要验证的软件质量特性(如功能正确性、界面友好性、性能稳定性等)来划分测试类型

具体类别如下:

测试类型对应质量属性核心目标典型方法/工具
1. 功能测试功能适合性、准确性验证系统是否按需求正确实现业务逻辑黑盒测试、判定表、等价类
2. 界面测试(UI/UX)易用性、美观性验证界面是否符合设计规范,操作是否直观人工走查、视觉回归工具(Applitools)
3. 性能测试性能效率(响应时间、吞吐量、资源利用)验证系统在负载下的速度、稳定性和可伸缩性JMeter、LoadRunner、Gatling
4. 兼容性测试兼容性验证系统在不同环境(OS/浏览器/设备)下表现一致云测平台(BrowserStack、Testin)
5. 易用性测试易用性(可学习性、可操作性)验证用户能否高效、无挫败感地完成任务用户访谈、A/B测试、眼动追踪
6. 安全测试安全性(保密性、完整性、抗攻击性)验证系统能否抵御恶意攻击和数据泄露OWASP ZAP、Burp Suite、渗透测试
7. 可靠性测试可靠性(容错性、可用性)验证系统在异常或长时间运行下的稳定性故障注入、7×24 小时稳定性测试
8. 可维护性 & 可移植性测试可维护性、可移植性验证代码可读性、模块解耦、部署便捷性代码扫描(SonarQube)、部署演练

注意:有些情况下,会把弱网测试纳入性能测试,安装卸载测试纳入兼容性测试

具体内容如下:

1. 功能测试(Functional Testing)

  • 目标:验证“系统是否做了它该做的事”

  • 内容:

    • 业务流程(注册 → 登录 → 下单)

    • 输入验证(边界值、非法字符)

    • 数据处理(计算、存储、同步)

    • 错误处理(提示、回滚)

  • 示例:

  • 用户输入优惠券码,系统正确抵扣金额,且不可重复使用。


2. 界面测试(UI/UX Testing)

  • 目标:验证“界面是否好看、好用”

  • 内容:

    • 布局、字体、颜色、图标一致性

    • 控件状态(禁用/启用/悬停)

    • 提示文案清晰无错别字

    • 响应式适配(PC/Pad/手机)

  • 示例:

  • 在 iPhone 14 上,“提交订单”按钮完整显示,无遮挡。


3. 性能测试(Performance Testing)

  • 目标:验证“系统是否快、稳、省”

  • 子类型:

    • 负载测试:模拟预期用户量

    • 压力测试:突破系统极限

    • 稳定性测试:长时间运行是否泄漏

  • 示例:

  • 1000 用户并发下单,平均响应时间 ≤ 1.5s,错误率 < 0.1%。


4. 兼容性测试(Compatibility Testing)

  • 目标:验证“系统是否在各种环境下正常工作”

  • 维度:

    • 操作系统(Windows 10/11, macOS, Android 12/13)

    • 浏览器(Chrome, Firefox, Safari, Edge)

    • 设备(iPhone, 华为, 小米, iPad)

    • 分辨率 & 屏幕方向

  • 示例:

  • 在 Safari 16 上,支付页面 JavaScript 不报错。


5. 易用性测试(Usability Testing)

  • 目标:验证“用户是否愿意用、能轻松用”

  • 关注点:

    • 学习成本(新用户能否自助完成)

    • 操作效率(完成任务步骤是否最少)

    • 容错能力(误操作能否撤销)

  • 示例:

  • 90% 的测试用户能在 2 分钟内完成首次发布内容。


6. 安全测试(Security Testing)

  • 目标:验证“系统是否防得住攻击”

  • 常见攻击面:

    • 注入(SQL、XSS)

    • 越权(普通用户访问管理员接口)

    • 敏感信息泄露(日志、URL、缓存)

    • 会话劫持(Token 未加密/未过期)

  • 示例:

  • 输入 ' OR '1'='1 到登录框,系统返回“用户名或密码错误”,而非数据库报错。


7. 可靠性测试(Reliability Testing)

  • 目标:验证“系统是否扛得住意外”

  • 场景:

    • 网络中断后自动重连

    • 服务宕机后自动恢复

    • 长时间运行无内存泄漏

  • 示例:

  • APP 在后台运行 72 小时,内存占用无持续增长。


8. 可维护性 & 可移植性测试(Maintainability & Portability)

  • 目标:验证“系统是否易于修改和迁移”

  • 内容:

    • 代码模块化程度

    • 配置与代码分离

    • 部署脚本是否一键完成

    • 是否依赖特定硬件/OS

  • 示例:

  • 将服务从 CentOS 迁移到 Ubuntu,仅需修改 1 个配置文件

按照执行方式分类:

核心分类:两大执行方式

分类是否运行程序主要目的典型阶段
静态测试(Static Testing)不运行代码预防缺陷:在代码/文档编写阶段发现错误需求、设计、编码早期
动态测试(Dynamic Testing)运行程序发现缺陷:通过执行程序观察行为是否符合预期编码完成后(单元测试起

静态测试:

不执行被测软件,而是通过人工或工具对文档、代码、设计等制品进行检查,以发现潜在缺陷

主要方法:

方法说明责任人
1. 评审(Review)有组织的文档检查活动- 非正式评审:结对编程、走查(Walkthrough)
- 正式评审:技术评审(Technical Review)、审计(Inspection)
2. 静态分析(Static Analysis)用工具自动分析源代码/字节码- 代码规范检查(缩进、命名)
- 潜在缺陷检测(空指针、资源泄漏)
- 安全漏洞扫描(硬编码密码)

动态测试:

通过实际运行被测程序,输入测试数据、观察输出结果、行为、性能等是否符合预期

主要方法(按技术视角):

方法说明典型场景
1. 黑盒测试不关心内部结构,只测输入-输出功能测试、验收测试
2. 白盒测试基于代码逻辑设计用例(如覆盖所有分支)单元测试、集成测试
3. 灰盒测试介于两者之间,了解部分内部结构API 测试、数据库验证

主要方法(按自动化程度):

类型说明
手工测试人工操作界面或命令行执行
自动化测试用脚本/工具自动执行(如 Selenium、JUnit)

按照测试方法分类:

常用的测试方法有:白盒测试、灰盒测试、黑盒测试

方法概览:

方法是否需要代码知识测试视角主要目标典型阶段
白盒测试(White-box)需要内部结构视角
(像开发一样看代码)
验证代码逻辑是否被充分执行单元测试、集成测试
黑盒测试(Black-box)不需要用户视角
(只关心输入→输出)
验证功能是否符合需求系统测试、验收测试
灰盒测试(Gray-box)部分需要混合视角
(知道部分内部结构)
结合功能与结构,提高测试效率API测试、集成测试

白盒测试(动态)中的常见六种测试方法

覆盖类型定义覆盖目标示例(代码片段)是否覆盖所有路径?
1. 语句覆盖(Statement Coverage)每条可执行语句至少执行一次行覆盖率if (a>0) print("A"); else print("B");
→ 输入 a=1(只覆盖 print("A"))
否(else 分支未覆盖)
2. 判定覆盖(Decision Coverage)
(又叫分支覆盖)
每个判定(if/while)的真假分支都至少执行一次分支覆盖率同上 → 需 a=1(真)和 a=-1(假)否(复合条件可能漏)
3. 条件覆盖(Condition Coverage)每个原子条件(如 a>0, b==1)的真假值都至少出现一次条件取值覆盖率if (a>0 && b<5)
→ 需 a>0为真/假,b<5为真/假
否(未覆盖组合)
4. 判定-条件覆盖(Decision/Condition Coverage)同时满足判定覆盖 + 条件覆盖分支 + 条件取值同上 → 需覆盖所有条件取值 + 整个 if 的真假仍可能漏组合
5. 条件组合覆盖(Multiple Condition Coverage)每个判定中所有条件的真假组合都至少执行一次条件组合覆盖率if (a>0 && b<5)
→ 需4种组合:
(T,T), (T,F), (F,T), (F,F)
对单个判定是,但跨判定不一定
6. 路径覆盖(Path Coverage)程序中所有可能的执行路径都至少走一遍全路径覆盖率含多个 if 的嵌套 → 路径数 = 2ⁿ(n=独立判定数)是(理论上最全)

覆盖强度关系:

语句覆盖 < 判定覆盖 ≤ 条件覆盖 < 判定-条件覆盖 < 条件组合覆盖 ≤ 路径覆盖

黑盒测试中常用方法:

方法适用场景说明
等价类划分输入有范围/类型将输入划分为有效/无效类
边界值分析数值型输入测试边界及邻近值(min-1, min, min+1)
判定表法多条件组合逻辑用表格覆盖规则组合
状态迁移测试有状态系统(如订单状态)验证状态转换是否合法
场景法/用例法业务流程长模拟用户真实操作路径
错误推测法基于经验猜缺陷如“空输入”“超长字符串”

灰盒测试常用方法:

场景说明
API 测试知道请求/响应结构,但不关心服务端 if-else 逻辑
数据库验证知道表字段,验证增删改查后数据是否正确
集成测试知道模块A调用模块B,验证接口契约是否满足
安全测试(部分)知道登录流程,测试越权访问

按照测试阶段分类

通常可以分为以下这5个阶段:

阶段英文测试对象主要目标责任人
1. 单元测试Unit Testing单个函数/类/模块验证最小代码单元逻辑正确性开发人员
2. 集成测试Integration Testing多个模块/服务间交互验证接口、数据流、依赖是否正常开发 / 测试
3. 系统测试System Testing整个集成后的系统验证系统是否满足需求规格(功能+非功能)测试人员
4. 验收测试Acceptance Testing可交付的完整产品验证是否满足用户/业务方真实需求产品 / 用户 / 测试
5. 回归测试Regression Testing修改后的系统验证新代码是否破坏已有功能自动化 + 测试

各阶段详解:

1. 单元测试(Unit Testing)

  • 目标:验证最小可测试单元(如一个函数、一个类)的行为是否正确。

  • 特点:

    • 隔离外部依赖(用 Mock/Stub)

    • 执行速度快(毫秒级)

    • 覆盖率高(通常要求分支覆盖 ≥ 80%)

  • 方法:白盒测试(语句/分支覆盖)

  • 工具:

    • Java: JUnit + Mockito

    • Python: pytest + unittest.mock

    • JS: Jest, Mocha

  • 示例:

  • Java

  • 编辑

// 测试 calculateDiscount(100, true) → 应返回 80 @Test public void testVipDiscount() { assertEquals(80, DiscountService.calculateDiscount(100, true)); }

  • 责任人:开发人员(TDD/BDD 实践中甚至先写测试)


2. 集成测试(Integration Testing)

  • 目标:验证多个模块或服务在集成后能否协同工作。

  • 常见策略:

    • 自底向上:先测底层模块,逐步集成

    • 自顶向下:先测高层调用,用 Stub 模拟底层

    • 大爆炸集成:所有模块一次性集成(风险高,不推荐)

  • 测试重点:

    • API 接口契约(请求/响应格式)

    • 数据库读写一致性

    • 第三方服务调用(如支付、短信)

  • 方法:灰盒测试(知道接口,不深究内部逻辑)

  • 工具:

    • Postman(手动)

    • RestAssured, Karate(自动化)

    • TestContainers(集成数据库/中间件)

  • 示例:

  • 调用“创建订单”API → 验证订单服务是否正确调用库存服务扣减库存

  • 责任人:开发(模块间) / 测试(服务间)


3. 系统测试(System Testing)

  • 目标:对完整、集成后的系统进行全面验证,包括功能与非功能需求。

  • 测试类型覆盖(即提到的“万能公式”):

    • 功能测试

    • 界面测试

    • 性能测试

    • 兼容性测试

    • 安全测试

    • 易用性测试

    • 弱网测试

  • 方法:黑盒测试为主

  • 工具:

    • UI 自动化:Selenium, Cypress, Appium

    • 性能:JMeter, Locust

    • 安全:OWASP ZAP

  • 示例:

  • 用户从注册 → 登录 → 下单 → 支付 → 查看订单,全流程验证

  • 责任人:专职测试人员


4. 验收测试(Acceptance Testing)

  • 目标:确认系统是否满足业务方或最终用户的真实需求,决定是否可上线。

  • 类型:

    • UAT(User Acceptance Testing):由真实用户或产品经理执行

    • 合同验收测试:按合同条款验证

    • Alpha 测试:内部用户试用(开发环境)

    • Beta 测试:外部用户试用(生产环境灰度)

  • 特点:

    • 基于真实业务场景

    • 不关注技术细节

    • 通常手工执行

  • 示例:

  • 财务人员验证“月度报表导出”数据是否与线下账目一致

  • 责任人:产品经理、业务方、最终用户


5. 回归测试(Regression Testing)

  • 目标:确保新代码修改没有破坏已有功能。

  • 触发时机:

    • 修复 Bug 后

    • 新增功能后

    • 重构代码后

  • 策略:

    • 全量回归:成本高,适用于重大版本

    • 选择性回归:基于影响分析(Impact Analysis)

    • 自动化回归:核心主干流程必须自动化

  • 工具:所有自动化测试框架(Selenium, pytest, JUnit 等)

  • 示例:

  • 修改了登录逻辑后,重新执行“注册、登录、找回密码”相关用例

  • 责任人:测试 + 自动化脚本

按照是否手工测试分类

手工测试:

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

自动化测试:

就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。简单说

自动化测试是把以为驱动的测试行为转化为机器执行的一种过程。自动化测试比如功能测试自动化、

性能测试自动化、安全测试自动化。自动化测试按照测试对象来分的话,还可以分为接口测试、UI测试等

.接口测试的ROI(产出投入比)要比UI测试高

自动化测试优点

  • 节省成本

  • 提高测试人员执行工作效率

  • 保障软件的质量

自动化测试缺点

  • 对测试人员技术要求较高

  • 不能发散性测试

手工测试优点

  • 对测试人员技术要求没有自动化技术要求高

  • 可以进行发散性测试

手工测试缺点

  • 效率低

  • 人员,时间成本比起自动化测试都比较高

按照实施组织划分

核心分类如下:

维度α测试(Alpha Testing)β测试(Beta Testing)
中文名内部测试 / 封闭测试外部测试 / 公开测试
实施组织公司内部人员
(开发、测试、产品、非项目员工)
真实外部用户
(客户、种子用户、公众)
测试环境受控的内部环境
(开发/预生产环境)
真实用户环境
(用户自己的设备、网络、操作系统)
测试目标验证核心功能稳定性,发现严重缺陷验证真实场景下的可用性、兼容性、用户接受度
反馈机制直接、快速、结构化(如 Jira)间接、延迟、非结构化(如问卷、应用商店评论)
是否公开不对外公开可公开(Open Beta)或邀请制(Closed Beta)
典型阶段系统测试之后,正式发布之前α测试通过后,正式发布前(或作为灰度发布一环)

那么还有其他的一些测试分类,小编就在这里不再做过多介绍了,本次分享就到这里。

http://www.dtcms.com/a/554129.html

相关文章:

  • 上海川沙网站建设goood 谷德设计网官网
  • 做网站买什么笔记本好wordpress 关闭自动保存
  • 用jsp做网站登录界面模板代理记账公司哪家好
  • 如何在 Bash 命令中执行命令 (嵌套命令) ?
  • Java调用DeepSeek-R1大模型实现商品订单信息提取
  • postgresql 高频使用语句
  • tiago moveit环境配置过程
  • 怎么做婚庆网站平台京东seo是什么意思
  • 认识linux -- 编辑器vim以及编译器gcc/g++和Makefile文件
  • 金仓KES RWC:高并发写入场景下的数据库优化解决方案
  • RabbitMQ详细介绍
  • 迅为RK3562开发板重新挂载remount
  • discuz修改网站标题硬件开发岗位要求
  • StarRocks Data Agent
  • golang封装可扩展的crontab
  • 南京美容网站建设饿了吗网站建设思路
  • 投诉网站怎么做做短视频的能跟几个网站签约
  • 网站维护怎么收费腾讯企点官网入口
  • 高频 Redis 面试题答案解析
  • wordpress 导航站主题系统自动删除了wordpress
  • LeetCode 面试经典 150_链表_分隔链表(65_86_C++_中等)(拆分+尾插法)
  • 一种MP3文件的压缩方法
  • 做网站时候图片和视频放在哪里c 2015 做网站
  • puppeteer函数笔记,设置token跳过登录、自动选择图片上传等
  • 雄安网站建设400多少钱郑州关键词网站优化排名
  • 在使用openfe出现NameError: name ‘exit‘ is not defined的解决方案
  • 【计算机通识】认识 RESTful API
  • 使用cJosn将数据读写文件
  • 做软件搜狗seo软件
  • 仿土巴兔网站建设学院网站建设流程