TBLEG
扫描微信账号

扫一扫微信二维码

【研发经验谈】模块间建链失败问题的分析及解决

2020-05-14 信息
区块链白皮书代写

很长时间以来,我每天花在地铁上时间都在一个小时以上。闲来无事,我就在手机上下载了多看阅读,并且购买了很多电子书。最近,我阅读了《异类》,颇有感触。作者在书中提出了一个“一万小时”定律,也就是说,当一个人花在某件事情上时间超过一万个小时之后,就会发生质改变,就会做到比绝大多数人好。我们耳熟能详一些天才,像盖茨、乔伊等等,虽然天赋很高,但自身也很勤奋,花了比常人多得多时间在自己所喜欢事业上。也就说是,是“一万小时”定律让他们与众不同。

量变引起质变规律也适用于软件开发领域,本文中提到问题,即是一例。

问题描述 在某项目进行了长期自动测试工作之后,我们组建了如下系统架构: 最近,在进行自动测试过程中,我们发现测试用例执行总是失败。更具体地说,就是消息触发脚本无法调用发消息工具,两者之间无法建链。

原因分析 本测试系统已搭建了长达两年,已经累积了上千个测试用例。之前从未遇到过此类消息触发脚本无法调用发消息工具问题。那么,究竟是什么原因引起呢?

我们首先检查了自动测试环境,发现一切正常。之后,我们修改了自动测试调用脚本,变成了手动触发。也就是说,当发消息工具成功启动之后,我们再点击消息触发脚本,发现链路能够正常建立,且消息发送正常。那么,为什么自动测试时候就不能正常建链呢?

我们再回过头来分析了一下自动测试整个流程。当自动测试启动之后,消息触发脚本和发消息工具几乎是同时开始运行,而发消息工具运行起来之后,要先读取配置文件中测试用例,然后绑定IP和端口号,完成之后再等待和消息触发脚本建链。前期测试用例比较少,所有当消息触发脚本监测与发消息工具链路时候,后者已经成功读取了配置文件,并绑定了IP和端口号。这样,后续流程就能够正常执行。

但是,随着测试用例累积,当消息触发脚本开始监测与发消息工具链路时候,后者还在读取配置文件,并未绑定IP和端口号。这样,消息触发脚本发现链路还不具备,因此执行就失败了。这也就是我们看到现象。之所以手动能够执行成功,是因为我们点击消息触发脚本时候,发消息工具早就完成了读配置和绑定IP与端口号操作(手动操作要比自动操作慢很多),就不存在建链不成功问题了。

问题解决 根据以上分析,我们只需要给发消息工具足够时间,让消息触发脚本晚点与发消息工具建链就可以了。

我们在消息触发脚本中添加了如下语句:

ping 127.0.0.1 -n 30

当消息触发脚本执行了30次ping操作之后,发消息工具早就做好了准备工作,于是建链成功,后续流程顺利执行。

总结 本文中提到建链失败问题解决办法虽然简单,但该问题却提醒了我们,在两个模块需要进行消息交互时候,发送消息模块一定要等到接收消息模块“准备好”之后,再发送消息过去。也就说是,软件模块初始化需要时间,在设计软件时候,我们一定要将各个模块初始化时间考虑进去。

全文阅读
文章关键词
配置
测试
模块
脚本
扫描关注微信账号

试试长按二维码加关注