如何进行问题定位

2020/04/01 17:32
阅读数 96

前言

最近收到多个用户反馈“打字发信息的时候会发一半出去还有一部分没有发出去”。看到这个用户反馈,小编开始着手复现问题,今天给大家分享一下复现问题过程。在本次问题定位主要使用以下的流程:

确认问题环境

确认问题现象,搜集用户反馈,分析用户环境,包括系统、机型、应用、操作等。通过和有问题的用户沟通,发现此问题95%的用户均在iOS13系统、微信中出现问题。


确认复现路径

1)  选择和用户环境相似的设备,iPhoneXS Max(13.3系统)

2)  选择和用户出现问题相同的应用,微信最新版本

3)  拿到用户出现问题的截屏和视频,同时与用户沟通对步骤进行确认,发现操作路径主要是上屏后点发送就出现了此问题。

4)  当知道用户出现问题的路径后就需要去确认影响因素,尽量能够稳定复现此问题,例如内存占用,CPU消耗,打字速度等。这里经过验证发现当打字速度过快时就出现了用户描述的情况。如下图:想发送“嘻嘻嘻嘻嘻嘻”,结果只发送出去“嘻嘻嘻”,输入框中还残留“嘻嘻嘻”。


查找问题原因

复现问题后,开始定位问题原因,缩小问题范围。关于定位问题方法,可供参考如下:

1)梳理代码逻辑,增加log点,通过复现问题,寻找问题点;

2)二分法定位,把程序逻辑一点点注释掉,看看会不会出问题,类似二分查找的方法,逐步缩小问题的范围;

3)制作工具,针对某些bug编写一些调试辅助工具。比如,我们之前收到用户崩溃log,崩溃栈显示在退格的时候,但是人工不能复现,所以针对这个问题,我们开发一个工具,随机打字上屏候选后退格,退格次数随机,并将每次操作进行记录。通过这个工具复现了退格问题,通过记录的输入log,也找到了必现步骤。

这次,我们采用的主要是二分法去对问题进行精准定位,发现是两个线程交互时的问题,那此时就是对这两个线程段的代码进行log验证,经过验证我们最终发现问题是出“在上屏过内核”这个步骤。正常情况如下图1,出问题的情况为图2



由于内核处理和上屏为两个线程,因此在上屏时如果内核后处理完,则此时就会出现,用户发送只发了一半内容,另一半还在发送框内。



解决方案

由于已经知道问题的根本原因了,因此就需要开发和测试同学一起去进行改动方案确定,这里由于我们代码中内核线程运行为顺序执行。因此改动只需要将发送添加到内核动作中即可。即下图所示:


后续

上述问题是找到原因,并且已经修复了。这个事情就结束了吗?其实并没有,我们要思考下,线程的问题主要有哪些类型?主线程和内核线程之间可能还存在哪些问题?我们怎么能尽早发现这样的线程问题?

为什么要提出这些问题呢,其实思考这些问题目的是,我们要从“单一”问题解决转变到“一类”的问题解决,这样才能更好的预防类似问题重复出现。








搜狗测试微信号:Qa_xiaoming

搜狗测试QQ粉丝群:459645679










本文分享自微信公众号 - 搜狗测试(SogouQA)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部