尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

社交产品测试工程师笔试复盘:从用例设计到消息推送排查

社交产品测试工程师笔试复盘:从用例设计到消息推送排查 2018年那场秋招过去这么久我手头这份“搜狐2018秋招第二批-社交中心-测试工程师试卷”还是能打。它不是一份普通笔试题更像一面镜子照出社交产品测试岗的真实要求既要懂测试理论又得摸透社交业务里那些“人”带来的复杂性还得有线上问题排查的实战底子。我当时做完就一个感觉——这岗位不是让你点点点是让你带着产品思维去找漏洞。这篇东西不是泄题是把我复盘时整理的思路、补全的知识点和踩坑经验完整写出来适合作战秋招测试岗的朋友参考也适合刚入行想往社交方向走的测试同学当一份“自检清单”用。1. 岗位画像社交中心测试工程师到底考什么先别急着看题型得搞清楚搜狐社交中心这个团队要的是什么人。社交中心手里握着的是搜狐系产品的用户体系、社区互动、内容分发这类核心业务用户量大、功能迭代快、线上环境复杂。所以他们对测试工程师的要求不是单纯会写用例会提bug而是得具备三层能力基础测试功底、移动端专项能力、业务敏感度。1.1 核心需求解析三层能力模型基础测试功底用例设计方法等价类、边界值、场景法、Bug生命周期管理、测试流程规范。这是所有测试岗位的底线试卷里大量选择题、判断题都集中在这块考察你基础扎不扎实。移动端专项能力Android和iOS的差异、弱网测试、兼容性测试、崩溃和卡顿的排查思路。社交产品绝大部分流量在移动端所以这部分占比相当重。业务敏感度对社交场景的理解比如好友关系链、消息推送、隐私权限、内容审核这些逻辑能不能在产品需求里找出隐藏的坑是拉开分差的关键。我当时看到试卷结构时第一反应是“这考的不是测试是半个产品经理加半个开发”。这不是坏事反而是行业信号测试岗位的准入门槛正在变高只懂操作不懂原理的人会被淘汰。1.2 试卷整体结构从知识到实战的阶梯设计这份卷子的题目编排是有讲究的整体是“选择题-判断题-简答题-用例设计题-综合题”的五段式结构。前两段考的是知识记忆和基本判断中间简答题考理解深度后两段直接模拟真实工作场景要求你动手设计用例和排查线上问题。这个阶梯式结构本身就是教学它告诉你测试工程师的成长路径是“懂理论→会应用→能实战→善复盘”。如果只刷题不思考背后的设计逻辑遇到变体题就会懵。我当时把每道题都当成一次项目复盘来做收益比单纯背答案大得多。2. 核心知识点拆解社交产品测试的方法论这一部分我整理了试卷中最核心的知识点结合社交产品特性做了展开。不是标准答案复读而是告诉你这些知识是怎么在真实项目里落地的。2.1 用例设计边界值、等价类在社交场景中的变形经典用例设计方法是一定考的但社交场景会给你很多“陷阱”。比如注册功能手机号校验看起来简单用等价类划分就是有效等价类正确手机号、无效等价类错号、空号、超长号但实际操作里还得考虑86前缀、空格输入、全角半角数字、海外手机号。这些都是试卷里不可能一个不落全部覆盖但会在综合题里露出影子。我的建议是设计社交产品用例时建一个“异常输入池”特殊字符、超长文本、emoji、全角空格、连续回车、纯空白、HTML标签、SQL注入片段。这个池子用在一个功能上基本上覆盖了80%的鲁棒性问题。尤其是用户昵称、评论内容、群公告这种UGC字段不做异常输入验证上线就是事故。边界值在社交场景里最常见的应用是字数限制。比如个人简介限制100字用例要测99字、100字、101字评论限制500字测499、500、501。但这里有个隐藏边界中英文混合、emoji占位符。很多系统按字符数统计但emoji在MySQL里utf8mb4下占4个字节如果在代码里用strlen判断长度中英文和emoji会得到完全不同的结果这类问题一旦上线用户立刻能感知属于必测项。2.2 社交关系链测试好友、关注、粉丝的状态一致性好友关系、关注关系、粉丝关系是社交产品的命脉也是测试最容易漏的地方。试卷里简答题直接问“如何测试好友添加功能”很多人上来就写“输入对方账号→点击添加→验证好友列表”这样写只能得基础分。正确的思路是拆状态机。好友关系至少有这些状态未添加、已发送申请、待验证、已通过、已拉黑、已删除。整个流程要覆盖A添加B为好友B收到通知后通过验证A的列表出现BB的列表出现AA删除B后B的列表应该移除AA拉黑B后B搜索不到A但A还能看到BB发消息被拦截。还有各种并发情况两个人同时添加对方A发申请时B恰好删除了AA拉黑了B之后B又来申请加好友。这些是开发里最容易出bug的分支也是测试最能体现价值的地方。这里得分点是“状态流转覆盖度”和“异常路径覆盖度”而不只是“主流程通了没”。我当时做了个简单的关系链状态表把每种操作添加、删除、拉黑、解除拉黑、关注、取关都对应到两端用户的可感知变化上逻辑清晰了很多。2.3 消息推送与通知测试不被用户骂的底线工程社交产品离不开消息推送。但推送测试是很多测试同学的盲区因为涉及服务端下发、手机厂商通道、App进程存活状态、用户设置等多个环节。试卷里有一道场景题用户反馈收不到消息通知你如何排查。完整排查步骤应该是确认用户是否关闭了App内通知开关或系统通知权限iOS是系统级控制Android碎片化更严重各家厂商后台管理策略都不同确认推送通道是否正常是走厂商通道小米、华为、OPPO、vivo还是App自建长连接不同通道的到达率差异很大确认App前端是否在前台很多App前台时是通过长连接即时收到消息不走系统通知栏这不算推送失败确认账号登录态是否过期服务端推送时token失效会导致静默丢弃确认服务端消息状态是推送失败还是推送成功但展示失败这类问题的答题逻辑就是“分层排查”客户端→通道→服务端一层层剥开展示出自己有一套完整的方法论而不是上来猜原因。试卷考的不是你能不能立刻定位到问题而是你有没有清晰的排查框架。2.4 HTTPS接口与数据安全测试基础但必须掌握社交产品的接口全部走HTTPS几乎必考HTTPS握手原理和中间人攻击。你至少得能说清楚HTTPS是HTTP TLS通过非对称加密交换密钥再用对称加密传输数据测试时经常需要抓包这就涉及安装证书、信任证书、处理SSL Pinning的问题。客户端如果做了证书固定Certificate PinningCharles/Fiddler直接抓不到包需要在客户端侧处理或者用Frida这类工具绕过。这些年App安全防护越来越强很多社交App做了反抓包、反调试测试同学也得跟着上手段。但卷子不会考那么深核心还是基础理论对称加密和非对称加密的区别、CA证书的作用、HTTP和HTTPS的区别、如何通过抓包定位前后端数据问题。我自己的习惯是团队里每个测试同学都得会配Charles的SSL抓包这是社交App测试的上手门槛。不会抓包接口测试、弱网模拟、字段篡改全都无从谈起。3. 实操过程与核心环节实现一套可复现的社交功能测试方案光讲理论没用我把当时练习的一套完整方案写出来包括环境、工具、流程和关键参数。这套方案基本能覆盖大多数社交App的功能测试需求。3.1 环境准备设备、抓包和弱网模拟做社交产品测试至少准备一台Android、一台iPhone原因很简单两端的推送机制、权限管理、进程策略都不同很多bug只在单端出现。Android首选一台原生系统设备比如Pixel或者Nexus系列因为国产ROM的后台管理策略可能会干扰推送和保活逻辑导致问题误判。抓包工具我用Charles为主Fiddler备选。Charles配置手机代理主要关注三个点手机和电脑在同一局域网SSL Proxying Settings里要添加需要解密的主机名和端口通常SOCIAL类接口域名全加进去手机端要安装并信任Charles的SSL证书iOS还要在“设置-通用-关于本机-证书信任设置”里手动开启弱网测试用Charles的Throttle Setting就够了重点是预设几组参数3G网络带宽780kbps延迟100ms丢包率可设0%用于模拟基础移动网络高延迟网络带宽1Mbps延迟500ms用于模拟跨国网络、弱信号环境极端弱网带宽50kbps延迟2000ms丢包率10%用于模拟电梯、地下车库场景每组参数建议跑一遍核心链路登录→刷信息流→发消息→发评论→退出登录。观察超时时间、loading状态、失败提示是否友好、数据是否错乱。弱网测试尤其要关注“发送消息失败后重试”如果用户点击发送后请求超时但实际服务端已经收到消息客户端重试就会产生重复消息——这是社交产品典型的弱网bug。3.2 核心链路回归登录、加好友、发消息的用例设计登录是社交产品的守门员。我建议按下面这个矩阵来设计用例用例维度具体场景预期结果正常登录手机号密码正确登录成功跳转首页token写入本地参数异常手机号格式错误/密码少于6位按钮置灰或提示格式错误不发请求服务端异常密码错误/账号被冻结客户端弹出对应错误提示不跳转网络异常弱网/飞行模式登录提示网络错误不崩溃可重试状态切换登录中切后台/来电话/锁屏解锁登录流程不受干扰不卡死会话过期登录A设备后再登录B设备A设备被踢下线提示账号在其他设备登录Token失效手动篡改本地token后请求接口返回401跳转登录页不白屏加好友的核心不止是“加成功”还有各种权限组合。比如对方设置“不允许任何人添加”、对方设置“需要通过验证”、你已被对方拉黑、你添加自己、重复添加已添加的好友。每条分支都要验证两端的状态变化。发消息是社交产品的核心路径建议关注文本消息空消息、纯空格、500字长文本、emoji混合文本图片消息选择图片后快速取消、发送超大图、发送损坏图片、发送gif消息状态流转发送中→发送成功/发送失败/发送超时四种状态之间的切换不能乱多端同步A设备发消息B设备是否实时收到历史记录单聊记录分页加载滑动到顶部加载更早数据不能出现数据重复或时间线错乱3.3 接口测试从手工到脚本的过渡方案试卷里的接口测试题通常不会要求你写多高深的代码但会考察你是否理解接口测试的核心指标。我自己常用的手工接口测试方案是Postman Charles结合先用Postman做单接口验证再用Charles看App真实请求做对比。需要重点验证的字段级内容必填参数缺失服务端是否返回参数错误还是直接500参数类型错误传字符串的地方传数字、传数字的地方传数组越权访问用A用户的token请求B用户的数据水平越权用普通用户token请求管理员接口垂直越权空数据列表接口返回空数组、详情接口返回null、用户信息接口缺少某个字段跑接口测试时建议测试环境关掉前端拦截直接访问后端接口这样能区分问题是前端抛的还是后端没做校验。这个习惯能省大量扯皮的时间。测试环境通过后再在真机上走一遍完整链路确保前后端联调没有问题。4. 常见问题与排查技巧实录社交产品测试高频坑这些坑是我在社交产品测试里真实踩过的试卷里未必直接考但面试官问到“你遇到最难的bug是什么”时这些都是非常好用的弹药。4.1 消息延迟是推送问题还是长连接问题社交App的消息延迟一直是用户投诉重灾区。排查这个问题的正确姿势先看客户端日志有没有收到服务端的消息推回执ack如果收到说明客户端已经拿到数据区分通道是WebSocket长连接实时下发还是依赖离线推送这两条链路出问题的概率完全不同看前后台状态App在前台时走长连接收到消息直接展示App在后台时依赖推送系统可能延迟检查用户网络弱网环境下长连接存在重连机制重连期间消息堆积恢复后集中到达表现就是一连串消息同时弹出来经验值如果手机息屏一分钟后再亮屏消息瞬间“爆炸式”到达大概率是长连接被系统挂起恢复后才补推。这和推送服务无关是系统和App保活策略的博弈。4.2 重复消息接口重试和消息确认没做好我最常遇到的bug之一弱网下用户点发送客户端超时重试结果服务端收到两条一模一样的消息。原因是客户端没有生成全局唯一的消息ID。测试时验证方法很简单断网点发送让请求超时再恢复网络重试查看聊天记录里是否出现两条相同消息。正确做法是客户端生成一个消息ID作为唯一凭证服务端通过这个ID做幂等处理相同ID只落一条。这块出现的bug属于严重的核心链路问题上线前必测。4.3 日志抓取实测不崩溃但线上崩溃怎么办试卷里常考“如何定位崩溃问题”但实际工作中你遇到的情况往往是“测试环境没问题线上崩溃率突然升高”。这种问题必须依赖日志。Android端我习惯集成Bugly或者Firebase CrashlyticsiOS端类似。关键是要把日志上报做成自动的并且一定要有用户操作路径和自定义参数比如版本号、机型、当时网络状态、用户ID的脱敏信息。没有上下文信息的崩溃日志分析起来像大海捞针。正则表达式搜索崩溃堆栈里出现频率最高的类名和方法名通常能快速锁定崩溃共性。4.4 兼容性测试不可能全测但要测出“最大公约数”没有团队能覆盖所有真机所以兼容性测试要做的是“分层取舍”线上用户机型Top10优先覆盖这是最真实的用户环境系统版本覆盖当前主流的大版本Android 8.0/9.0/10.0/11.0各选一台代表机型屏幕尺寸覆盖小屏、大屏、刘海屏、折叠屏特殊ROM华为、小米、OPPO、vivo重点测推送和后台保活App冷启动崩溃、键盘弹起遮挡输入框、分屏模式下界面错乱这些是兼容性测试最容易发现的三个问题。自动化兼容云测平台如Testin、Firebase Test Lab可作为辅助但核心流程还是得人工真机跑一遍。5. 面试与复盘这份试卷给求职者的六个提醒笔试只是第一关后面的面试才是真正的战场。但试卷里暴露出的能力模型在面试自我介绍和项目介绍中是能直接套用的。5.1 自我介绍里就展示结构化思维不要用“我负责过XX项目的测试”这种流水账开头换成“我在XX项目中负责社交核心链路登录、好友、消息的测试工作搭建了一套基于CharlesPostman的接口测试方案推动开发修复了3个消息重复和2个权限越界的严重bug。”一句话里包含了项目背景、你的方案、你的产出、你带来的价值这才是面试官想听到的。5.2 项目介绍聚焦“问题-分析-方案-复盘”聊项目时一定按这个结构讲背景项目是什么你在里面承担什么角色问题你发现的最严重的bug或测试难点是什么分析你的排查思路是什么怎么一步步定位到根因方案你采用什么方案解决有没有沉淀成测试用例或工具复盘如果再给你一次机会哪里能做得更好最好提前准备两个“独立产出”的故事一个偏向测试方案的优化比如把手工用例转为自动化脚本一个偏向线上问题的解决比如紧急版本的回归策略。这两个故事几乎能串起面试官七成的问题。5.3 会写文档用例报告和bug单是你的作品集很多测试同学不重视文档质量但测试用例和bug单就是你专业能力的展示窗口。印象深刻的bug单要包含标题、复现步骤、期望结果、实际结果、环境信息、日志/截图、严重级别、影响范围。贴日志时不要贴整段堆栈只截取关键错误行用code格式标注出来并在下面写清楚你的判断。好的bug单能让开发30秒内进入到工作状态这种细节在面试时提出来会很加分。5.4 技术深度SQL和Linux基本功不能丢试卷里的SQL题比如查两个用户共同好友数量和Linux题比如实时查看日志中的error关键字是很多测试同学的丢分项。我的建议是每天花20分钟刷LeetCode的SQL简单题再熟悉高频Linux命令grep、awk、sed、tail -f、top、netstat、curl。这些不是“加分项”而是测试日常工作的基础。5.5 敏感场景的测试隐私和内容安全是社交产品的底线试卷里如果有“测试好友推荐功能”这种题不要只想到推荐准确率还得想到隐私用户B是否知道他被推荐给了A“可能认识的人”功能在GDPR和国内隐私规范下需要做用户授权确认测试时要验证未授权用户不会被推荐。内容审核也是一样社区里的违规文本、图片、链接要通过审核接口命中测试数据要提前准备好各类样本。5.6 保持冷静学会放弃笔试时间一般紧张遇到没见过的题不要死磕。先把会的题目答完整保证卷面整洁、逻辑清晰再回头思考难题。一道十分的大题卡了半小时不如留足时间把用例设计题写得详实工整这部分才是展示核心能力的主场。6. 工具选型与个人成长路线建议最后把我在社交产品测试里高频使用的工具整理一下并按阶段给出成长建议。6.1 工具链推荐从入门到进阶工具用途掌握程度Charles / Fiddler抓包、弱网模拟、请求篡改熟练Postman / Apifox接口调试、批量测试、自动化断言基础熟练JMeter压测消息推送、接口并发进阶Appium / AirTestUI自动化进阶Charles Frida绕过SSL Pinning、App动态调试高阶SQL Linux数据校验、日志分析熟练Git版本管理、分支查看、代码走查基础熟悉工具不需要一次性全学按项目需要逐步上手。我个人的顺序是先学抓包接口调试最快解决日常问题再学SQL和日志分析解决线上问题接着学压测解决性能问题最后根据业务需要学UI自动化。6.2 学习路线三个月的自我提升计划如果你想系统提升社交产品测试能力我的建议是第一个月把用例设计方法论等价类、边界值、场景法、正交实验结合具体功能各写十组用例目标是你随手拿一个功能比如修改昵称都能写出30条以上的高质量用例第二个月学会抓包和接口测试能独立用Charles完成一次失败的登录请求分析能在30分钟内用Postman跑完一个功能模块的接口全流程第三个月掌握SQL基础能写多表联查比如查到某一类用户的好友数量排行能分析一次线上崩溃日志会用JMeter跑一个简单的接口压测三个月的目标不是一个“合格的点工”而是一个“能独立负责功能模块质量的测试工程师”。这套路稳扎稳打走完基本能覆盖这份试卷里七成以上的考察点。聊到这儿想起当时刷完这份卷子的一个感受好试卷不是考倒你而是考完让你知道自己该补什么。如果你现在正在准备测试岗的秋招或跳槽不用焦虑不会的题目多把它当体检报告每一道错题对应一个知识短板补上就好。测试这行经验是熬出来的也是复盘出来的。
返回列表