现象
这几天,测试发现牛图条码扫描仪读数据存在有时读不全的问题,分析了很久,都没有找到原因。因为是偶发,还不好模拟,测试人员反馈读二维条码不容易出现但是读一维条码容易出现,于是采用一维条码模拟很快就模拟出来了。
原因
write->read(ack两个字节)->read(条码流)
第一个read传入的长度本来应该是2,结果传入了10,导致read(条码流)的时候总是少了前面8个字节。
刚开始还总是怀疑是超时时间设置不正确导致的。可是不管怎么换超时时间参数,结果都一样。
后面想怎么就老是少了前面8个字符呢?总是少前面的,并且总是8个。于是,就想是不是前面多读了,果然看了前面传入的read长度是10,正好比期望传入的2多了8个字节。此时,直觉告诉我可能就是这里出了问题。
总结
1、要深入了解出现问题的场景、条件等,便于问题模拟。问题能模拟出来,就等于问题解决了一半。
2、要深入研究现象的规律,并大胆猜想。这个问题就是因为我发现了总是少前面8字节的规律。于是才有了大胆的猜测:“是不是前面有指令多读了8个字节”。