没想到真的就坚持了快两年。
现在回想,当初的坚持还是很值得的。虽然现在阅读量还是不高,但至少我知道我在做的事情真正能帮助到别人,也帮助到我自己。(大家可以感兴趣的可以关注一下,公众号“特斯汀软件测试”)
今天写的这份面试题我之前就整理分享过,但当时有一部分是没有参考答案的。断断续续总有读者来问我要答案。所以今天吃完饭抽空把遗漏的给补上了,分享给出来,希望能帮到大家。
老规矩,看到面试题,还是希望大家先不要马上看答案。先自己心里想一遍,如果是你你会怎么回答。另外,因为是面试题,所以回答时思维展现尽量全面一些。本文为抛砖引玉,如果大家对哪题有更好的答案,非常欢迎在评论区留言讨论。
在这里也预祝大家面试顺利!
标签:百度腾讯阿里抖音滴滴京东快手测试开发面试题
开始正文:
排查问题的思路
Q:网页崩溃的原因是什么?
1. 内存泄漏
2. 网页代码复杂和浏览器bug
3. 网页数据过多
4. Ajax的Web服务漏洞
Q:有个用户反馈上传头像失败,分析原因?
Q:app闪退的原因?
Q:偶然闪退的排查?
- 一般成熟的团队都会有 crash 的监控平台,可以从 crash 平台上去查看 crash 发生位点。
- 手工尝试复现 crash,一般偶然的闪退,都不会特别容易复现,可能需要适当施加一些比较苛刻的条件(弱网、断网、快速点击、快速划动等等)。
- 查看 crash 日志,比如 Android APP 可以用 adb 命令去查看:
// mac 下面
adb logcat *:E | grep CRASH
// windows 下面
adb logcat *:E | findstr CRASH
- 执行 Monkey 或遍历测试,暴力操作手机,尝试复现 bug。
Q:网页卡顿的原因是什么?
原因一:http 请求次数太多
解决:规范接口设计,减少 http 请求次数。
原因二:接收数据时间过长,如下载资源过大
解决:对 HTTP 传输进行压缩,可采用 gzip 无损压缩,压缩效果最佳。
原因三:JavaScript 脚本过大,阻塞了页面的加载
解决:将 JavaScript 脚本放在标签前。script 没有 async 和 defer 时,JS 文件将在下载后立即执行。这种情况下,script 放在顶部会阻塞页面呈现,在网速慢的情况下会导致“白屏”,直到脚本下载完毕才继续呈现页面。因此,script 放在底部可以让页面尽快呈现。
原因四:CSS、JavaScript、图片等需要重复加载
解决:静态资源统一放在一个静态域名上,减轻重复下载静态资源的负担。
原因五:cookie 影响
解决:减小 cookie 的影响 。去除没有必要的 cookie,如果网页不需要 cookie 就完全禁掉。此外,对 cookie 瘦身和设置合适的 cookie 过期时间,也能削弱 cookie 的影响。
原因六:网页资源过多
解决:使用 CDN 部署网络以提高下载速度,可以先通过免费的 CDN 供应商来分发网页资源。
Q:10%的用户反馈用不了功能,你讲如何排查?
- APP 版本影响,可能是接口改动没有考虑版本控制,对低版本用户造成影响。
- 操作系统版本,可能是用户的操作系统过高或过低,没有做好兼容。
- 灰度测试或 AB 测试,可能是功能缺陷导致对部分灰度用户产生影响。
- 跟会员用户有关,可能是一些功能仅仅只对 VIP 会员开放,然而这部分功能有缺陷。
- 跟用户分布地域有关,比如说:有些地区没有开放功能,但是也给这些用户展示了入口。
Q:登录的按钮不能点击,如何排查问题?
登录按钮不能点击,大概率前端会有问题:
- 前端没有响应用户点击事件,导致请求发不出去。
- 前端发起 HTTP 请求,但是后端接口返回异常,前端捕获异常之后,没有处理。
- 网络异常,发不出去请求,但是前端也没有作出提示。
- 内存不够,导致页面卡死
Q:压测的时候,QPS一直上不去,你会怎么排查?
- 看被测服务器的性能,看是否资源被打满,导致请求无法连接 解决办法:被测服务器扩容。
- 看接口是否出现报错,以及响应时间是否变慢 解决办法:接口性能优化。
- 看压测机器的性能,是不是网络 IO 占满,并发数达不到 解决办法:多台压测机器并发。
- 看压测工具是否支持并发请求 解决办法:采用多线程或协程的方式去并发请求
Q:APP提示无法连接网络,你会如何排查?
第一步:检查网络环境
- 检查 4G 和 Wifi 是否可用,可以先看手机网络连接图标状态,有无信号,是否弱网,并且可以切换其他 APP,测试网络是否可用。
- 检查是否有网络限制,比如仅公司内网可用的 APP,你在别的网络环境是无法连接的。
- 检查是否连接了代理或代理连接是否出现异常,手机连接电脑代理之后,如果不安装证书,发起 https 的请求将出现异常。
第二步:检查 APP 的网络请求
- 抓包,检查 APP 请求的域名是否正确
- 抓包,检查后端接口是否响应超时
- 抓包,检查后端接口是否返回异常,而 APP 没有做相关的异常提示。
Q:怎么判断一个BUG到底是前端的BUG还是后端的BUG?
- 样式和交互层面的 Bug,大概率都是前端的 Bug
- 数据和文案相关的 Bug,大概率都是后端的 Bug
拿移动端来说,最简单但是又最实用的办法是对比测试,即 Android 和 iOS 对比测试,
假如说 Android 和 iOS 都有问题,可能是后端 Bug;
假如说 Android 和 iOS 有一端有问题,则可能是 Andorid 或者 iOS 某一终端的 Bug,但也不一定绝对,也有可能是后端的 Bug。
实战案例
Q:微博发动态,设计一下测试点
虽说是发动态,但是测试时不能只是关注发动态这一操作的功能,发完动态之后,我们要确保动态要对外可见(对关注的人可见),单单测试发动态这个操作,实际上意义是不大的,毕竟只测发动态,不能实现测试闭环。
所以测试用例一定要把整个使用流程的case都要涉及到,避免漏测。