对于热爱测试的工程师来讲,这个过程是充满乐趣的,但是要有严密的逻辑思维能力和对被测试系统运行机制的深刻理解。找到原因后,你可能会得出这样的结论:开发为什么会犯如此低级的错误;开发对协议的理解有误;开发对此类数据的处理有问题等等。然后你可以跟开发说,你哪里的代码处理这个数据有问题、你哪里哪里理解错误,虚荣心会得到小小的满足。
大家有没有感觉到,在定位复杂问题时,日志系统里缺少的总是关键信息,而有的信息总是不太重要的, 软件可维护性任重道远。
另外,有些公司的crash问题是不用复现的呦,信息已经足够了。 你的公司能做到吗?
此类问题即使有日志信息,因为大容量、高并发,再加上异步处理打乱了原有的惯性逻辑思维,是很难用通用的方法定位出来的。
比如系统记录明确指针异常的问题,也有堆栈的信息,并且知道哪个指针为空,但是不知道如何导致的,经排查初始化完全没有问题。这种情况下就不能简单的通过返回NULL来解决,这样有可能用户得到的数据就是空的,虽然概率很低,但是会影响用户的体验。 特别是在初创公司,在激烈的市场竞争中,差的用户体验,无异于自掘坟墓。
姿势:此类问题测试同事是不太可能单独搞定的,一定要伙同资深开发同事一起分析(一般你不叫他他也会过来,这类问题是很有吸引力的)。主体思想是先提高复现概率、一步步缩小问题范围,最终定位出问题。具体思路怎么变态怎么来,客户端加大访问量、服务端减少资源、怀疑是网络的问题可以使用traffic control模拟报文错误或异常。说随如此说,碰到具体问题还是要具体分析,根据问题现象,进行有针对性的验证。
为了避免碰到此类问题你可以多拜拜观音菩萨, 如果真碰到了就去买彩票
测试人要有正确的价值观引导,做事严谨,并且要有一定的技术实力做支撑。
原文转自:http://www.jianshu.com/p/380e347f301a