夜雨聆风学习资料网

ARTICLE · 1328406

软件测试方法讲解(含实例)按类别把常见测试方法讲清楚,每种都配一个能直接上手的例子

软件测试方法讲解(含实例)按类别把常见测试方法讲清楚,每种都配一个能直接上手的例子

软件测试方法讲解(含实例)

按类别把常见测试方法讲清楚,每种都配一个能直接上手的例子

为什么要分这么多类

软件出问题的方式很多,所以测试方法也多。业界常用"测试金字塔"来理解:底层是量大、便宜、跑得快的单元测试;中间是接口与集成;顶层是少量、贵、慢的端到端测试。下面按类别把常见方法逐一讲清楚,每种方法都给一个具体例子,方便照着做。

单元与底层

最靠近代码本身的一层,性价比最高,应该最先做、最常做。

单元测试Unit Testing

底层最快

  • 测什么
  • 最小可测单元(一个函数或方法)在给定输入下产出正确输出。
  • 怎么做
  • 对每个函数写断言,覆盖正常输入、边界输入、异常输入;依赖项用 mock 隔离。
  • 工具
  • JUnitpytestJestGo test
  • 例子
  • 一个计算折扣的函数 calcDiscount(price, rate),传 (100, 0.9) 断言返回 90;传 (100, 0) 断言返回 100;传负数断言抛异常。
  • 注意
  • 只验证"没崩"不算测过;为了凑覆盖率写无意义的断言没价值。

组件 / 模块测试Component Testing

中层

  • 测什么
  • 一个独立组件(如一个微服务、一个前端页面模块)在隔离环境下的行为,比单测大、比系统集成小。
  • 怎么做
  • 把组件跑起来(自带内部依赖,外部依赖 mock),验证其对外接口与内部逻辑。
  • 例子
  • 一个"用户资料"微服务,mock 掉数据库,验证它对外提供的查询、更新接口在正确/错误参数下的表现。

集成测试(含 API 集成)Integration Testing

中层集成

  • 测什么
  • 多个模块、服务、外部系统(数据库、消息队列、第三方 API)连起来后的协作是否正确。其中最常做的是 API 集成测试,重点抓运行时 500 错误——那种编译通过、单测通过,一联调就崩的情况。
  • 怎么做
  • 逐步接入真实依赖(数据库、MQ),验证数据流与控制流;或直接调用真实接口,断言状态码与数据结构。
  • 工具
  • Postmanpytest+requestsREST AssuredJMeter
  • 例子
  • 调用"创建订单"接口后立刻"查询订单",断言返回 200 且金额一致。若库存服务未启动,这里就会暴露 500,而不是等用户下单才崩。
  • 注意
  • 把集成测试当单测用(mock 掉所有依赖)就失去了"集成"意义;测试库与生产库不一致会制造假绿。

系统测试System Testing

整体

  • 测什么
  • 把整个系统当黑盒跑,验证是否满足需求规格:功能、性能、安全、兼容整体达标。
  • 怎么做
  • 在准生产环境部署完整系统,按需求文档逐条验收式地测。
  • 例子
  • 需求写"首页加载不超过 2 秒",就在准生产环境实测首页 P95 延迟是否达标。

验收测试Acceptance Testing(Alpha / Beta)

验收用户视角

  • 测什么
  • 用户觉得能不能用、对不对胃口。Alpha 是内部或友好用户测,Beta 是真实用户小范围测。
  • 怎么做
  • 按用户故事、验收标准走查,收集真实反馈。
  • 例子
  • 按验收标准"用户能用手机号注册并登录",完整走一遍注册登录流程,确认无阻碍。
  • 注意
  • 只看功能不看体验,会漏掉真正影响使用的细节;Beta 没留回收反馈的渠道等于白测。

接口、数据与契约

Web 系统上线前最容易翻车的地方,集中在前后端对接和数据一致性上。

接口路径对账(契约测试)Contract Testing

