手Q、微信等聊天软件,都会实现自己的一套协议用来发送消息,而这个协议一般都是私有协议,不会公开相应的技术细节,所以一般在没有官方支持的情况下,很难做出一套私有协议的模拟发送工具。
新的项目使用了哈雷协议作为接入层,也是一个私有协议。新项目因为项目的特点,需要对后台服务进行监控,技术上来说,必须模拟哈雷接入层的私有协议,然后才能进行相应的监控。与其他私有协议一样,哈雷协议的模拟难度是很大的,这时候该怎么做呢?
哈雷协议介绍
“哈雷深入移动互联网网络应用场景,向移动应用提供完善的最优网络接入托管、 实时消息推送、通用资源下载、App 增量自更新等服务。”
“哈雷 SDK 的网络接入服务主要针对业务前后端频繁、少量的数据收发场景,业务后台 支持HTTP(S)服务、TAF 服务或者支持 jce 格式调用的后台服务。”
哈雷协议主要是面向移动互联网的,官方只提供了Android以及iOS的SDK。App可以通过集成对应的SDK,完成对哈雷协议的使用。
传统的方案
传统的方案在PC上模拟请求,然后校验相应的返回结果。
适用范围:
1、对于公开协议一般比较方便,例如http、smtp等,有各种各样的模拟工具以及开源类库都可以用。
2、对于私有协议一般很困难,除非官方提供支持,否则很难做出PC上的模拟工具。例如我们的哈雷协议,只提供了Android以及iOS的SDK。
优点:
1、PC监控稳定性好;
2、PC性能强大,执行效率高;
3、PC监控扩展性好。
缺点:
1、无论是私有协议还是公有协议都会有一定的开发量;
2、和APP运行时的环境始终有些差异,不能完全代表真实环境;
3、PC上模拟代码以及参数和开发的项目代码以及参数相互隔离,不能及时同步。
思考新的方案
新项目的后台接口监控使用传统的PC上的监控的方案存在两大回避不了的问题:
首先是是开发量的问题:重新做一套PC上的哈雷模拟工具,开发量巨大,开发也不愿意承担这个任务。
第二个是后续维护的问题:后台功能的更改以及协议的升级,对应的PC上的模拟工具都需要再做调整。
所以要不断地思考,尝试寻找新的方案,自己给自己来了一次头脑风暴 。
1、为什么要做后台接口监控?
后台接口监控是针对后台接口做的测试,周期性触发,可以准实时地保证后台接口的功能正常性。服务出现问题后能够在10分钟内发现对应的问题。
2、后台接口监控为什么不能用移动端的UI界面自动化测试来代替?
客户端的UI自动化测试耗时较长,稳定性较差,同时覆盖范围有限,不能满足后台接口可用性的准实时测试。
3、移动端只能做UI自动化测试吗?
移动终端(包括Android和iOS)性能越来越强,扩展性也越来越强,可以说PC能做到的事,理论上在移动终端上都能做到 。
4、后台接口监控不涉及到UI界面测试,只涉及到网络请求测试,移动端就不能做相应的测试吗?
思前想后,确实找不到说不的理由。做一个不用关注界面,只在后台发网络请求的App就可以了 。
5、在移动端做后台接口监控开发量大吗?
哈雷本身就提供了对应的SDK,不用重新开发。而且开发一般采用了MVP架构,既然不要界面,只需要把开发的Model数据层和Presenter层源代码Copy过来就可以直接用了。
6、在移动端做后台接口监控,结果怎么看呢,总不能拿着手机看吧?
目前手机和PC传递数据的方法很多,而且很成熟,可以将移动端的测试结果传送到PC上或者其他平台上查看。
7、在移动设备上运行后台接口监控的定期任务,设备稳定性如何呢?
这个只能说还没人这样做过,不是很清楚。理论上问题不大,即使物理设备有问题,也可以尝试用虚拟机代替。
8、在移动端做后台接口监控发现问题容易定位吗?
这个理论上比PC模拟端更好定位,因为主要代码都是Copy开发同学的,出了问题,那真的是项目代码出的问题。
9、在移动端做后台接口监控,后续功能升级维护麻烦吗?
因为是Copy的开发的代码,功能升级后,再Copy一遍开发的代码就OK了。理论上难度很小。
经过脑暴后,做一个移动端的APP来实现后台接口监控有很多的挑战,但也存在很多优势,可以试着搞一下。