腾讯测试面试题
本题清单
- 如何在 CI 流水线中集成自动化测试?
- 在 K8s 中如何测试一个 Spring Boot 微服务?
- 开发不认你提的 Bug,怎么办?
- 微信发送消息如何设计用例?
- 客户端访问服务端网络异常,Linux 上怎么排查?
- 你们团队如何做「质量左移」?
- 秒杀如何压测?鉴权怎么测?
- 项目架构与测试策略怎么讲?
- TCP 三次握手与四次挥手
- 画 CI/CD 图,部署失败谁告警?
- 如何做 App 兼容性测试?机型太多怎么取舍?
- 弱网测试怎么做?常用手段有哪些?
- HTTPS/证书异常场景怎么测?
- 如何写一份让研发和老板都信服的测试报告?
- 线上故障复盘(Postmortem)测试侧要输出什么?
- 多人协作时测试环境冲突怎么解决?
1. 如何在 CI 流水线中集成自动化测试?
参考答案:
一条可信流水线要回答三件事:何时跑、跑什么、失败怎么办。
典型阶段代码提交 → 编译构建 → 单元测试 → 静态检查 → 部署测试环境 → 接口/UI 冒烟 → 生成报告 → 通知
设计要点
- 分级:PR 跑快而准的冒烟(分钟级);夜间跑全量。
- 门禁:单测失败、核心接口失败阻断合并;UI 偶发失败可重跑一次并标 flaky。
- 环境:流水线先做健康检查(依赖就绪),避免「红是因为环境挂了」。
- 数据:专用 CI 账号与库,与人手测隔离。
- 产物:Allure、覆盖率、日志归档,方便复盘。
- 通知:失败 @ 责任人;连续失败升级。
可以说你推动过「没过冒烟不能合入」,并给出合入后线上问题下降的例子。
2. 在 K8s 中如何测试一个 Spring Boot 微服务?
参考答案:
云原生测试 = 部署正确 + 服务行为正确 + 弹性正确。
- 部署验证:Helm/清单安装后,Pod Running、就绪探针通过、配置与 Secret 挂载正确、资源 Limit 生效。
- 服务发现与网络:ClusterIP/Ingress 可达、证书、跨命名空间调用、网络策略是否误伤。
- 功能与契约:对 Service 跑接口回归;依赖用 wiremock 或测试桩。
- 发布行为:滚动升级、金丝雀、旧版与新版共存时兼容性。
- 弹性:杀 Pod 是否自动恢复;HPA 扩容是否触发;资源不足时的表现。
- 可观测:日志进 Loki/ELK,指标进 Prometheus,链路有 TraceId。
- 性能:对内网入口压测,观察下游与 JVM。
3. 开发不认你提的 Bug,怎么办?
参考答案:
目标是对齐事实与预期,不是赢吵架。
- 排除误报:同一环境、同一版本、同一账号数据;清理缓存再复现。
- 加强证据:逐步操作录屏、抓包、后台日志、对比预期文档截图。
- 对齐需求:引用 PRD/原型原文;若文档缺失,拉产品当场定预期。
- 分级处理:确认缺陷保持打开;若属体验优化,降级为建议/技术债并记录。
- 升级路径:仍僵持则带三方(产品/TL)评审,避免私下拉扯。
- 事后:模糊需求补进验收标准,减少再犯。
态度:对事不对人;用数据说话。
4. 微信发送消息如何设计用例?
参考答案:
按对象拆:消息类型 × 会话类型 × 网络/终端 × 安全。
- 类型:文本、表情、图片、语音、视频、链接、文件;混合发送。
- 会话:单聊、群聊、陌生人/黑名单限制。
- 功能:发送中状态、失败重发、撤回、已读(若有)、引用回复。
- 边界:空消息、超长文本、特殊 Unicode、敏感词拦截。
- 网络:弱网、断网恢复、发送中杀进程、飞行模式。
- 同步:多端(手机/PC)送达一致。
- 安全:伪造发送者、越权拉历史、链接钓鱼拦截。
- 性能:大群高峰、消息风暴下的到达延迟与丢消息率。
- 兼容:机型、系统版本、深色模式。
P0 是文本单聊成功送达与失败可感知;媒体与大群次之。
5. 客户端访问服务端网络异常,Linux 上怎么排查?
参考答案:
按网络分层排查,边排边缩小:
- 主机连通:
ping(注意有的环境禁 ICMP)、traceroute/mtr看延迟丢包。 - 端口连通:
nc -vz ip port、telnet;失败可能是进程没监听或安全组。 - 应用层:
curl -v https://...看 DNS、TCP、TLS、HTTP 码。 - 本机侧:
ss -antp | grep port看连接状态(SYN_SENT 常是对面不回或墙了)。 - DNS:
dig/nslookup,对比/etc/resolv.conf。 - 抓包:
tcpdump看 SYN 有无 ACK、是否 RST、重传。 - 服务端对照:进程是否监听
0.0.0.0、防火墙、LB 后端健康检查是否摘除。
把「命令」和「现象含义」一起说,比只报命令名强。
6. 你们团队如何做「质量左移」?
参考答案:
结合腾讯爱听的「推动」:
- 需求阶段:测试参加评审,输出风险清单与验收标准。
- 开发阶段:提供 Mock、契约(OpenAPI),开发自测清单。
- 提交阶段:强制 Sonar + 单测覆盖率门槛(如核心模块 ≥ 80%)。
- 联调前:接口用例先行,不等 UI。
- 度量:看缺陷前移比例(需求/开发阶段发现占比是否上升)。
举例推动过程:先从小团队试点门禁 → 出示逃逸数据 → 再推广。有阻力时用数据而不是口号。
7. 秒杀如何压测?鉴权怎么测?
参考答案:
压测
- 模型:按真实端比例(App/H5/小程序)混合;加 Think Time,避免机器人全开打满。
- 场景:开售瞬间尖峰、持续抢购、售罄后的流量。
- 观察:成功率、库存一致、TP99、热点 key、DB 锁等待、限流是否误伤。
- 数据:测试库存隔离;压测流量打标,防止污染线上。
鉴权与防刷
签名防篡改、Token 过期、验证码/滑块、设备指纹、重放攻击(同一签名重放应失败)、越权下单别人的活动资格。
8. 项目架构与测试策略怎么讲?
参考答案:
先画/口述调用链:客户端 → 网关 → 服务 A/B → Redis/MySQL/MQ → 第三方。
再映射测试:
- 单测:纯逻辑与边界。
- 契约/接口:服务间约定。
- 集成:真实中间件。
- 端到端:极少核心路径。
- 专项:性能、安全、兼容。
强调风险加权:资金、鉴权、核心交易投入更多;展示页少投。上线后监控与开关回滚也是策略一部分。
9. TCP 三次握手与四次挥手
参考答案:
三次握手:
- 客户端 SYN(seq=x)
- 服务端 SYN+ACK(seq=y, ack=x+1)
- 客户端 ACK(ack=y+1)
目的:双方确认可达,并同步初始序号。两次不够可靠处理延迟旧 SYN 等问题。
四次挥手:因 TCP 半关闭,每侧 FIN+ACK 各一次(共四次)。主动关闭方进入 TIME_WAIT,防止旧包干扰新连接。
和测试的关系:超时重试要理解连接建立成本;压测机 TIME_WAIT 过多会导致端口耗尽,需要调内核或连接池复用。
10. 画 CI/CD 图,部署失败谁告警?
参考答案:
部署失败告警闭环(腾讯很看重):
- 发布系统失败状态 → Prometheus 规则 / 发布平台回调 → Alertmanager → 钉钉+电话给值班。
- 同时自动或一键回滚。
- 测试侧:发布后冒烟失败同样告警,不只依赖基础设施告警。
「有构建、有测试、有发布、有人值守」才算流程完整。
11. 如何做 App 兼容性测试?机型太多怎么取舍?
参考答案:
穷尽不可能,用风险抽样:
- 数据驱动选机:按线上活跃机型 Top N、系统版本分布、厂商 ROM(华为/小米/OPPO/vivo)、分辨率与折叠屏。
- 分层:云真机跑冒烟自动化;核心机型人工探手册;长尾看 Crash 平台。
- 覆盖维度:OS 大版本、刘海/挖孔、深色模式、权限弹窗差异、推送通道。
- 发版策略:每次全量 Top 覆盖;UI 大改加视觉回归。
收尾:兼容性矩阵写进测试报告,说明未覆盖的残余风险。
12. 弱网测试怎么做?常用手段有哪些?
参考答案:
手段:Charles Throttle、Network Link Conditioner、Android 模拟器弱网、专项弱网盒子、代码注入延迟。
场景:高延迟、高丢包、带宽极低、网络切换(Wi-Fi↔4G)、断网恢复。
关注:超时与重试是否合理、是否ANR、上传是否续传、错误提示是否友好、是否重复提交。
弱网用例应进发布前专项,尤其是IM、上传、支付确认页。
13. HTTPS/证书异常场景怎么测?
参考答案:
- 正常证书访问成功。
- 过期证书、域名不匹配、自签证书:客户端应失败并提示,而不是静默抓包可乘虚而入。
- 证书锁定(Pinning)若启用:换证书是否按预期拒绝;更新证书流程是否可平滑。
- 中间人:仅在授权测试环境验证安全策略。
- 混合内容:HTTPS 页加载 HTTP 资源。
和测试工具关系:Charles 抓包需信任用户证书,要确认正式包是否禁止用户 CA(防抓包也是安全策略)。
14. 如何写一份让研发和老板都信服的测试报告?
参考答案:
报告要回答「能不能发」和「风险在哪」,不是堆用例条数。
建议结构:
- 结论(建议上线/带条件上线/阻塞)一句话。
- 范围与环境(测了什么、没测什么)。
- 执行结果:P0/P1 通过率、自动化结果。
- 遗留缺陷:按严重级别,附风险与规避。
- 非功能:性能基线、兼容抽样结论。
- 上线关注点与回滚条件。
对老板:结论+风险;对研发:缺陷单与复现。避免只贴 Allure 链接无解读。
15. 线上故障复盘(Postmortem)测试侧要输出什么?
参考答案:
- 时间线:发现 → 止血 → 修复 → 恢复。
- 漏测分析:为何测试未发现(用例缺口/环境差/门禁缺失)。
- 改进项:补用例、补监控、补开关、改流程;每项有 owner 与截止日期。
- 验证:修复的回归证据。
腾讯文化看重闭环,不要只写「下次注意」。
16. 多人协作时测试环境冲突怎么解决?
参考答案:
- 环境分区:项目/特性独立命名空间或独立环境。
- 数据隔离:账号池分人;禁止共用「万能账号」改配置。
- 预约制:抢占式环境日历。
- 基础设施:容器化一键拉起个人环境。
- 约定:改公共配置必须周知;公共中间件变更走变更单。
体现协作与规范,正是腾讯爱听的点。
速查: 多练「CI/CD 闭环、推动故事、争议 Bug 处理」;少踩「流程很虚;无告警与门禁细节」。