契约前后端

  • 测什么
  • 前端调用的地址、参数名、字段结构,和后端实际提供的契约是否对得上。
  • 怎么做
  • 前后端基于同一份接口定义(OpenAPI/Swagger)生成校验,或把前端真实请求的地址集合与后端路由表比差异。
  • 工具
  • PactSwagger/OpenAPIApifox
  • 例子
  • 后端把返回字段 userId 改成 uid 却没通知前端,前端取 userId 全是 undefined——契约测试能在联调前报警。
  • 注意
  • 契约写完不更新、或只在文档里写不校验,等于没契约。

CRUD 闭环验证Data Consistency

数据一致性

  • 测什么
  • 增删改查整条链路:Create→Read→Update→Delete 之后,数据库里存的是不是"你以为的那个值"。
  • 怎么做
  • 写一条→读出来比对→改一下→再读比对→删掉→确认查不到;跨表时还要验证外键、级联、事务回滚。
  • 例子
  • 把用户昵称从"A"改成"B",前端显示 B,但直接查库发现还是 A——说明更新接口没落库或落错字段。
  • 注意
  • 只断言 HTTP 200 不查库等于没验证;事务未提交或脏读会让你看到假数据。

数据库测试Database Testing

数据

  • 测什么
  • 约束、索引、触发器、存储过程、迁移脚本的正确性,以及数据迁移不丢不错。
  • 怎么做
  • 针对迁移脚本跑前后比对,对触发器/函数写专项用例。
  • 例子
  • 给表新增"年龄"字段并加 CHECK 约束(0~150),迁移后用非法值插入应被拒绝。
  • 注意
  • 只在 ORM 层测不测底层约束,会漏掉数据库层面的规则;迁移脚本没在等价数据量下验证有风险。

缓存一致性Cache Coherence

缓存一致性

  • 测什么
  • 写完数据库后,缓存是否跟着更新或失效,避免"改了看不见、刷新才出现"。
  • 怎么做
  • 写数据→立刻读(走命中缓存的路径)→断言读到的是新值;或写入后强制失效再读。
  • 工具
  • 接口脚本加直接查 Redis,redis-cli
  • 例子
  • 改了商品价格,缓存没清,用户看到的还是旧价——写后读验证能抓到。
  • 注意
  • 测试时缓存被关了(本地没开 Redis)上线才暴露;双写顺序不对会导致不一致。

UI 与端到端

更贴近"用户眼睛看到的世界",成本高但能验证完整业务流。

浏览器自动化UI / E2E via Browser

UI端到端

  • 测什么
  • 真实浏览器里页面能不能点、能不能填、跳转对不对、渲染正不正常。
  • 怎么做
  • 脚本驱动无头浏览器,模拟点击、输入、等待元素出现,断言页面状态、文案或 URL。
  • 工具
  • SeleniumPlaywrightCypressPuppeteer
  • 例子
  • 登录后断言页面出现"欢迎,张三"且右上角头像可点;若前端路由写错会停在空白页。
  • 注意
  • 等元素要用显式等待,sleep 硬等既慢又不稳定;选择器太脆一改版就红。

端到端用户旅程E2E User Journey

端到端流程

  • 测什么
  • 把多步串成"用户真实走完的一段路":注册→登录→下单→支付→查看订单,确保整条业务流不断点。
  • 怎么做
  • 用浏览器自动化或接口串联,按真实顺序走完,断言每个关键节点状态正确。
  • 例子
  • 下单成功但支付回调没写回订单状态,用户永远看到"待支付"——单步测试看不出,整条旅程才暴露。
  • 注意
  • E2E 最慢最脆,别用它覆盖所有细节(那是单测的活);数据没清理会互相污染。

兼容性测试Compatibility Testing

