App 安装包体积、启动耗时、内存占用你会关注吗?怎么测?
👔 Raina面试官: 安装包体积、启动耗时、内存占用你会关注吗?怎么测?
🙋 候选人:
- 会关注,这三项直接影响下载转化和留存,属于体验类非功能,大版本和 SDK 升级必测。
- 体积:Android APK/AAB 分包前后对比,iOS IPA 和 App Thinning 后各架构大小;查资源冗余、未压缩大图。启动:冷启动/热启动计时,Android Systrace、iOS Instruments Time Profiler,拆分到首帧、首页可交互。内存:Profiler 看峰值和泄漏,前后台切换、反复进出 heavy 页面是否持续上涨。
- 设基线和阈值:如冷启动 <2s、内存峰值不超上版本 10%,超标阻断发布或建优化 ticket。
👔 Raina面试官: 低端机怎么纳入测试?
🙋 候选人:
- 维护低端机清单,同样脚本跑启动和内存,对比旗舰机倍数是否在 SLA 内。
- 弱网 + 低内存后台杀进程场景也要测,避免实验室数据失真。
热更新 / 动态下发配置对测试有什么风险?
👔 Raina面试官: 热更新和动态下发配置,对测试有什么风险?
🙋 候选人:
- 核心风险是版本不可控和灰度不可见:同一 App 版本不同用户行为不一致,Bug 难复现。
- 热更新:RN/Flutter/H5 容器拉包后逻辑变了但没走应用商店审核,要测回滚、签名校验、下载失败降级。动态配置:开关、文案、接口域名远程改,要验默认值、拉取失败缓存、JSON 格式错误容错。
- 测试策略:固定配置快照跑回归,另设开关全开/全关边界;记录每次发布的 config version,线上问题先查用户命中哪套配置。
👔 Raina面试官: 怎么测热更新回滚?
🙋 候选人:
- Mock 服务端下发坏包或高版本号,断言客户端拒绝安装并保留上一可用 bundle。
- 强制触发回滚指令后验功能恢复,不能出现白屏或无限重试。
深色模式、字体放大、无障碍(Accessibility)你会测吗?
👔 Raina面试官: 深色模式、字体放大、无障碍你会测吗?
🙋 候选人:
- 会测,属于系统级适配,漏了直接影响可读性和合规,不能只验默认主题。
- 深色模式:跟随系统/手动切换,验对比度、图标和图片是否反色正确、弹层和 WebView 是否仍白底刺眼。字体放大:系统字号调最大,布局不截断、按钮可点、横竖屏不重叠。无障碍:TalkBack/VoiceOver 朗读顺序、焦点可达、图片 alt、表单 label 关联。
- 用检查清单 + 抽样页面:登录、表单、列表、支付各过一遍;对比 WCAG 对比度工具,严重不可读算缺陷。
👔 Raina面试官: 自动化能覆盖多少?
🙋 候选人:
- UI 自动化可断言 dark theme 资源加载和关键控件 contentDescription。
- 朗读和对比度主要靠半自动工具 + 手工,但核心路径应纳入发版门禁。
国际化(多语言)和本地化测试关注点有哪些?
👔 Raina面试官: 国际化多语言和本地化,测试关注点有哪些?
🙋 候选人:
- i18n 验文案与布局适配,l10n 验地区规则,两者都要测不能只做翻译对照。
- i18n:各语言字符串完整无 key 外露、复数/占位符正确、德语法语长文案不撑破 UI、RTL 语言(阿拉伯语)镜像布局。日期时间货币按 locale 格式化,时区切换后日程不错乱。
- l10n:手机号/邮编/地址表单校验、支付方式(支付宝 vs PayPal)、节假日和工作日逻辑、合规文案(GDPR 同意)。切换语言无需杀进程即时生效,或明确需重启并提示。
👔 Raina面试官: 没有真实翻译资源怎么测?
🙋 候选人:
- 开 pseudo-localization:加长字符串和特殊字符,提前暴露截断问题。
- 至少测 en + 一种 CJK + 一种 RTL,覆盖 80% 布局风险。
H5 嵌套在 App 内(Hybrid)测试要注意什么?
👔 Raina面试官: H5 嵌在 App 里做 Hybrid,测试要注意什么?
🙋 候选人:
- Hybrid 要同时验H5 本身和 JSBridge 桥接,环境比纯浏览器多一层容器差异。
- 容器:WebView 内核版本(系统 WebView / 自研 X5)、UA 注入、Cookie 与 Native 登录态同步。桥接:调相机、定位、分享、支付等 Native 能力,回调 success/fail/cancel 三态。生命周期:App 切后台、锁屏、深链打开 H5 参数是否丢失。
- 还要测离线包 vs 在线 URL、file:// 与 https 混用、Android 返回键是关 WebView 还是回历史栈。弱网下 H5 白屏时 Native 应有 loading 或错误页。
👔 Raina面试官: H5 在 App 里正常,独立浏览器打开有问题,算 Bug 吗?
🙋 候选人:
- 看产品定义:若仅 App 内交付,以 WebView 为准;若分享外链也要用,则两边都要修。
- 记录差异根因:通常是 UA 限制、Cookie 域或 bridge 依赖,写进测试范围说明。
小程序测试和普通 H5 / App 测试有什么不同?
👔 Raina面试官: 小程序测试跟普通 H5、App 有什么不同?
🙋 候选人:
- 小程序跑在宿主沙箱里,API、发布和审核链路和 H5/App 都不一样,不能照搬同一套用例。
- 差异:无 DOM/BOM,用 WXML 和宿主 API;包体积限制、分包加载、域名白名单和 request 合法域。登录走 wx.login 等宿主能力,支付、订阅消息、分享卡片有专属流程和回调。
- 测试要点:多宿主版本(微信基础库)、真机预览 vs 开发者工具差异、提审被拒场景(诱导分享、未声明权限)。兼容矩阵按 iOS/Android 微信版本而不是浏览器。
- 发布:体验版 → 审核版 → 线上,每阶段验配置和回退;H5 可随时改,小程序审核通过才全量,热修能力弱,测试窗口要前置。
👔 Raina面试官: 开发者工具通过真机不过,你怎么查?
🙋 候选人:
- 真机开调试看 vConsole,对比基础库版本和域名配置。
- 常见是 HTTPS 证书、权限声明或 iOS 隐私弹窗未触发,逐项对照宿主文档。
接口返回字段新增 / 删减 / 类型变更,你会怎么做兼容性测试?
👔 Raina面试官: 接口返回字段有新增、删减或类型变更,兼容性你怎么测?
🙋 候选人:
- 先拉契约基线,再分客户端容忍度和版本策略做正向 + 破坏性验证。
- 新增字段:老客户端应忽略未知字段,新客户端能正确解析;删字段:确认文档标注废弃期,老版本降级逻辑不崩。类型变更(string→number、nullable 等)是重灾区,要测序列化/反序列化两端。
- 我会用契约测试 + 快照对比:CI 里对比 OpenAPI/JSON Schema,手工补边界样例。联调时让服务端开 feature flag 逐步放量,回归覆盖所有消费方(App、H5、第三方)。
👔 Raina面试官: 下游还没升级,服务端先改了字段类型,你怎么拦?
🙋 候选人:
- 这是发布门禁问题:破坏性变更必须走版本号或双写字段,测试在预发用老客户端包打全链路。
- 没有兼容方案就拒发,或要求服务端同时返回新旧字段过渡一个版本。
上传接口超大文件、空文件、特殊文件名怎么测?
👔 Raina面试官: 上传接口,超大文件、空文件、特殊文件名你怎么测?
🙋 候选人:
- 按文件大小、内容、元数据三条线拆,重点验服务端限制与客户端提示一致。
- 超大:边界值(刚好等于/超 1 字节 limit)、分片上传中断续传、超时与内存溢出防护。空文件:0 字节是否拒绝、空壳 zip/pdf 是否误过。特殊文件名:中文、空格、../、超长名、无扩展名、双扩展名、emoji。
- 还要测MIME 与魔数校验:改后缀伪装类型、重复上传幂等、病毒扫描桩。弱网下传一半断线,确认临时文件清理和进度恢复。
👔 Raina面试官: 限制写 100MB,实际传 200MB 期望什么?
🙋 候选人:
- 应明确拒绝:HTTP 413 或业务码 + 可读文案,不能 silent truncate。
- 同时查日志和存储,确认没有半写入脏数据。
下载接口中断续传、并发下载怎么验证?
👔 Raina面试官: 下载接口的中断续传和并发下载,你怎么验证?
🙋 候选人:
- 续传看Range 请求 + ETag/Last-Modified,并发看连接数限制与文件完整性。
- 中断:下到 30%/70% 断网,重连带 Range 头,MD5 与全量下载一致;服务端不支持续传时应明确报错而非重复从头。并发:同用户多线程、多设备同时拉同一资源,验限速、鉴权、CDN 缓存命中。
- 边界:单连接超慢速是否触发超时;HEAD 与 GET 头信息一致;大文件分块校验每段 hash。
👔 Raina面试官: 怎么自动化验文件没下坏?
🙋 候选人:
- 脚本对比全文件 MD5/SHA256,分段下载再 merge 后 hash 必须相同。
- 并发场景加断言:总字节数不重复计数、最终文件大小等于 Content-Length。
签名算法错误、时间戳过期、Nonce 重放攻击怎么测?
👔 Raina面试官: 签名错了、时间戳过期、Nonce 重放,这类安全接口你怎么测?
🙋 候选人:
- 围绕签名校验、时效窗口、一次性凭证设计负向用例矩阵,正向只留一条 happy path。
- 签名:密钥错、参数排序错、漏字段、大小写、URL 编码差异,期望统一 401/403 且不泄露细节。时间戳:超前/滞后超过 skew、时区切换、毫秒与秒混用。Nonce:同一 nonce 连发两次,第二次必须拒绝;过期 nonce 清理后不可复用。
- 我会用抓包改包 + 自动化脚本批量跑,配合服务端审计日志确认拒绝原因码正确,防重放不能仅靠前端。
👔 Raina面试官: 时钟偏差允许 5 分钟,边界怎么测?
🙋 候选人:
- 测4分59秒通过、5分01秒拒绝,并在文档与实现一致。
- 多实例部署还要验各节点 NTP 同步,避免一台过一台不过。
