真实面经题目 · 原创解析
视频播放页面播放不出来时,如何从资源、播放器、网络、权限和兼容性角度设计排查测试?
这题考媒体播放链路的排查能力。答案要从资源是否可访问、媒体格式是否支持、播放器生命周期是否正确、网络和缓存是否异常、权限和设备策略是否阻断几层逐步定位,并说明每层可采集的断言和回归用例。
真实面经题目 · 原创解析
这题考媒体播放链路的排查能力。答案要从资源是否可访问、媒体格式是否支持、播放器生命周期是否正确、网络和缓存是否异常、权限和设备策略是否阻断几层逐步定位,并说明每层可采集的断言和回归用例。
我会先把“播放不出来”拆成几个阶段:页面加载、资源 URL 获取、媒体资源下载、解复用和解码、播放器初始化、首帧渲染、持续播放。排查时先看是否拿到了有效播放地址,再看资源请求的 HTTP 状态、range 支持、CORS、过期签名、分片是否完整;然后看播放器事件和状态,例如 loadedmetadata、canplay、playing、waiting、stalled、error、readyState、buffered 和 currentTime 是否推进。再根据现象分流:如果请求失败,定位资源或网络;如果下载成功但 error,定位格式、编码、封装或设备兼容;如果 currentTime 不动,定位自动播放策略、播放器状态机、解码阻塞或渲染层;如果弱网下失败,验证缓冲、重试、降级清晰度和错误提示。最终要补固定资源、过期 URL、弱网、分片缺失、格式不兼容、前后台切换和多端兼容的回归用例。
视频播放不是一个动作,而是地址获取、资源请求、元数据加载、解码、首帧渲染、缓冲和持续播放的链路。先确认失败发生在哪一段,才能避免把网络问题误判成播放器问题。
检查播放地址是否为空、是否过期、是否跳转异常,资源请求是否返回 200 或 206,是否支持 range,分片是否完整,CDN 或缓存是否命中异常,CORS 或 mixed content 是否阻断。弱网下还要看超时、重试和断点续传策略。
用媒体事件和状态判断播放器是否正常推进,例如 loadedmetadata、canplay、playing、waiting、stalled、ended、error、readyState、networkState、buffered、currentTime。若 currentTime 不变但没有 error,要重点看自动播放策略、解码阻塞或状态机卡住。
下载成功不代表能播。需要验证封装格式、编码、码率、分辨率、音视频轨、HLS 或 DASH 分片、设备硬解支持和浏览器/系统版本差异。兼容性问题应使用固定样本集在主流设备和版本上回归。
移动端和浏览器可能受自动播放、静音、用户手势、后台播放、网络权限、省流模式和安全策略影响。测试要覆盖首次进入、静音/非静音、前后台切换、锁屏、网络切换和用户主动点击播放。
不是所有失败都能恢复播放。测试还要断言错误提示、重试按钮、清晰度降级、重新获取 URL、加载态超时和日志上报是否正确,避免用户停留在无限 loading 或黑屏。
可能是编码或封装不支持、分片索引异常、音视频轨问题、解码器失败、播放器状态机卡住,或者自动播放策略阻止了播放。需要结合 media error、readyState 和 currentTime 判断。
播放器常通过 range 请求分段加载视频,206 表示服务端返回部分内容。测试要确认服务端支持 range、Content-Range 正确、seek 和断点续传不会失败。
断言首帧时间、缓冲次数和时长、重试次数、清晰度降级、错误提示、恢复后 currentTime 是否连续,以及日志是否能区分超时、断网和服务器错误。
用同一资源在标准播放器或其他端验证,再用已知正常资源在当前播放器验证。若资源普遍失败偏资源问题,若特定播放器失败偏播放器或兼容问题。
这通常指向视频解码、渲染层、Surface/Canvas、硬解兼容或画面轨问题。需要检查视频轨、解码错误、渲染尺寸、前后台切换和 GPU/硬件加速相关日志。