兼容

  • 测什么
  • 不同浏览器、系统、设备、分辨率、网络下表现是否一致。
  • 怎么做
  • 真机或云真机矩阵,或按浏览器兼容列表逐一验证核心功能。
  • 工具
  • BrowserStackSauce Labs
  • 例子
  • 核心下单流程在 Chrome、Safari、Edge 以及一台低端安卓机上各走一遍,确认都能完成。
  • 注意
  • 只在 Chrome 测、忽略老旧浏览器和低端机,上线容易踩坑。

响应式 / 跨端测试Responsive / Cross-device

移动

  • 测什么
  • 页面在手机、平板、桌面不同宽度下布局是否错乱、元素是否可点。
  • 怎么做
  • DevTools 设备模拟加真机,断言关键元素可见可交互。
  • 例子
  • 在 375px 宽度下,提交按钮不被键盘遮挡、不被挤出屏幕外。

可用性测试Usability Testing

体验人因

  • 测什么
  • 真实用户能不能毫不费力地完成任务、找得到按钮、不迷路。
  • 怎么做
  • 请用户边做任务边出声思考,观察卡点在哪。
  • 例子
  • 让新用户在不看说明书的情况下完成"找回密码",记录卡在第几步。
  • 注意
  • 找开发人员自己测会感觉不到难;样本太少容易以偏概全。

可访问性测试Accessibility (a11y)

无障碍

  • 测什么
  • 视障、听障、行动不便用户能否使用:对比度够不够、能否键盘操作、有无 alt 文本、读屏是否通顺。
  • 怎么做
  • 按 WCAG 标准扫描,再加读屏软件实测。
  • 工具
  • axeLighthouse a11yNVDA
  • 例子
  • 纯键盘 Tab 能否到达所有按钮和链接;图片是否有替代文本。
  • 注意
  • 纯靠自动化扫描只能抓约三成问题;忽略键盘可达性是常见遗漏。

权限与安全

越权、会话、注入、渗透,这一类出问题往往最直接、后果最重。

多角色交叉测试(越权)Role / Permission Testing

权限安全

  • 测什么
  • 不同角色(游客、普通用户、管理员)能不能访问不该访问的接口或页面。越权是最常见的安全事故之一。
  • 怎么做
  • 同一操作分别用不同身份调用;尝试改 URL 里的 id 访问他人数据(水平越权),尝试直接调管理员接口(垂直越权)。
  • 例子
  • 用户把请求里的 orderId=100 改成 999(别人的订单),接口若不校验归属就会泄露他人隐私。
  • 注意
  • 只在 UI 上把按钮藏起来、后端不校验等于没防;只测"能不能进页面"没测"接口本身能不能越权调"。

登录态穿透测试Session / Auth State

会话安全

  • 测什么
  • 登录态(token/session/cookie)在各种情况下是否"该失效的失效、该保留的保留":过期、注销、多端互踢、token 被盗用。
  • 怎么做
  • 用过期 token 调接口应 401;注销后旧 token 应失效;验证多设备登录策略。
  • 例子
  • 用户点了退出,但抓到的旧 token 还能继续调接口——会话没真正注销,存在被盗用风险。
  • 注意
  • 只在"已登录"路径测,没测"退出/过期后";token 长期不过期等于一把永久钥匙。

安全测试(注入 / XSS / CSRF)Security Testing

安全专项

  • 测什么
  • SQL 注入、NoSQL 注入、XSS 跨站脚本、CSRF 跨站请求伪造、敏感信息泄露。
  • 怎么做
  • 在输入点注入 ' OR 1=1--、<script> 等载荷,检查是否被转义或拦截。
  • 工具
  • OWASP ZAPBurp SuiteSonarQube
  • 例子
  • 在搜索框输入 ' OR '1'='1,若返回了全部数据说明存在 SQL 注入;输入 <script>alert(1)</script> 提交后若原样回显说明有 XSS。
  • 注意
  • 只防了 GET 没防 POST;前端转义了后端没转义;把安全寄托在"用户不会乱来"。

渗透测试Penetration Testing

