作者:安晴
背景
在过去的财年中,支付宝客户端高可用团队持续保障着支付宝客户端线上的高可用稳定性,但只有线上的应急快反能力是不够的,还需要线下提前发现客户端的稳定性风险建设风险挖掘能力,完善整体的客户端高可用保障体系。通过总结过去1-2年的线上闪退问题可以发现其中NPE问题,RPC数据类型不匹配和config变更导致的闪退问题占比较大,完全可以在线下通过一定机制提前发现。
基于此我们对影响稳定性的因素进行分类,按照优先级构建了客户端的稳定性“扫雷”体系,主要包括函数接口扫雷,rpc&config&jsapi扫雷,scheme&广播&通知扫雷,lottie&antmation&鸟巢模板变更扫雷等,通过这套扫雷能力建设我们希望可以完全避免线上出现以上稳定性故障,同时以issue的形式推动研发优化代码,不断提高客户端稳定性,从事前的角度去完善客户端高可用保障体系。
技术方案
根据经验分析在客户端的函数调用中由于对函数参数检查不够导致的各类闪退问题占比在20%左右。现阶段方案Android端针对public和private的static静态接口,iOS端针对所有public接口进行Fuzz测试,通过对安装包扫描获取到全量的接口函数信息,然后对函数入参Fuzz制造各类异常场景,测试客户端的稳定性。
与传统的代码静态扫描相比,本方案在真实客户端上执行,贴近真实场景可制造真实的异常数据。整个技术实现方案包括以下几点:
- 代码扫