Markdown Note
4.26测试开发面试准备:
最近更新:2026/05/06
1、测开工作:
需求评审 → 分析风险 → 写测试用例 → 手工测试 + 自动化测试
→ 压测 / 性能测试 → 发现 bug → 上线卡点把关 → 线上监控巡检
2、Junit测试框架:
测试一个 Service / Controller,测试类放在 src/test/java/你的包名 下。
@Test
public void testAdd() {
// 测试用例:直接写参数
int a = 10;
int b = 20;
// 调用方法
int sum = userService.add(a, b);
// 断言:验证结果对不对(测试核心!)
Assertions.assertEquals(30, sum);
}
3、接口测试:
接口的边界测试:Junit测试框架+AI生成边界条件 wrk做接口压力测试: 针对SQL测试:Explain Anlaize 线上后台监控系统: 大模型生成的准确度测试:bad case+EmbeddingModel
4、问题分析
1、客户端问题: 设备资源不足,内存 / CPU 占满 头条后台进程异常阻塞,网络请求发不出去,APP 没有精准报错,统一提示服务繁忙。 APP 版本过低 / 兼容问题
2、服务端问题: 区域性服务器过载 / 故障:头条在你所在城市 / 省份的节点服务器爆满、宕机 账号 / IP 触发限流风控 微服务接口故障:头条是分布式架构,仅某个内容接口报错,不影响其他功能,统一提示服务繁忙。
3、网络链路: DNS 解析异常 网络链路局部拥堵:你手机到头条服务器的专属网络节点拥堵,其他软件的网络路径畅通。
5、测试用例设计:
先明确:发红包核心流程-----功能测试用例-----边界值用例-------异常测试用例---界面 / 易用性用例------性能测试用例-----安全测试用例
功能测试、边界测试、异常测试 、压力测试
异常测试:(业务层面)
- 输入异常
- 非法参数(类型错误、缺少字段、超长字符串)
- 空值、Null、特殊字符、SQL注入/脚本标签
- 越界数字(比如 age = -1 或 999999999)
- 业务逻辑异常
- 资源不存在(GET 不存在的 ID)
- 资源重复写入(POST 重复 ID)
- 并发冲突(两个请求同时修改同一条数据)
- 返回值异常
- 检查返回状态码(HTTP 200/400/500)
- 检查错误提示是否合理
- 检查前端显示和 API 一致性 可靠性异常(系统健康/容灾)、性能异常等等
6、自动化测试:
自动化测试就是用代码 / 脚本替代人工,模拟人的操作,自动执行测试用例、校验结果、生成报告;用来替代重复、机械、高频的手工回归测试,减少人工成本,提升测试效率与稳定性。 接口自动化(最主流、性价比最高):针对后端接口,自动发起请求、校验入参、出参、状态码、业务逻辑,后端 / 测开重点做这个。
7、抓包工具:
Wireshark(底层网络抓包,万能、偏网络层) Charles(Mac 常用,简洁轻量)
Wireshark
用途
- 抓取全网所有协议:TCP、UDP、HTTP、HTTPS、DNS
- 定位网络层问题:丢包、延迟、连接失败、链路异常
- 偏底层,适合排查非应用层网络问题 使用
- 选择当前网卡开始抓包
- 通过过滤表达式筛选协议 / IP,比如只看 http、指定服务器 IP
- 分析三次握手、数据包丢失、重传问题
区别:Fiddler/Charles 只能抓应用层 HTTP;Wireshark 抓底层全流量。
8、全项目的测试:
测试前期:需求分析 & 评审 测试设计:用例设计 + 测试计划 测试执行阶段(核心) 环境搭建:测试环境+测试DB 单模块测试 集成功能测试 异常与边界测试 辅助测试 上线后监控测试
9、Mock
Mock = 模拟造假 在测试时,把依赖的外部对象、接口、数据库、第三方服务 模拟成假数据 / 假返回,不调用真实资源,只测自己当前代码逻辑。 为什么需要:
- 要测试 A 方法,A 依赖 B 服务,但B 还没开发完;
- 依赖第三方接口(支付、短信、地图),收费 / 不稳定 / 有网络限制;