安全攻击视角

  • 测什么
  • 模拟真实黑客,从外部尝试突破系统,找组合漏洞和没想到入口。
  • 怎么做
  • 授权下做信息收集→漏洞利用→提权→横向移动,产出渗透报告。
  • 例子
  • 对对外网开放的后台登录页做弱口令与已知漏洞扫描,评估能否进入内网。
  • 注意
  • 未经授权扫描他人系统属于违法;一次性渗透不代表以后安全。

模糊测试Fuzz Testing

安全异常

  • 测什么
  • 用大量随机、畸形输入轰炸程序,看会不会崩溃、内存泄漏、死循环,专门抓想不到的边界。
  • 怎么做
  • 对接口或解析器喂随机字节流,监控进程是否挂掉。
  • 工具
  • AFL++libFuzzergo-fuzz
  • 例子
  • 对图片上传接口喂入损坏的、超大的、非图片格式的二进制文件,确认服务不崩溃。

异常、容错与资源

用户不按套路出牌,或系统局部出故障时,能不能顶住。

异常输入测试Boundary / Negative Input

边界健壮性

  • 测什么
  • 空值、超长、负数、特殊字符、非法格式、超大文件等边界场景。
  • 怎么做
  • 等价类划分加边界值分析:刚好在边界、越过边界、空、超长各造一条,看返回友好提示还是 500 堆栈。
  • 例子
  • 年龄填 -1 或 99999、昵称填 10000 个 emoji、手机号填字母——系统应拦截并提示,而非写入脏数据。
  • 注意
  • 只在正常流程里测等于没测;前端拦了就以为后端也拦了(后端必须独立校验)。

错误处理测试Error Handling

容错健壮性

  • 测什么
  • 系统出错时表现是否体面:有没有吞异常、有没有把堆栈甩给用户、有没有兜底默认值。
  • 怎么做
  • 主动制造故障:断网、杀依赖服务、传坏数据、制造超时,看降级、重试、提示的表现。
  • 例子
  • 支付网关超时时,订单应进入"处理中"而非直接报错消失;用户看到"稍后查询"而非白屏。
  • 注意
  • catch 了异常却空处理(silent fail)会把问题藏起来;错误信息把 SQL、路径泄露给用户。

静态资源检查Static Asset Check

资源完整性

  • 测什么
  • 页面引用的 JS/CSS/图片/字体/图标是否真的存在、能加载、没被构建漏掉或路径写错。
  • 怎么做
  • 构建后扫描产物目录,比对 HTML 引用的资源是否都存在;或用爬虫抓取页面收集资源 URL 批量校验 200。
  • 工具
  • webpack-plugin
     完整性校验、Playwright 收集网络请求、自写校验脚本
  • 例子
  • 部署时 hash 文件名变了,旧 HTML 还引用 app.abc.js,新包里是 app.xyz.js——页面白屏,静态资源检查能提前抓到。
  • 注意
  • 只在本地 dev 测(dev 不哈希)上线才暴露;CDN 缓存导致旧资源 404。

性能

快慢、稳不稳、能撑多少,这一类回答"扛不扛得住"。

性能基线测量Performance Baseline

性能基线

  • 测什么
  • 关键接口、页面在正常运行压力下的响应时间、吞吐量,建立一条基线,以后变慢能立刻发现。
  • 怎么做
  • 单接口压测取 P50/P95/P99 延迟,记录基线数值,后续每次对比。
  • 工具
  • JMeterwrkk6Gatling
  • 例子
  • 首页接口基线 P95=300ms,某次发版后变成 1500ms——性能回归被基线卡住。
  • 注意
  • 只测并发 1 的响应时间没测高并发;环境不同(笔记本对服务器)基线不可比。

负载测试Load Testing

