分享链接、短链跳转功能怎么测?
👔 Raina面试官: 分享链接和短链跳转你怎么测?
🙋 候选人:
- 关注生成、跳转、归因、失效四段,短链还要验编码唯一和防篡改。
- 生成:长链压缩、自定义参数保留、渠道标识写入、重复生成是否同链。跳转:302/301 目标正确、App 内 WebView 与外链浏览器、未安装 App 时落地页/应用商店。归因:UTM、邀请码、注册绑定是否带到后端。
- 失效:过期链、已删除活动、权限链跳错误页而非 500。边界:超长 URL、特殊字符编码、循环跳转、恶意链拦截。多端:微信内置浏览器、短信、二维码扫码各测一遍。
👔 Raina面试官: 短链被刷点击量怎么测防护?
🙋 候选人:
- 验频控、异常 UA、同 IP _burst是否触发限流或不计入统计。
- 对比点击日志与业务转化,异常峰值应有告警且不影响正常用户跳转。
消息推送(App Push / 站内信)测试要点有哪些?
👔 Raina面试官: App Push 和站内信,测试要点有哪些?
🙋 候选人:
- 分触达、展示、点击、策略四层,Push 还要加厂商通道和权限。
- 触达:目标人群圈选、定时/即时、离线堆积、厂商通道(APNs/FCM/厂商)到达率。展示:标题正文长度截断、大图/角标、锁屏预览、多语言。点击:深链落地页、参数透传、未登录跳转登录再回跳。
- 站内信:已读未读、删除、分页、红点与 Push 联动是否一致。策略:免打扰时段、频率上限、退订后不再推、AB 分组。边界:token 失效、App 卸载重装、多端已读同步。
👔 Raina面试官: 怎么验证推送真的发出去了?
🙋 候选人:
- 测环境接推送回执 + 测试设备白名单,查服务端 messageId 与客户端到达日志对齐。
- 关键活动做端到端抽样:发 → 达 → 点 → 业务状态变更,四步缺一不可。
如何测试收藏 / 点赞 / 关注这类高频互动功能?
👔 Raina面试官: 收藏、点赞、关注这种高频互动,你怎么测?
🙋 候选人:
- 高频互动的关键是状态一致、计数准确、幂等防刷,比单点功能更怕并发和缓存。
- 单操作:点赞/取消、收藏/取消收藏、关注/取关,按钮态与列表同步。计数:作者页、列表页、消息通知三处数字一致;自己的操作立即反馈,他人延迟可接受但要最终一致。
- 并发:快速连点、双端同时操作不能出现负数或重复加;未登录引导、封禁用户不可互动。列表:我的收藏/关注分页、排序、失效内容处理。还要测通知触发:被点赞、被关注是否去重聚合。
👔 Raina面试官: 点赞数很大时怎么测?
🙋 候选人:
- 验展示缩写规则(1.2w)与真实计数接口一致,缓存延迟在 SLA 内。
- 压测模拟热点 burst,计数服务不能丢增量;降级时展示缓存值要有标识或可接受延迟说明。
优惠券领取后过期、作废、不可叠加,你会怎么设计用例?
👔 Raina面试官: 优惠券领取后还要测过期、作废、不可叠加,你怎么设计?
🙋 候选人:
- 用券生命周期状态机驱动用例:未使用 → 锁定 → 已用 / 过期 / 作废,叠加规则单独矩阵。
- 领取:门槛、每人限领、库存抢完、重复领取。使用:满足门槛可用、差 1 分不可用、指定品类/店铺。过期:边界时间点(前 1 秒/后 1 秒)、时区、列表自动归档。作废:运营后台手动作废、订单取消释放、退款后是否退回。
- 叠加:互斥券与可叠券组合表,平台券+店铺券+红包优先级;同类型两张不可叠时应明确提示哪张生效。还要测结算页改数量后券是否仍满足门槛。
👔 Raina面试官: 时间相关的券怎么测才靠谱?
🙋 候选人:
- 测试环境开时间 Mock 或缩短有效期配置,不要等真实 30 天。
- 用例标注依赖时间服务,CI 里固定 clock 跑边界,避免 flaky。
如何测试搜索联想词 / 历史记录 / 热搜?
👔 Raina面试官: 搜索联想、历史记录、热搜榜你怎么测?
🙋 候选人:
- 三块共用输入触发、数据新鲜度、个性化与合规,再各自加专项。
- 联想:前缀匹配、拼音/错别字纠错、无结果降级、防抖频率、敏感词过滤、点击联想词是否带入搜索。历史:本地与账号同步、单条删除/清空、无痕模式不写历史、重复搜索去重排序。热搜:榜单更新时效、人工干预位、下架词不再展示、跳转搜索词正确。
- 边界:超长输入、emoji、空搜索;弱网下列表 skeleton 与缓存旧数据提示。A/B 不同排序策略时断言实验分组,避免串组。
👔 Raina面试官: 怎么判断联想词排序对不对?
🙋 候选人:
- 对照产品规则文档或埋点:热度、点击率、人工加权各占比。
- 固定种子数据跑回归,相同输入下 Top3 稳定;大促期间验干预词是否按配置生效和下线。
给你一个全新 App,没有文档,你怎么开始测试?
👔 Raina面试官: 全新 App 零文档,你怎么开始测?
🙋 候选人:
- 我会用探索式走查 + 逆向建模先画地图,再补风险和主路径用例。
- 第一天:装包冒烟,走注册登录主链路,记录页面流和接口(Charles/抓包)。第二天:按用户角色拆模块(访客/会员/管理员),每模块列 happy path 和明显边界。第三天:和产品开发口头对齐我理解的需求,输出风险清单和 P0 用例。
- 并行做:崩溃/ANR、权限、弱网、升级安装;沉淀可复用的页面-接口-数据对照表,这就是临时 living doc。没文档不是不测,而是更依赖沟通和快速反馈。
👔 Raina面试官: 时间只给三天,怎么交差?
🙋 候选人:
- 交付主路径报告 + 已知风险表 + P0 用例集,明确未覆盖范围。
- 优先保登录、支付、核心转化;其余标待下一迭代,比假装全覆盖更专业。
浏览器清空缓存、无痕模式、多账号切换对测试有什么影响?
👔 Raina面试官: 浏览器清空缓存、无痕模式、多账号切换,对测试有什么影响?
🙋 候选人:
- 这三类操作会改变本地存储、Cookie 和登录态,不测很容易把环境问题当成 Bug。
- 清缓存:验证强刷后静态资源版本、Service Worker 是否更新、离线页是否消失。无痕:无历史 Cookie,适合验首次访问、登录引导、第三方登录回调。多账号:同一浏览器切账号要测权限隔离、购物车/消息是否串号、退出后 token 是否清干净。
- 回归矩阵里我会加一列环境态:正常态 / 清缓存 / 无痕 / 换账号,核心链路至少各跑一遍。
👔 Raina面试官: 开发说在我这没问题,我怀疑是缓存,怎么快速确认?
🙋 候选人:
- DevTools 勾选 Disable cache + Hard Reload,对比 Network 里 JS/CSS 的 hash 和响应头 Cache-Control。
- 仍不一致就让开发提供资源版本号或构建时间,和页面实际加载的文件对齐。
前端静态资源缓存导致改了没生效,你怎么排查?
👔 Raina面试官: 前端静态资源缓存,改了代码页面没生效,你怎么排查?
🙋 候选人:
- 按浏览器 → CDN → 源站 → 构建产物四层从近到远查,先确认到底加载了哪份文件。
- 浏览器:Network 看请求 URL、status、from disk/memory cache,Response Headers 里 etag、max-age。CDN:是否命中旧节点、purge 是否生效、是否带了错误 query。源站:部署目录是否更新、Nginx 是否配了 immutable 长缓存。
- 根因常见是文件名没带 contenthash 或 CDN 未刷新;修复后加版本号策略并写进发布 checklist。
👔 Raina面试官: 只有部分用户反馈,怎么缩小范围?
🙋 候选人:
- 收集用户 UA、地区、运营商,对比是否特定 CDN 节点或旧 SW 未 unregister。
- 让用户截 Network 面板或远程协助,看实际请求的 bundle 版本是否落后。
HTTPS 证书过期、域名解析错误这类问题怎么发现和验证?
👔 Raina面试官: HTTPS 证书过期、域名解析错误,你怎么发现和验证?
🙋 候选人:
- 上线前用证书监控 + DNS 探测做预防,出问题后分客户端和服务端两侧交叉验证。
- 证书:openssl s_client / 在线 SSL 检测看过期日和链是否完整;浏览器报 ERR_CERT_* 时记录域名和中间证书。DNS:nslookup/dig 对比预期 A/CNAME,查 TTL 和多地解析是否一致。
- App 内 WebView 还要测证书 pinning 场景:换证后旧包是否全部挂;内网域名在测试机能否解析。
👔 Raina面试官: 测试环境证书经常变,怎么不影响日常测试?
🙋 候选人:
- 测试包可关 pinning 或信任自签 CA,生产形态单独回归。
- 维护域名-证书到期表,提前 30 天告警,避免临期才发现。
App 崩溃(Crash)日志你怎么收集和分析?
👔 Raina面试官: App 崩溃了,日志你怎么收集和分析?
🙋 候选人:
- 先复现并保留现场,再从符号化堆栈、设备上下文和业务路径三条线定位。
- 收集:Xcode Organizer / Android logcat / Firebase Crashlytics、Bugly 等 SDK 上报;手动复现时用 adb bugreport 或导出 .ips/.crash。分析:看崩溃线程堆栈顶帧、Last Exception Backtrace、前后用户操作序列和版本号。
- 区分必现 / 偶现 / 仅特定机型:偶现查内存压力、多线程竞态;机型相关查 ROM、ABI、权限差异。输出要带 steps、build、device OS 和堆栈摘要。
👔 Raina面试官: 堆栈全是混淆后的类名怎么办?
🙋 候选人:
- 用 dSYM / mapping.txt 做符号化,Crash 平台上传对应版本符号文件。
- 无符号也能先看异常类型和崩溃模块,缩小到哪个 SDK 或哪个页面生命周期。
