才出道时,可能发现缺陷就很不错了。但作为一个有追求,有理想的测试人,更应该去定位问题,从而让开发人员更快的修复问题,从而形成高效,团结的项目团队。
在定位问题时,也有一些方法,往往是否能利用好这些方法也是衡量一个测试人员水平的方面之一。我相信很少有人会告诉你这些方法,绝大部分人都是在工作实践中慢慢总结出来。
单个元素排除法 当一个问题可能包含有很多元素导致,这时我们要做的是每次去排除一个元素(如做处理跳过该元素),然后看是否问题仍然存在。最后确定问题具体由哪一个元素导致。
寻找规律 有些问题是存在一定的规律的。比如当输入中包含一个特定的字符,而这个字符由于有特别的用处,导致了错误的产生。又如,输入的数字为约束的临界值,因为程序处理不当导致了错误的产生。
逐步缩小范围 当发现一个缺陷时,可能由很多模块决定,模块中又包含多个节点。这个时候就需要我们层层缩小范围,定位出具体的问题点。如笔者原来发现某功能出现一个性能问题,该功能由多个模块组成。首先我们需要根据单个元素排除法,定位到具体哪个功能模块出了性能问题。在功能模块里面,又存在多个节点,同样通过上面的方法去找出出问题的节点。最后确定出具体一个原子线程处理不当导致。
以点测面 一个问题的发现,往往在其它类似的功能处理上也会出现同样得问题。比如一个编程人员因为对列表没有做内容折行处理,那么往往在其它列表中也存在同样的问题。这种问题,在我的测试生涯中见到太多,所以发现一个bug,往往会引出大量类似的bug。
大胆假设求证 有些问题是完全没有规律可寻,也很难定位。此时就需要我们根据积累的知识进行大胆的假设,然后去验证,最后定位出问题。比如曾经发现一个文件数据库,字符串写入到数据文件完整,但每次读出来就会出现中间部分数据的丢失。这时我们先后推测了编码问题,中文乱码问题,特殊字符处理问题,字段容量问题,并逐一求证,最后发现为字段多用了几个字节来处理数据。如果读取赋予的变量长度不够,就会导致字符的丢失。
当然,定位问题的方法不仅仅局限于上面几个。但我希望这几个方法能给你一些启示和帮助,并最终总结出更多的方法分享给大家。