面试题:通过问题排查,考察测试链路熟练程度
一、客户端
1.1 客户端具体功能
一、如果用户点击微博的关注图标但是app上面没有反应 // 登录的按钮不能点击,如何排查问题?
整体流程三部分,客户端、中间数据流、服务端
二、有个用户反馈上传头像失败,分析原因?
三、10%的用户反馈用不了功能,你将如何排查?
关键词是 10%,说明只对部分用户产生影响,考虑的思路有以下几点:
四、一个翻页控件,翻到第二页的时候,发现内容和第一页完全一样,接口请求返回的是200。这个时候你会怎么排查?
要看前端发送的参数正不正常,后端返回的内容正不正常,即接口的请求和返回。
请求URL不正确,是前端bug;传参不正确,是前端bug;response响应内容不正确,则是后端bug。
如果发现js执行报错了,那就是前端有问题,比如跨域问题。
如果是响应内容不正确的后端问题,就继续深挖,更进一步确认下是哪块的问题。
是接口吐数据的时候出错了,还是数据库中的数据就错了,还是缓存中的数据错了(如果用到了缓存的话)(不同开发负责不同部分可能导致不一致)
1.2 客户端异常
一、app闪退的原因?// 客户端出现崩溃的常见类型
二、偶然闪退的排查?
-
要抓取日志具体分析。
1、查看 crash 日志。
// Android APP 可以用 adb 命令去查看:
adb logcat *:E | grep CRASH
// iOS 日志获取方式:
参考:https://www.cnblogs.com/lesten/p/14295526.html
2、一般成熟的团队都会有 crash 的监控平台,可以从 crash 平台上去查看 crash 发生位点。 -
日志获取不到,要尝试复现。
1、手工尝试复现 crash,一般偶然的闪退,都不会特别容易复现,可能需要适当施加一些比较苛刻的条件(弱网、断网、快速点击、快速划动等等)。
2、执行 Monkey 或遍历测试,暴力操作手机,尝试复现 bug。
二、网络
一、网页卡顿的原因是什么?
二、抖音/视频号播放视频过程中突然卡住,可能有哪些原因?
三、网络异常可能由哪些情况导致?
四、网站打开慢了,怎么处理?
原因 | 解决方案 |
---|---|
http 请求次数太多 | 规范接口设计,减少 http 请求次数。 |
接收数据时间过长,如下载资源过大 | 对 HTTP 传输进行压缩,可采用 gzip 无损压缩,压缩效果最佳。 |
JavaScript 脚本过大,阻塞了页面的加载 | 将 JavaScript 脚本放在标签前。script 没有 async 和 defer 时,JS 文件将在下载后立即执行。这种情况下,script 放在顶部会阻塞页面呈现,在网速慢的情况下会导致“白屏”,直到脚本下载完毕才继续呈现页面。因此,script 放在底部可以让页面尽快呈现。 |
CSS、JavaScript、图片等需要重复加载 | 静态资源统一放在一个静态域名上,减轻重复下载静态资源的负担。 |
cookie 影响 | 减小 cookie 的影响 。去除没有必要的 cookie,如果网页不需要 cookie 就完全禁掉。此外,对 cookie 瘦身和设置合适的 cookie 过期时间,也能削弱 cookie 的影响。 |
网页资源过多 | 使用 CDN 部署网络以提高下载速度,可以先通过免费的 CDN 供应商来分发网页资源。 |
应用更新问题 | 更新软件 |
设备存储空间不足 | 释放存储空间 |
四、APP 提示无法连接网络,你会如何排查?
样式和交互层面的 Bug,大概率都是前端的 Bug。
数据和文案相关的 Bug,大概率都是后端的 Bug。(测试时host配置也会影响)
拿移动端来说,最简单但是又最实用的办法是对比测试,即 Android 和 iOS 对比测试,
假如说 Android 和 iOS 都有问题,可能是后端 Bug;
假如说 Android 和 iOS 有一端有问题,则可能是 Andorid 或者 iOS 某一终端的 Bug,但也不一定绝对,也有可能是后端的 Bug。
三、其他
一、运营发现访问量减少,如何排查?
1)通过日志收集平台或者后端访问日志,收集功能的埋点信息,分析接口是否发送成功;是否消息丢失;是否用户收到;
2)确认是否最近有相关模块功能修改
3)是否受市场影响
4)是否之前有爬虫造成访问量大,现在变少
二、压测的时候,QPS 一直上不去,你会怎么排查?
分类 | 原因 | 解决方案 |
---|---|---|
被测服务器的性能 | 看是否资源被打满,导致请求无法连接 | 被测服务器扩容。 |
被测接口 | 看接口是否出现报错、响应时间是否变慢 | 接口性能优化 |
压测机器的性能 | 是不是网络 IO 占满,并发数达不到 | 多台压测机器并发 |
压测工具 | 看压测工具是否支持并发请求 | 采用多线程或协程的方式去并发请求 |
三、消息丢失如何排查?
1)日志、埋点确认问题点。
2)是否有哪个模块有新版本发布影响
参考资料
部分内容参考:https://my.oschina.net/u/4575195/blog/4442751