性能

  • 测什么
  • 在预期峰值并发下系统是否稳:响应时间、错误率、资源占用是否达标。
  • 怎么做
  • 逐步加压到预估峰值并持续一段时间。
  • 工具
  • JMeterk6Locust
  • 例子
  • 预估日常峰值 1000 QPS,加压到 1000 并持续 10 分钟,观察错误率与 CPU 是否平稳。
  • 注意
  • 压测机本身成了瓶颈;只盯响应时间不监控后端资源。

压力测试Stress Testing

性能极限

  • 测什么
  • 超过极限的流量下系统怎么死、怎么恢复,找崩溃点和降级能力。
  • 怎么做
  • 持续加压直到报错或宕机,再撤压看能否自愈。
  • 例子
  • 把并发从 1000 一路加到 5000,记录系统在哪一点开始报错,撤压后能否自动恢复。

并发测试Concurrency Testing

性能

  • 测什么
  • 多用户同时操作同一资源时有没有竞态条件:超卖、重复扣款、计数错误。
  • 怎么做
  • 并发发起同一请求(如同时抢同一张票),检查最终一致性。
  • 例子
  • 库存只剩 1 件,同时发 10 个下单请求,最终成交不应超过 1 单。
  • 注意
  • 单线程测永远正确;没加锁/事务会导致超卖。

耐久性 / 稳定性测试Endurance / Soak Testing

性能长时

  • 测什么
  • 长时间(几小时到几天)稳定运行下是否出现内存泄漏、连接池耗尽、性能衰减。
  • 怎么做
  • 中等负载跑很久,监控内存、连接、响应曲线。
  • 例子
  • 以 200 QPS 连续跑 24 小时,观察内存曲线是否持续上涨不回落。

容量测试Capacity Testing

性能

  • 测什么
  • 系统最大能撑多少(用户数、数据量),为扩容规划提供依据。
  • 怎么做
  • 不断增加负载或数据量,找到拐点。
  • 例子
  • 逐步增加数据量到千万级,观察查询延迟在哪一级开始陡增。

工程化与静态分析

不运行程序也能发现问题的手段,适合放进持续集成常驻。

静态代码分析Static Code Analysis

静态不运行

  • 测什么
  • 不运行代码,靠规则扫描:空指针风险、未关闭资源、代码坏味道、安全漏洞模式。
  • 怎么做
  • CI 里接入扫描器,PR 阶段就报警。
  • 工具
  • SonarQubeESLintSpotBugsgolangci-lint
  • 例子
  • 扫描发现某处打开文件后没有关闭,或使用了已知不安全的加密算法,提前在合并前拦下。
  • 注意
  • 规则太严满屏告警会被无视;只扫不修没意义。

代码覆盖率Code Coverage

度量

  • 测什么
  • 测试用例跑到了多少代码(行、分支、函数覆盖),是"测够没"的量化指标,不是质量本身。
  • 怎么做
  • 插桩跑测试,生成覆盖率报告,设阈值卡 CI。
  • 工具
  • JaCoCopytest-covIstanbul
  • 例子
  • 设分支覆盖率门禁为 70%,低于此值合并被拒绝。
  • 注意
  • 为覆盖率写"假测试";高覆盖率不等于没 bug(没断言的逻辑分支跑到了也白搭)。

代码评审Code Review

人协作

  • 测什么
  • 靠人眼发现自动化抓不到的:设计不合理、边界没想全、命名歧义、安全隐患。
  • 怎么做
  • PR 双人评审,按功能、安全、性能、可维护性清单检查。
  • 例子
  • 评审中发现一段逻辑在月末结算时会除零,自动化测试恰好没覆盖到这个日期。
  • 注意
  • 流于形式"LGTM"完事;评审太晚(大改写完才看)成本高。

部署、配置与容灾

上线过程和出事后能不能恢复,这一类常被忽略却很要命。

配置测试Configuration Testing

配置

  • 测什么
  • 不同配置(开关、环境变量、特性开关)下行为是否正确,默认值是否安全。
  • 怎么做
  • 枚举关键配置组合,验证开关生效、不互相冲突。
  • 例子
  • 关闭"新支付通道"开关后,下单应走旧通道;开启后应走新通道且回退逻辑可用。
  • 注意
  • 测试环境开了某个 flag、生产没开,行为不一致。

