Java 业务测试核心目标:验证业务逻辑正确性、边界安全性、异常容错性、数据一致性,覆盖正常流程 + 所有异常 / 边界场景,避免线上业务故障。
我会按测试方法分类,直接给你可落地的测试点 + 真实业务案例,覆盖后端最常用的:接口测试、单元测试、集成测试、边界 / 异常测试、并发测试、数据一致性测试。
一、核心测试方法(Java 后端必用)
1. 单元测试(Unit Test)
测试对象:单个方法、单个类(Service/Util/Manager),隔离外部依赖(DB、Redis、第三方接口)。核心工具:JUnit 5 + Mockito + AssertJ
测试方法 + 特殊案例
- 正常业务流程案例:用户注册方法,传入合法手机号、密码,验证返回成功、数据正确。
- 空参数测试案例:注册时传入
null手机号,方法必须抛参数异常,不执行业务。 - 非法参数测试案例:密码长度 < 6 位、手机号格式错误、金额为负数。
- 边界参数测试案例:密码刚好 6 位、用户年龄刚好 18 岁、订单金额刚好 0 元。
- 内部逻辑分支全覆盖案例:优惠券核销方法,覆盖「未使用 / 已使用 / 已过期 / 已作废」所有分支。
2. 接口测试(API Test,最核心的业务测试)
测试对象:Controller 接口(HTTP/RESTful),验证入参、业务、出参、状态码。核心工具:Postman/Jmeter/RestAssured
必测方法 + 特殊场景(全是高频线上 bug 点)
- 必填参数缺失案例:创建订单不传
userId、productId,接口返回 400 错误。 - 参数类型错误案例:把数字金额传成字符串,接口不崩溃、返回参数异常。
- 参数超长 / 超限案例:用户名传 1000 个字符、手机号传 100 位,防止 SQL 注入 / 内存溢出。
- 业务状态不合法案例:对「已取消订单」执行发货操作、对「已支付订单」重复支付。
- 权限越界案例:A 用户查询 / 修改 B 用户的数据,接口必须拦截返回 403。
- 重复请求(幂等性)案例:重复点击提交订单、重复点击支付,只生成 1 笔订单 / 只扣 1 次款。
3. 集成测试(Integration Test)
测试对象:多模块联动(Controller → Service → Dao → DB/Redis),验证整体链路。
测试重点
- 数据库事务正确性(提交 / 回滚)
- 缓存与 DB 数据一致性
- 第三方服务调用(短信、支付、物流)
特殊案例
- 下单失败 → 事务回滚 → 库存不扣减、订单不生成
- 缓存击穿时,直接查 DB 不报错
- 调用支付接口超时,业务自动触发退款 / 取消订单
4. 边界值测试(最容易漏测,80% bug 源于此)
核心思想:测「刚好满足、刚好不满足、临界值」。
通用边界案例
表格
| 业务场景 | 测试点 |
|---|---|
| 数字类型 | 0、负数、最大值、最小值、小数 |
| 字符串 | 空串、1 个字符、最大长度、特殊字符 |
| 时间 | 开始时间 = 结束时间、跨天、跨月、跨年、时间为空 |
| 分页 | page=0、page=1、size=0、size=1000、无数据 |
| 枚举值 | 合法枚举、不存在的枚举值、null |
真实业务案例
- 金额:
0元(免费商品)、0.01元(最小支付)、99999999元(大额) - 年龄:
18岁(成年)、17岁(未成年)、0岁(新生儿) - 库存:
库存=1(最后一件)、库存=0(无货)、库存=-1(超卖)
5. 异常 / 容错测试(验证系统不崩溃)
测试方法:主动制造异常,验证业务优雅处理。
必测异常场景
- 空指针异常(NPE)案例:查询用户返回 null,后续调用 user.getName () 不崩溃。
- 数据库异常案例:DB 连接失败、SQL 执行错误,接口返回 500,不抛原生异常。
- 第三方接口异常案例:短信接口超时 / 失败,业务记录日志、支持重试。
- 业务自定义异常案例:余额不足、库存不足、验证码错误,返回明确错误码。
- 资源耗尽案例:文件上传过大、请求队列满,系统不宕机。
6. 并发 / 线程安全测试(高并发业务必测)
测试对象:秒杀、库存扣减、支付、优惠券、抽奖。
核心测试场景
- 超卖问题案例:10 个库存,100 人同时下单,最终库存≥0,不超卖。
- 重复扣款案例:同一订单 10 个线程同时支付,只扣 1 次钱。
- 线程安全案例:多线程修改同一个用户余额,最终金额正确。
- 锁失效案例:分布式锁超时、锁未释放,业务不混乱。
7. 数据一致性测试(交易 / 金融核心)
测试方法:验证多表、多库、缓存数据一致。
案例
- 下单后:订单表、库存表、流水表数据同步一致
- 支付成功:订单状态 = 已支付、余额扣减、支付流水生成
- 取消订单:库存回滚、优惠券退回、金额退款
8. 安全测试(业务防攻击)
高频测试点
- SQL 注入入参:
' or 1=1 --,接口不泄露数据 - XSS 攻击入参:
<script>alert(1)</script>,不执行脚本 - 参数篡改前端修改订单金额为 0 元,后端校验不通过
- 敏感信息泄露接口不返回密码、身份证明文
二、完整实战:用户下单业务(全覆盖测试案例)
直接套用这个模板,能覆盖 90% Java 后端业务测试。
下单接口:/api/order/create
1. 正常场景
- 入参合法(用户 ID、商品 ID、地址、金额)
- 结果:订单创建成功、库存扣减、返回订单号
2. 参数异常场景
- 不传用户 ID → 参数错误
- 商品 ID 为负数 → 业务异常
- 金额为 0 → 允许免费订单
- 地址为空 → 拦截
- 传入不存在的商品 ID → 商品不存在
3. 边界场景
- 库存 = 1 → 下单成功,库存变 0
- 库存 = 0 → 下单失败
- 购买数量 = 1(最小)、购买数量 = 100(最大限制)
4. 业务异常场景
- 用户余额不足 → 下单失败
- 商品已下架 → 拦截
- 同一用户 1 秒内重复提交 → 只生成 1 个订单(幂等)
5. 异常容错场景
- DB 宕机 → 下单失败,事务回滚
- 库存服务超时 → 触发降级,不超卖
- 日志打印完整,不抛原生异常
6. 并发场景
- 100 线程同时抢 10 个库存 → 最终只成交 10 单
7. 数据一致性
- 订单创建 → 订单表、库存表、流水表数据一致
- 下单失败 → 所有数据回滚,无脏数据
三、Java 业务测试通用万能检查清单(直接照抄用)
- 入参校验:必填、非空、格式、长度、范围、枚举
- 业务逻辑:所有分支(if/else/switch)全覆盖
- 边界值:最大、最小、等于、0、空、临界
- 异常处理:NPE、DB 异常、第三方异常、自定义异常
- 幂等性:重复请求不重复执行业务
- 并发安全:超卖、重复扣款、线程安全
- 数据一致性:事务、多表、缓存、回滚
- 权限安全:越界、篡改、注入、敏感信息
总结
- Java 业务测试不是只测正常流程,70% 精力要测异常、边界、并发
- 单元测试保方法、接口测试保业务、集成测试保链路、并发测试保高可用
- 所有测试都围绕:参数 → 逻辑 → 数据 → 异常 → 安全五大维度
- 我给的下单案例是通用模板,所有增删改查业务都能直接套用