看到这份《小米2019秋招手机测试笔试题(A)》的时候,我大概能想象出当年笔试现场的样子:一屋子应届生,看到卷子上“手机测试”四个字觉得挺对口,真动笔才发现,这行当不光是点点点,它考的是你对一套完整移动系统有没有底层认知。我自己做手机测试这些年,面过不少人,也出过题,这套卷子放在今天看依然有参考价值——它考察的不只是答案本身,而是你有没有测试思维、能不能把Android底层知识落到实际场景里。
这篇文章我会把典型考点、解题思路、背后的原理,以及实际工作里对应的测试场景全部拆开讲。不管你是准备手机厂商或互联网公司的测试岗,还是刚入行想搞明白手机测试到底测什么,都能从中拿走一套方法论。
1. 这套笔试题考的是什么
1.1 手机测试岗的能力模型与出题逻辑
手机测试和普通App测试最大的区别在于:你测的不只是一个应用,而是一整套软硬件结合的系统。所以笔试不会只考“怎么设计用例”这种通用题,而是会把Android系统知识、硬件特性、通信协议、性能指标全部揉在一起。
2019年秋招这个时间节点很有意思。那时候5G刚开始商用,全面屏和刘海屏正处于混战期,各家厂商对相机、续航、信号这些卖点卷得厉害。手机测试岗需要的人,不是只会照着用例点点点的执行者,而是能发现“这个场景为什么会有问题”“这个缺陷是系统层还是应用层”的思考者。所以这套题的出题逻辑很清晰:先用基础题筛掉底子薄的人,再用场景题筛掉只会背概念的人,最后用用例设计题筛掉没有实战思维的人。
整套卷子的能力模型可以拆成四块:
- Android系统基础:四大组件、进程与内存管理、消息机制,这些决定了你能不能看懂缺陷日志。
- 硬件与通信知识:屏幕、电池、摄像头、Wi-Fi、GPS、传感器,这些是手机测试独有的领域。
- 测试理论与工程方法:用例设计、回归策略、兼容性矩阵、自动化框架,这是测试的基本功。
- 问题定位与分析能力:给你一个现象,你能不能判断是硬件问题、系统问题,还是三方App兼容问题。
把这四块对应到答题策略上,就是:基础题要稳、场景题要细、设计题要全、分析题要深。很多人在基础题上丢分,不是因为不会,而是因为审题不仔细。后面我会用具体题目说明。
1.2 题型分布与答题时间分配
这套A卷的题型分布,我推测大致是这样的结构(具体题目数量会有微调,但类型基本覆盖):
| 题型 | 数量 | 单题分值 | 考察方向 | 建议用时 |
|---|---|---|---|---|
| 单选题 | 10 | 2分 | Android基础、硬件常识 | 10分钟 |
| 多选题 | 5 | 3分 | 概念辨析、场景判断 | 10分钟 |
| 判断题 | 10 | 1分 | 易混淆概念 | 5分钟 |
| 简答题 | 4 | 8分 | 测试理论、问题定位思路 | 20分钟 |
| 用例设计题 | 1 | 15分 | 综合测试思维 | 15分钟 |
这里我要强调一个关键策略:先做用例设计题,再做简答,最后做选择判断。为什么?因为用例设计题分值最高,而且需要你进入“测试思维”状态,这个状态一旦建立,做简答题时你会自然而然地用场景去说话,而不是堆概念。很多人从选择题开始做,做到最后用例设计时脑子已经木了,写出来的用例全是流水账。
时间分配上,如果总分是100分、时长90分钟,建议这样卡点:前30分钟解决所有客观题(选择+判断),留10分钟检查;中间30分钟做简答;最后20分钟写用例设计,留10分钟补充。这套卷子考察的不是你会不会背“等价类划分”的定义,而是你能不能把边界值法用在“充电到100%时提示灯颜色切换”这种真实场景里。
2. 核心考点逐题拆解
2.1 Android系统与硬件基础题详解
单选题部分通常会出这种风格:“下列关于Android进程的说法,正确的是____”。四个选项里一定有两个是概念混淆项,比如把“进程”和“线程”混在一起说,或者把“前台进程”和“可见进程”画等号。
首先你要建立一张清晰的概念表:
- 前台进程:用户正在交互,比如正在输入的App,进程被杀后界面会立即看到影响。
- 可见进程:用户看得到但不交互,比如播放视频时切到后台设置,视频播放进程仍然可见。
- 服务进程:后台跑服务,比如音乐播放,没有可见界面但用户感知明显。
- 缓存进程:完全在后台,比如三天前打开的购物App,系统内存不足时会优先清理这里。
Android系统在内存不足时的回收顺序,就是从缓存进程开始向上杀。这个知识点在2019年考,今天依然考,因为它是系统稳定性的底层逻辑。另一类必考硬货是Anr和Crash的区别:ANR是主线程被阻塞超过5秒,系统弹出“无响应”对话框;Crash是未捕获异常导致进程直接死掉。这两个概念在实际工作中经常被刚入行的人搞混,笔试里用判断题来考再合适不过。
硬件方向的题目,2019年高频出现的是屏幕分辨率、电池容量逻辑和传感器类型。比如:
- 判断:1080P屏幕指的是屏幕分辨率为1920×1080。(正确)
- 判断:光线传感器用于自动调节屏幕亮度。(正确)
- 选择:加速传感器与陀螺仪的区别。
这种题考察的是你对“手机作为硬件设备”是否有基本认知。屏幕分辨率牵涉到UI适配测试,光线传感器牵涉到系统亮度调节逻辑,而传感器则是游戏测试、相机防抖测试的核心。每一道硬件题的背后,都对应一个真实的测试专项。
2.2 测试理论与流程的必考框架
简答题里有一道可以说是手机测试笔试的“必出题”:简述回归测试与冒烟测试的区别,并说明在手机系统测试中如何应用。
这道题答得好不好,能直接看出你有没有实际项目经验。教科书式的答案是:冒烟测试是在版本提测后、正式测试前,对主要功能进行快速验证;回归测试是在缺陷修复后或版本迭代时,对已有功能进行重复验证,确保没有引入新问题。这种回答能拿基础分,但拿不到高分。
高分答案应该有“手机测试特色”。我建议这么答:
在手机系统测试中,冒烟测试会聚焦在开机、解锁、桌面滑动、拨号、短信、相机、设置等核心链路上,一般在拿到新固件后的2小时内完成,目的是判断这个版本是否具备继续深入测试的条件。回归测试则更系统和工程化,需要依据风险等级选择回归范围:如果改动的是系统底层(比如内核、驱动、Framework),那么WLAN、蓝牙、GPS、传感器这些基础通信能力都要纳入回归;如果只是某个应用层的改动,可以聚焦到该应用及其关联模块。每次系统版本发布前,我们还会做一轮全量回归,这就是大家常说的“发布前冻结测试”。
这个答法的高明之处在于:你不仅说了概念,还说了手机测试里“怎么选回归范围”这个实际决策逻辑。面试官一看就知道你做过真项目,而不是背了书。
测试理论里还有一个高频考点是兼容性测试的矩阵设计。这个问题在2019年手机测试里特别重要,因为当时芯片平台有高通、联发科、海思,系统版本从Android 8.0到10.0,屏幕比例从16:9到19.5:9,刘海屏和水滴屏并存。兼容性测试矩阵的核心不是“把所有组合都测一遍”,而是通过正交分析法,找出最能代表风险的点。我的经验是按三重维度交叉:芯片平台×系统版本×屏幕分辨率。在这个矩阵里选一条主链路(比如相机)做全矩阵覆盖,其他功能按风险等级抽测。
3. 用例设计题:从需求到可执行用例
3.1 经典场景:设计一款手机闹钟应用的测试用例
2019年小米秋招这道用例设计题,我印象里考的是闹钟或者相机。这两个都是手机上的高频应用,功能逻辑不算复杂,但牵扯到的系统交互非常多,特别能考察测试思维的广度和深度。
拿到这类题,切忌上来就写“设置闹钟-闹钟响-关闭闹钟”这种流水账。要先拆需求,把闹钟应用放进整个手机系统里去思考它可能影响什么、被什么影响。
闹钟应用的核心功能拆解:
- 基础场景:设置单个闹钟、编辑、删除、开关、重复规则。
- 时间逻辑:跨天闹钟、时区切换后闹钟是否触发、闰年/夏令时。
- 系统交互:关机后闹钟、静音模式下闹钟、低电量模式、勿扰模式下闹钟。
- 异常场景:设置过去的时间、日期修改后闹钟逻辑、重复闹钟在触发当天被删除。
- 资源竞争:闹钟响时来电话、闹钟响时正在播放视频、闹钟响时正在用相机录像。
把这些维度想清楚后,用例表格大概长这样:
| 用例编号 | 前置条件 | 测试步骤 | 预期结果 | 优先级 |
|---|---|---|---|---|
| ALARM_001 | 系统时间正常,无其他闹钟 | 设置一个3分钟后的闹钟,等待触发 | 闹钟准时响铃,界面显示提醒,可正常关闭 | P0 |
| ALARM_002 | 系统时间正常 | 设置闹钟后立即开启飞行模式,等待触发 | 闹钟仍正常响铃,不受网络状态影响 | P1 |
| ALARM_003 | 闹钟设置开启 | 进入设置修改系统时区,从UTC+8改为UTC-5 | 闹钟按修改后的时区对应时间触发,无错乱 | P1 |
| ALARM_004 | 手机电量低于15% | 设置5分钟后闹钟,不充电等待触发 | 闹钟响铃,同时系统可能出现低电量提醒,但闹钟逻辑不受影响 | P2 |
| ALARM_005 | 系统音量调至静音 | 设置1分钟后闹钟,等待触发 | 按系统音量策略处理:若媒体静音但闹钟音量独立则正常响铃;若全局静音则按产品定义执行 | P1 |
| ALARM_006 | 正在通话中 | 设置1分钟后闹钟,通话保持,等待触发 | 闹钟响铃时通话不断开,闹钟声音与通话声音按策略混合或提示 | P2 |
这里要注意,用例设计不是写脚本,不需要精确到“点击哪个坐标”。笔试阅卷人看到的是你的结构能力和边界思维。闹钟这种功能,边界值全埋在时间逻辑里:00:00、23:59、12:00这种整点临界,跨周/跨月重复,一年后的365天设置,这些都能用边界值分析法快速定位。
3.2 专项场景:弱网、来电打断与低电量
手机应用测试和纯Web测试最大的不同在于,我们永远要考虑“移动环境里的不确定性”。2019年的卷子里,场景题很可能会给你一个具体情境:用户在地铁里刷视频,视频加载到一半突然断网,恢复网络后App表现异常,请问如何复现、如何定位。
这类题考察的是问题定位链路。按我实际工作的经验,答题框架是固定的:
- 复现条件梳理:什么网络状态(4G/5G/Wi-Fi)?弱网还是断网还是切换网络?视频播放到哪个进度时断网?恢复网络的方式是自动还是手动?
- 日志采集:连接adb抓取logcat,重点看网络状态切换的关键字、播放器状态回调、异常堆栈。
- 分层定位:先判断是系统网络能力问题,还是播放器SDK问题,还是App自身逻辑问题。区分办法是看日志里网络层有没有正常回调,如果回调正常但UI没恢复,就是App问题;如果回调都没有,就要看系统网络状态。
- 提缺陷:描述要精确到“在XX网络环境下,从Wi-Fi切换到4G后,播放器停留在loading状态超过30秒,预期应自动恢复播放”。
这套思路在笔试里就是满分答法,因为你展现了完整的问题分析闭环:现象描述、环境变量、定位手段、修复预期。很多应届生只写到“网络切换时播放器卡住”,这种描述在缺陷单里会被开发直接打回。
专项场景里还有一类高频题是Android手机内存不足时的行为测试。这个和闹钟有什么关系?有关系——如果你设计的是相机应用用例,内存不足时拍照会不会闪退?弱网、来电打断、低电量这三个场景,本质上都是在测“系统资源被抢占时,应用是否还能保持主要功能正确”。这是移动端测试思维的核心,也是从“功能测试”走向“系统测试”的必经之路。
4. 性能与稳定性专项考点
4.1 性能测试关键指标与判断标准
手机测试笔试的最后一道简答,经常出性能测试的指标和标准。这个知识点不看书也能答一部分,但要是把“启动时间、CPU占用、内存占用、帧率、功耗、温度”这六项答全,再配上判断标准,就是专业和业余的分水岭。
我按2019年那个时间点的主流标准整理一下:
| 指标 | 测试方式 | 2019年主流判断标准 | 备注 |
|---|---|---|---|
| 冷启动时间 | 从点击图标到首页完全加载 | 3秒内可接受,1.5秒内优秀 | 相机这类重应用可放宽到4秒 |
| CPU占用 | adb shell top或PerfDog监测 | 日常场景平均<30%,峰值<60% | 游戏场景单独定标 |
| 内存占用 | adb shell dumpsys meminfo | 常用应用<200MB,不得持续增长 | 重点看是否有内存泄漏 |
| 帧率 | gfxinfo或PerfDog | 滑动场景平均>50FPS,卡顿率<2% | 低于30FPS视为明显卡顿 |
| 功耗 | 功耗仪或温升测试 | 连续播放视频1小时温升<5℃ | 需区分亮屏耗电和待机耗电 |
| 温度 | 红外热像仪或温升测试 | 满载30分钟外壳温度<45℃ | 高温会触发放频保护 |
很多人会忽略“测试条件必须统一”这点。同款手机,室温25℃和35℃的温升表现完全不同;屏幕亮度50%和100%的功耗差距也很大。所以性能测试报告里必须写明测试环境和设备状态,这是专业性的体现。
这里顺带提一个高频判断题:多开应用会导致手机运行变慢,因此Android系统需要频繁关闭后台应用来提升性能——这种说法正确吗?答案是错误。Android系统的内存管理机制是“尽可能多地保留后台应用”,因为重新冷启动一个应用的代价远大于保留在内存里。系统有自己的回收机制(Low Memory Killer),不会因为后台应用多就变卡。很多用户习惯手动清后台,反而导致应用频繁冷启动、耗电增加。这道题考察的是你对Android内存回收机制的理解,而不是直觉。
4.2 稳定性测试Monkey与问题分类
2019年手机测试笔试,Monkey基本是必考的。题目风格通常是:简述Monkey测试的原理,以及如何对Monkey测试结果进行分析。
Monkey原理很多人都会背:向系统发送伪随机的用户事件流,实现对软件的压力测试。但笔试想让你说清楚的是“怎么用”。我通常会在答案里补充实际操作细节:
- 先用
adb shell monkey -p com.android.settings -v 10000对单个应用做压力测试。 - 设置
--throttle 500让每次事件间隔500毫秒,避免事件过密导致系统假性崩溃。 - 如果想要面向整个系统测试,去掉
-p参数,让Monkey在系统全局随机测试。 - 用
--pct-touch 50 --pct-motion 20调整事件比例,让测试更贴近真实用户操作。
Monkey测试的价值在于“低成本的长时间稳定性验证”。跑8小时Monkey不崩溃,不能说明系统没问题,但能说明系统没有明显的瞬时崩溃风险。反过来,Monkey一跑就崩,那这个版本基本可以打回。Monkey跑出来的崩溃,必须分析Monkey日志和logcat,看崩溃发生时正在执行什么操作,是系统问题还是应用对异常输入处理不当。
稳定性测试的缺陷分类也有固定的套路:
- 必现缺陷:按固定步骤100%复现,直接提给开发,优先级最高。
- 偶现缺陷:概率性复现,需要采集日志、比对环境差异,甚至要用Monkey加强压力复现。
- 性能劣化:不崩溃但越来越卡,优先看是否有内存泄漏、线程堆积、全局变量未释放。
- 进程死亡但无崩溃日志:可能是系统低内存回收(LMK)杀了进程,这种情况不算Bug,但如果频繁发生,要查上游原因。
我在实际工作里的体会是,Monkey测试最容易被忽略的是结果整理。跑完8小时Monkey,日志里可能有几百条ANR或异常,如果不按模块分类整理,开发根本没法处理。这个东西在笔试里体现为“如何分析Monkey输出”——会回答“跑完看有没有crash和anr”的人,和会回答“按进程、事件序列、异常类型分层分析,再结合logcat定位到具体模块”的人,水平差距一眼可见。
5. 常见问题与避坑指南
5.1 笔试答题中的易错点盘点
从阅卷角度说,我见过太多有潜力但拿不到分的学生,原因往往不是不会,而是踩了这几个坑:
概念混淆型:把“内存泄漏”和“内存溢出”混为一谈。内存泄漏是产生了无法释放的对象,导致可用内存越来越少,是“慢性病”;内存溢出是内存直接被用完导致崩溃,是“急性病”。在Android里,内存泄漏通常用LeakCanary或MAT分析堆栈来定位,内存溢出则表现为OOM(OutOfMemoryError)。笔试里用判断题考这个,就是在筛概念不牢的人。
绝对化表述型:所有选项里出现“一定”“完全”“只要……就……”的,大概率是错误项。测试这个行业本身就是处理不确定性,对绝对化的表述要保持天然的警惕。比如“自动化测试可以完全替代手工测试”这种选项,在判断题里闭着眼选False就对了。
用例设计流水账型:前面说了,用例设计题最忌流水账。但实际阅卷时,我看到60%以上的考生都在写“打开App-设置闹钟-保存-看能否设置成功”。这种用例太“线性”了。好的用例设计一定要有分支,要有反向思维,要主动考虑异常条件。比如设置闹钟时把时间设为过去的时间点,App是提示错误还是自动跳到明天?这种边界值在笔试里是加分项。
不写前提条件型:很多人在设计用例时直接写操作步骤,没有前置条件和预期结果。这在笔试里会直接扣分。实际工作中,测试用例的三要素(前置条件、操作步骤、预期结果)是铁律,笔试不写说明你还没有养成专业习惯。
5.2 从笔试到面试:测试思维怎么展现
笔试过后就是面试。很多同学笔试能过,面试却败在“只会背概念,不会讲场景”。我这里给一个极其有效的方法论:所有回答都用“因为……所以……”结构。
面试官问“你怎么设计相机应用的测试用例”,不要回答“我会测拍照、录像、美颜、滤镜”。这种回答像目录,不像思考。正确方式是:因为相机的核心链条是“取景-对焦-拍照-编码-存储”,所以我的用例会按主链路优先设计;因为在弱光和逆光环境下相机的曝光算法最容易出问题,所以这两个场景会纳入重点专项;因为在内存不足时图像编码最容易崩溃,所以我会把低内存拍照作为独立用例设计。
这一段回答里,“因为”后面展示的是你对场景的判断,“所以”后面展示的是测试策略的推导过程。这个思维方式在笔试的简答题里同样管用,而且是拿高分的关键。
面试官还可能会追着某个答案往下挖。比如你说了“用adb logcat抓日志”,他可能会问“日志一般存在哪里”“怎么过滤关键字”“怎么判断关键日志”。这就要求你平时真的在真机上跑过。我的建议是,哪怕你还没入职,自己也要有一台Android手机,熟悉adb常用命令,比如:
adb devices adb logcat -v time > log.txt adb shell dumpsys meminfo <package_name> adb shell top -n 1 | head -20 adb shell am start -W <package_name>/.MainActivity这几个命令是测试基本功,笔试不提,但面试现场演示会很加分。
最后再分享一个我实际带人时的体会:手机测试这套笔试内容,更像是一面镜子,照出的是你对“系统”的理解有多深。背概念可以过笔试,但过不了试用期。真正想在手机测试这条路上走得远的人,一定要给自己创造真机操作的机会,去刷机、去抓崩溃日志、去研究WLAN和蓝牙的共存干扰。那些看似“没必要手动折腾”的底层细节,恰恰是未来你和其他测试拉开差距的地方。