安装 / 部署测试Installation / Deployment Testing

部署

  • 测什么
  • 安装包、部署脚本能不能顺利装上、升级、回滚;首次启动是否自检查。
  • 怎么做
  • 在干净环境跑安装、升级、回滚全流程。
  • 例子
  • 从 v1.0 升级到 v2.0 后再回滚到 v1.0,确认数据兼容、服务正常。
  • 注意
  • 只在"已经装过"的机器测;没测回滚(回滚失败最致命)。

备份与灾难恢复测试Backup / DR Testing

容灾保命

  • 测什么
  • 备份能不能真恢复、恢复要多久、丢了多少数据(RPO/RTO)。很多团队"以为有备份"实则恢复不了。
  • 怎么做
  • 定期演练:删库/切机房→按预案恢复→校验数据完整性。
  • 例子
  • 按计划演练一次数据库恢复,记录从故障到业务恢复耗时,核对丢失的数据量。
  • 注意
  • 从不演练,真出事才发现备份是坏的;恢复时间远超业务容忍。

国际化与发布运维

上线前的小检查,以及上线后持续保障的手段。

国际化与本地化测试i18n / l10n Testing

国际化

  • 测什么
  • 多语言、多时区、多币种、日期/数字格式是否正确;译文是否截断、RTL 语言是否错版。
  • 怎么做
  • 切换语言、地区,检查文案、布局、时区换算。
  • 例子
  • 切到阿拉伯语后界面应从右到左排列;切到英语后日期应显示 MM/DD 而非 DD/MM 造成歧义。
  • 注意
  • 硬编码中文;德语长单词撑破按钮;时区算错导致"明天变昨天"。

冒烟测试Smoke Testing

健康快

  • 测什么
  • 每次构建后先跑一批最关键路径,确认系统没炸、能开机。
  • 怎么做
  • 挑 5~10 个核心用例(登录、首页、核心接口),全绿再往下细测。
  • 例子
  • 部署后先自动跑"能登录、首页能开、核心接口返回 200",通过才通知测试人员介入。
  • 注意
  • 冒烟用例太多失去"快"的意义;长期不更新会过时。

健全测试Sanity Testing

健康

  • 测什么
  • 针对某次局部修改做合理性快速验证,确认这一块没明显问题再深测。
  • 怎么做
  • 改了支付模块,就快速点一遍支付相关功能。
  • 例子
  • 修复了导出功能后,先快速验证导出能成功、文件能打开,再展开格式边界测试。
  • 注意
  • 和冒烟常被混用;区别是冒烟看"整体能不能开",健全看"某块改完合不合理"。

回归测试Regression Testing

回归持续

  • 测什么
  • 改了代码后,原来好用的功能有没有被改坏。
  • 怎么做
  • 把历史用例沉淀成回归套件,每次发版自动跑。
  • 例子
  • 改了登录逻辑后,回归套件自动重跑"注册、找回密码、第三方登录"等历史用例。
  • 注意
  • 用例只增不减越跑越慢;不维护导致误报一堆后被无视。

探索性测试Exploratory Testing

人灵活

  • 测什么
  • 不按脚本,靠测试人员经验和直觉边学边测边改,专找脚本测不到的诡异路径。
  • 怎么做
  • 定时间盒(如 30 分钟),带着怀疑自由操作并记录发现。
  • 例子
  • 随意快速连续点击提交按钮,看会不会重复提交或界面卡死。
  • 注意
  • 完全不记录导致无法复现;被当成"随便点点"。

基于风险的测试Risk-based Testing

策略优先级

  • 测什么
  • 不平均用力,把精力放在"出事概率高 × 影响大"的地方。
  • 怎么做
  • 给功能打分(概率×影响),优先测高分项。
  • 例子
  • 支付、权限得分最高优先测;头像背景得分低,自动化带过即可。
  • 注意
  • 风险评分拍脑袋;忽略"小概率但毁灭性"的项(如数据丢失)。

