当前位置: 首页 > 科技观察

模块间链接建立失败的分析及解决方法

时间:2023-03-20 23:55:52 科技观察

很长一段时间,我每天都在地铁上度过一个多小时。没事的时候,我就在手机上下载了多看阅读,买了很多电子书。最近看了《异类》,颇有感触。在书中,作者提出了“一万小时法则”,也就是说,当一个人在一件事情上花费超过一万小时,就会发生质的变化,他会取得比以往任何时候都更好的结果。大多数人都很好。我们熟悉的一些天才,比如盖茨、乔伊等,他们很有天赋,但也很努力,在自己喜欢的事业上花费的时间比常人多得多。换句话说,正是“10,000小时”规则使它们与众不同。量变导致质变的规律同样适用于软件开发领域。本文提到的问题只是一个例子。问题描述经过某项目长期的自动化测试工作,我们建立了如下系统架构:最近在进行自动化测试的过程中,发现测试用例执行总是失败。更具体地说,消息触发脚本无法调用消息发送工具,两者之间无法建立链接。原因分析测试系统建设两年,积累了上千个测试用例。之前没有遇到过消息触发脚本无法调用消息工具这样的问题。那么,究竟是什么原因造成的呢?我们首先查看了自动化测试环境,发现一切正常。之后,我们将自动测试的调用脚本修改为手动触发。也就是说,消息发送工具启动成功后,我们点击消息触发脚本,发现可以正常建立链接,消息正常发送。那么,为什么在自动测试时无法正常建立链接呢?我们回过头来分析一下自动测试的整个过程。启动自动测试后,消息触发脚本和消息发送工具几乎同时开始运行。消息发送工具运行后,首先要读取配置文件中的测试用例,然后绑定IP和端口号,然后Wait和消息触发脚本建立链接。前期测试用例比较少。当消息触发脚本监听与消息工具的链接时,后者已成功读取配置文件并绑定IP和端口号。这样,后续流程就可以正常执行了。但是随着测试用例的积累,当消息触发脚本开始监听与消息工具的链接时,后者还在读取配置文件,并没有绑定IP和端口号。这样消息触发脚本发现链接还不可用,所以执行失败。这就是我们所看到的。手动执行之所以能成功,是因为当我们点击消息触发脚本时,消息发送工具已经完成了读取配置和绑定IP和端口号的操作(手动操作比自动操作慢很多),并且没有配置链也不成功了。问题解决根据以上分析,我们只需要给消息工具足够的时间,让消息触发脚本稍后与消息工具建立链接即可。我们在消息触发脚本中添加了如下语句:ping127.0.0.1-n30消息触发脚本执行了30次ping操作后,消息发送工具已经做好了准备,所以链接建立成功,后续流程顺利执行。总结虽然本文提到的链接建立失败问题的解决方法很简单,但是这个问题提醒我们,当两个模块需要交互时,发送消息的模块必须等到接收消息的模块“就绪””说完,将信息发了过来。换句话说,软件模块的初始化需要时间。在设计软件时,我们必须考虑到每个模块的初始化时间。【本文为专栏作家周兆雄原创文章,作者微信公众号:周氏逻辑(logiczhou)】