xhpscdx 2020-05-31
定位bug,通常流程是:
最后定位bug是后台数据问题:出现这种问题的根本原因是因为测试同学做的是“黑盒测试”,我们拿过来重现的步骤也是“黑盒验证”,这种测试方式不解决,上面那种尴尬的问题永远会存在。
怎么解决“黑盒测试”、“黑盒验证”问题呢?答案是:开放日志。
如果我们把app的数据流都展示在开发同学面前(至少把http请求数据流和基本日志输出开放),这样无论是测试同学还我们自己就能更容易的定位很大一部分bug的问题所在。
怎么“开放”这些日志?通过react-native-debug-tool 库,只需要几行代码就能实现一个开发调试工具,通过它,我们可以把我们想要“开放”的日志都以UI的形式随时随地展示出来。下面我们看看这个开发调试工具库能做什么:
先来看几张效果图:
可以看出普通日志,Http请求,webView的加载等都有详细的记录,因为数据一目了然,就不容易出现因为数据问题给app的bug的情况了,那我们集成这个开发工具会不会很复杂呢?
import RootSibling from ‘react-native-root-siblings‘; DebugManager.showFloat(RootSibling)
fetch(url, params).then((response) => { DebugManager.appendHttpLogs({url, ...params}, response) })
<WebView source={{uri: url}} onNavigationStateChange={params => { DebugManagerDebugManager.appendWebViewLogs(params.url); }} />
static log(...args) { DebugManager.appendLogs(args.join(‘‘)) }
就这样通过以上6步就能实现上面效果图中的所有功能了,是不是很简单,几分钟的时间就能搞定。以后,无论是测试同学还是开发人员都可以通过查看日志更方便的定位问题的bug在哪儿。
当然,前面有提到app的连接服务器环境切换的问题,这个实际上还得依赖于app的Http请求封装的实现,当前调试工具只提供一个服务器环境展示与选择功能,如图所示:
实现代码:
DebugManager.initDeviceInfo(DeviceInfo) .initServerUrlMap(serverUrlMap, RNStorage.baseUrl, (baseUrl) => { XHttpConfig().initBaseUrl(baseUrl); // 重置Http请求baseUrl 根据实际情况调用 RNStorage.baseUrl = baseUrl; setTimeout(() => Alert.alert(‘环境切换‘, ‘服务器环境已经切换至‘ + baseUrl), 1000) });
注:当前设备信息的显示依赖于 ‘react-native-device-info‘ 库
需在调用页面引入依赖:import DeviceInfo from ‘react-native-device-info‘;
并把DeviceInfo传入到DebugManager的初始化参数中。
至此调试开发工具的所有功能就完全实现了,详细用例大家可以运行 示例 程序,一切就明了,欢迎朋友们 Star!
另外我还有一个开源项目,通过它可以极大的提高RN项目开发速度,大家有兴趣可以了解下:
如果有任何疑问,欢迎扫码加入RN技术QQ交流群