混沌工程Chaos Engineering

韧性主动故障

  • 测什么
  • 在生产或准生产主动注入故障(杀节点、断网络、加延迟),验证系统是否真弹性自愈。
  • 怎么做
  • 定假设→注入故障→观察→收敛,从小范围、可恢复的开始。
  • 工具
  • Chaos MeshGremlinNetflix Chaos Monkey
  • 例子
  • 随机杀掉一个订单服务实例,观察流量是否自动转移到其他实例、用户无感知。
  • 注意
  • 没设止血开关就乱炸生产;把混沌当玩具不回顾结论。

金丝雀 / 蓝绿发布测试Canary / Blue-Green

发布渐进

  • 测什么
  • 新版本先放一小撮流量(金丝雀)或并行一套环境(蓝绿),对比错误率、性能,确认安全再全量。
  • 怎么做
  • 1% 流量切新版本,监控指标无异常再逐步放大;异常即回滚。
  • 例子
  • 新版本先放 1% 用户,对比错误率与延迟无异常后放大到 100%。
  • 注意
  • 金丝雀比例太大失去保护意义;没对比指标就全量。

可观测性与监控测试Observability / Monitoring

运维

  • 测什么
  • 系统出问题时能不能看得见:日志、指标、链路追踪是否齐全,告警是否真响。
  • 怎么做
  • 故意造一个故障,验证监控大屏、告警、链路是否如预期呈现。
  • 工具
  • PrometheusGrafanaJaegerELK
  • 例子
  • 手动让某个接口报错率升高,确认告警在规定时间内触发、值班收到通知。
  • 注意
  • 告警太多被静音;没有指标等于盲飞。

A/B 测试A/B Testing

业务决策

  • 测什么
  • 两个或多个版本哪个效果更好(转化、留存、点击),用数据而非直觉做决策。
  • 怎么做
  • 随机分流,做统计显著性检验,得出胜出版本。
  • 例子
  • 首页按钮红绿两版各放 50% 流量,一周后对比点击率,保留胜出版本。
  • 注意
  • 样本太小就下结论;同时改多个变量分不清因果。

全部方法速查表

按类别排好,方便查阅。层级:底=金字塔底层(多、快、廉),顶=端到端(少、慢、贵)。

#
方法
类别
层级
核心价值
1
单元测试
单元与底层
底
最小逻辑正确
2
组件/模块测试
单元与底层
中
组件内协作
3
集成测试(含 API 集成)
单元与底层
中
模块/接口协作、抓 500
4
系统测试
单元与底层
顶
整体达标
5
验收测试
单元与底层
顶
用户觉得行
6
接口路径对账(契约)
接口数据
中
前后端不脱节
7
CRUD 闭环验证
接口数据
中
防"显示改了库没改"
8
数据库测试
接口数据
中
迁移/约束对
9
缓存一致性
接口数据
中
写后读正确
10
浏览器自动化
UI 与端到端
顶
真实页面状态
11
端到端用户旅程
UI 与端到端
顶
整条业务流
12
兼容性测试
UI 与端到端
顶
多端一致
13
响应式/跨端
UI 与端到端
顶
布局不错乱
14
可用性测试
UI 与端到端
顶
用户用得爽
15
可访问性测试
UI 与端到端
顶
人人可用
16
多角色交叉(越权)
权限与安全
中
防越权
17
登录态穿透
权限与安全
中
防会话被盗用
18
安全测试
权限与安全
中
注入/XSS/CSRF
19
渗透测试
权限与安全
顶
模拟黑客
20
模糊测试
权限与安全
底
抓想不到的崩
21
异常输入测试
异常容错
中
防脏数据崩溃
22
错误处理测试
异常容错
中
出错也体面
23
静态资源检查
异常容错
中
防 404 白屏
24
性能基线测量
性能
中
建立快慢基准
25
负载测试
性能
中
峰值稳不稳
26
压力测试
性能
中
极限怎么死/恢复
27
并发测试
性能
中
防竞态超卖
28
耐久性测试
性能
中
长时间不漏
29
容量测试
性能
中
最大撑多少
30
静态代码分析
工程化
底
不跑也找坑
31
代码覆盖率
工程化
底
测够没
32
代码评审
工程化
底
人眼补盲
33
配置测试
部署容灾
中
开关生效
34
安装/部署测试
部署容灾
中
装得上回得去
35
备份与容灾
部署容灾
中
真能恢复
36
国际化与本地化
发布运维
中
多语言时区对
37
冒烟测试
发布运维
中
先确认能开机
38
健全测试
发布运维
中
局部改完合理
39
回归测试
发布运维
中
旧功能没坏
40
探索性测试
发布运维
顶
找诡异路径
41
基于风险的测试
发布运维
—
把好钢用刀刃
42
混沌工程
发布运维
中
主动故障自愈
43
金丝雀/蓝绿发布
发布运维
顶
渐进放量安全
44
可观测性监控
发布运维
中
出事看得见
45
A/B 测试
发布运维
顶
数据做决策

