前端测试 QA 怎样测试客户端空指针导致的奔溃问题

楠瓜_Celine · 2019年04月08日 · 最后由 小白 回复于 2019年04月11日 · 2118 次阅读

问题描述:
最近发布的新版本,线上搜集到的奔溃比较高,开发同事查到原因是空指针导致的;
猜测的场景:
重未下载过应用的新用户首次启动 APP 闪退,实际的测试包不能复现,可能是安装过 APP 的原因;
思考:
要复现或者回归此问题,都要未下载过 APP 的手机,可是测试机都安装过,只能开发那边把空指针的问题解决,不好回归;
疑问:
类似的空指针的闪退情况,QA 在日常的测试中要怎样覆盖呢?

共收到 12 条回复 时间 点赞
楠瓜_Celine 回复

哈哈哈,开玩笑的,这种还是得进行 code reveiw

匿名 #2 · 2019年04月10日

手机恢复出厂设置 or 开发定位 debug

方法一,空值针和野指针 在编译时的可以通过静态扫描。(作用不大)
方法二,运行时或者程序执行过程中比如修改或者解引用了,部分语言编译时和运行时的内存是否可变性质都不一样(所以第一种也没用),类似这种非编译时的用日志打印本地吧 出现一类问题的地方,统一批量修改一个地方。
编程习惯导致的 bug。

好哒~我去学习下~

Fish 回复

是的,开发同学定位到问题修改完成后产品这边觉得测试应该还要回归一下这个 bug~~~😉

活用白盒扫描工具,现在的白盒工具一般可以帮你扫描到空指针问题。比如 sonar

作为一个已转开发的测试,觉得这个问题如果一定要测试来重现,成本过高,建议让开发同学自己分析 crash log,或者针对对应模块做 code review,一般都能找到问题。

根据应用特性来吧。
1.如果应用涉及设备号绑定相关,那要新设备,或者改设备号(接口参数)。
2.如果只是应用本地缓存的问题,卸载测试应用即可,有些会建存储文件夹的,要手动删。
3.更多这类问题都是不同厂商的系统 api 支持程度不同,上线前需要针对这类厂商做兼容测试,特别是涉及系统层调用功能(如:相机、电话)。

charles 修改响应结果,设置响应结果中想测试的字段设置为 null 即可;一般而言,客户端这边不会对所有用到的字段做判空处理,所以一旦为空出现 crash 的情况比较大,最好还是要规范服务端童鞋的编码规范,返回为空的时候返回默认值例如

List<String> stringList = null;
stringList = (CollectionUtils.isEmpty(stringList))? Lists.newArrayList():stringList;
小白 回复

哈哈哈哈~~~不能每次发包都买个新手机呀😂

买新手机,哈哈哈 反正要兼容,现在新机更新那么快,整一个

卸载重装? 清除应用缓存数据? 云测平台?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册