Android测试--记录一个简单问题的定位与跟踪

一、问题

在某种已知的特殊情况A下,资料页头像展示了小图,而实际上应该展示大图

Android测试--记录一个简单问题的定位与跟踪_第1张图片

二、定位过程

1、头像数据从服务端取回,连charles抓包查看请求

只看关键的头像相关的几个字段

Android测试--记录一个简单问题的定位与跟踪_第2张图片

抓取后发现头像数据是按照协议规定反回了不同大小的地址,检查img url也是正确的。那么就可以确定客户端做了一些处理,没有使用origin格式的图片。

2、定位代码

由于不知道具体的类,用个小技巧:通过Layout_Inspector查看布局,从而快速定位代码

Android测试--记录一个简单问题的定位与跟踪_第3张图片

然后在左侧的tree_view中,找到头像布局的地方,也就知道在哪个类里控制了。

Android测试--记录一个简单问题的定位与跟踪_第4张图片

跟进xxx类,找到关键方法。可以看到这里额外的判断了一下是否是Thumb,如果是的话就用avatar120尺寸的图片;如果不是,则用originAvatar大小的图片。

            if (user.isThumb()) {
                img.setVisibility(View.GONE);
                smallL.setVisibility(View.VISIBLE);
                smalImg.setUri(Uri.parse(user.avatar120));
            } else {
                img.setVisibility(View.VISIBLE);
                smallL.setVisibility(View.GONE);
                img.setUri(Uri.parse(user.originAvatar));
            }

然后跟进boolean isThumb()方法,查看得知,isThumb是从服务端中返回的字段。

3、快速验证

还是charles抓包查看is_thumb字段:

Android测试--记录一个简单问题的定位与跟踪_第5张图片

果然,服务端返回了yes。为了快速验证这点,用charles的Map local,把is_thumb改为no。回到客户端,刷新,然后就顺利展示了大图。

回归需求,产品本身是支持小头像的,那么最终就可以确定问题了:
在特殊情况A下,服务端返回了错误的参数,导致客户端展示异常。

三、跟进修复

找到相关RD,描述清问题现象及出现条件,指出哪个字段在什么情况下应该返回什么值。然后就坐在边上,连他本机的环境,随手改完就随手验证。因为问题定位的足够细,三两下就修复了该问题。最终代码上线后再次验证一下就ok了。

四、总结

收集问题 -> 分析问题 -> 定位问题 -> 跟进解决问题。

1、收集问题

问题的现象、截图等等有用的关键信息

2、分析问题

从问题本身,找到问题出现的场景及路径

3、定位问题

|-- 粗粒度
清晰的描述问题发生的场景及复现步骤,让别人能明白你描述的问题。然后交由客户端RD进行排查。
|--细粒度
清晰的描述问题发生的场景及复现步骤,并且能够准备的定位到问题的关键代码,判断是客户端问题或者是服务端问题。

3、跟进解决问题

沟通中描述清问题,协助验证上线。

虽然问题简单,但仍应该总结一下,毕竟总结也是测试人员的核心能力之一。

Android测试--记录一个简单问题的定位与跟踪_第6张图片
关注获取更多

你可能感兴趣的:(Android测试--记录一个简单问题的定位与跟踪)