全用一遍的效果

把上面这些方法在一次发布前全部跑一遍,相当于给系统做一次极尽详细的出厂体检。它能大幅提升当次发布信心、暴露大量显性问题,但并不等于持续的质量保障,也覆盖不了所有长尾风险。

能做到的

  • 覆盖面极广:
    从代码逻辑、接口契约、数据一致、UI、权限、异常、性能到安全、容灾、发布,几乎无死角。
  • 建立质量基线:
    性能基线、覆盖率、冒烟用例、回归套件一次性沉淀下来,后续可复用。
  • 显著提升当次发布信心:
    全检后,已知类型缺陷逃逸率会大幅下降。
  • 暴露跨层问题:
    "单测绿、集成崩""接口对、UI 错""功能对、性能崩"这类组合缺陷,只有全套一起跑才暴露。
  • 倒逼契约显式化:
    接口对账、配置测试会逼着把隐藏约定写出来。

做不到的

  • 一次性不等于持续:
    代码一改,缺陷会重新引入。全检只代表那一刻的质量快照。
  • 成本极高、耗时极长:
    45 种全手动跑一遍,人力与时间可能以周计,无法每次发版都做。
  • 覆盖率不等于正确性:
    高覆盖、全跑过,仍可能漏掉没想到的业务场景和组合爆炸里的长尾 bug。
  • 真实流量难模拟:
    性能、并发、混沌即使做了,也和真实生产流量有差距。
  • 安全是动态的:
    一次性渗透、扫描只能发现已知模式,新漏洞每天都在出。
  • 全绿可能制造假安全感:
    用例设计得弱(只断言 200 不断言值),全过也不代表没问题。

效果预期(经验参考)

维度
一次性全检后
持续自动化后
已知类型缺陷逃逸率
显著下降(约 50%~70%)
稳定在很低水平
回归成本
一次性高投入
边际成本趋近 0
发布周期
因全检变慢
因自动化加速
故障恢复时间
靠人救火
监控+混沌+回滚大幅缩短
长尾/未知缺陷
仍有残留
仍需探索性+人工

结论:全用一遍是必要但不充分的。真正的质量靠的是把适合自动化的(单测、接口、回归、静态分析、性能基线)固化进持续集成持续跑,把需要人脑的(探索性、可用性、验收、渗透)定期做,再用混沌、监控、金丝雀兜住生产期的未知。

软件测试方法讲解(含实例) · 共 45 种,按 9 个类别组织
工具名为示例,落地时结合团队实际技术栈选择。

回首页,搜索你想要的文档

在首页搜索框输入关键词,快速定位资料

文库首页搜索指引 立即搜索

相关学习资料