现在的新零售包含了许多的硬件,并且线下环境将会因为各种硬件性能的不够成熟完善,再加上时好时坏的网络情况,都给线下带来了很多的不确定性与困难性,这也就给调试带来了不小的麻烦。
比如一张拍照后经过后端各种处理的图片,本来应该展示的时候却没有展示,这时候就需要前端工程师来排查问题,毕竟显示层的所有问题都是属于前端的问题。
如果你运气好或者线下经验比较多的话,你就会发现大多数图片相关的问题都是偶现,不是必现,有可能你重新来一次,问题就已经不会复现了,只不过说不定什么时候这个bug又会心情不好地出来,怎么解决呢?后面再说。
既然出了问题当然就需要解决问题,我们就需要对这台设备进行调试。
对这台设备进行调试前,我们首先需要做一些准备工作:
- 你的电脑先要链接内网,然后起本地服务。
- 你要调试的设备也要有内网环境,同时设备里已经安装了一个测试包。
将你电脑的环境代理到调试设备上,花瓶可以,或者其他代理工具都可以,然后就可以在调试设备中访问你的本地项目页面了。
还有一些基本知识你也需要知道:比如你要知道mtop接口VConsole是抓取不到的,需要做降级处理;
https的数据在花瓶中抓到的也是乱码,你要先安装ssl证书;
还有一些特殊的接口,比如hybrid接口,除了将其console/alert输出来看,基本没有其他办法,并且打印出来看完了过后你还要记得clear,否则如果不小心带了一个alert上线,你就要哭死了(这个问题建议用一个全局的方法统一处理,或是在build的时候引入一些去debugger的插件);
前端能检查到的接口种类是有限的,客户端直接对后端发起的请求前端是获取不到的;
一些静态资源的加载详细信息,前端都是拿不到的(除了图片加载的onerror和onload)。
都当前端完成了准备工作,经过了长时间检查后,如果还没找到问题,就要客户端/后端来检查了,毕竟不是每个接口都是前端能拿到的,比如客户端的网络请求,前端就拿不到,需要客户端同学代或后端看一下请求日志,这就更加麻烦了。
以上的流程都是标准状态,如果你有持之以恒的信心完成了,那也是调试效率低下的表现,但是很多时候,我们零售终端的开发都是需要去线下场地的,也就是说我们不一定是在公司,毕竟电脑想变成内网环境,阿里郎可以很轻松解决,但是其他设备想连内网,就麻烦多了;同时根据我做线下的一点小小的经验,上线后的问题,80%主要是硬件和网络所引起的加载失败或者效果卡顿,点击偏移等等。
首先说下网络,想了解网络情况,唯一的解决方法就是拿到当时请求和加载资源的详细信息,这就说明你必须有一个对项目内的所有请求和资源加载的监控,并且为了能够做到实时调试,所以就必须有一个地方能够实时查看这些数据。
零售终端日志列表
先来说如何获取这些数据。
在业务层面来说,前端和客户端可以对自己所用到的接口等都做统计,尤其是接口响应时间和资源加载时间,这样我们才能知道某时某刻的具体网络情况是怎样的,业务层面搜集了数据然后集中上报到某个服务器(设备数量很多时,数据量可能会很大,要注意),但是这就有个问题,那么多接口,如果都在业务层面来做,工作量将会很大,并且对其他业务的接入的门槛也将会提高,所以这个就不能放在业务层面来做,这就需要放在零售终端底层统一做掉,客户端底层是可以对这个app内的所有请求/加载进行监控的,所以上面提到的各种接口,http/https、mtop、hybrid、静态资源加载,都可以获取到详细信息,包括但不仅限于入参、出参、起止时间等等,所以其他零售终端的业务也就统一静默接入了这个功能,他们唯一要做的就是打开这个监控数据的开关,真正做到了零成本,这是第一个好处;第二个好处就是客户端的本地存储功能,现在线下网络环境不好,所以我们一边在优化网络加载的情况下,另一边也是在不断降低网络波动对业务的影响,比如POS机,这是线下最重要的一个设备,直接涉及到钱的,不能因为网络差就让顾客买单失败或者产生其他错误,还有就是试妆镜子,也不能因为网络差就让顾客不能正常试妆,在零售终端这边现在都做到了不管网络怎么变化,这些功能都将可以正常使用,然后缓存在客户端本地,等网络变正常了,将会把一些订单信息或者试妆信息统一传输给服务器。
云端真机调试
所以现在我们已经获取到了这些数据,后面就是展示出来,展示的地方刚好有现成的,就展示在零售终端平台中,后面的话,如果再遇到一些线下设备的异常情况,我们就可以直接在某个地方去实时查询异常时候的各种信息数据,而不是自己艰难的起服务来调试。
到这里,这算是解决一个调试的大问题了,后面呢?线下零售终端设备有的特别庞大且笨重,有时候你要调试的时候,你手边却没有这些设备,这就很麻烦了,不像手机那么容易得到,所以此时就想到了云端真机调试,现在这种云端真机调试有许多,比如UC的IRMA,淘宝的磨刀石,这里就不再缀诉了,目前天猫魔镜已经接入了磨刀石,每当有什么地方需要修改后,我本地改完了就可以通过磨刀石在云端真机调试,并且可以去终端管理平台上查看具体调试信息。
总结
和之前的调试方法相比,不管你想调试哪一台设备都可以设备的距离,并且让你可以实时查看任一台你想要查看的的接口和资源信息,这样就形成了从个人电脑到调试的设备再到设备日志的一个闭环,真正做到让你的线下设备调试效率大幅度上升。