在我们日常的测试活动中,单纯的功能界面测试(黑盒测试)发现的缺陷质量不高,即使发现了,也很少能从根本上去定位,这样的bug提交上去,给我们的研发同事修复带来了困难,同时也不利于提高我们自身的能力。
这里我介绍一下个人的经验:
1、按照需求说明或原型编写用例,然后严格执行,这个方法最常见。(往往也最容易被忽视,切记一定要全面覆盖测试!)
2、在发现问题后,不要立刻就想着提交bug,应该做下记录,然后自己尝试着去分析这个问题产生的原因,比如抓一下包,看一下源代码,有些问题测试人员是可以自己定位的,只要自己确认了,提交上去的bug质量会更高。比如,执行搜索的时候,输入某个字段值,没有搜出来,查看代码后,发现sql语句并未执行,这时,我们再提交bug,描述中可以具体到哪个页面文件,哪段源代码,研发同事定位也方便,同事也对我们的技术能力认识上也有改变。
3、如果测试环境带有控制平台,比如tomcat,jboss等等,那么我们测试的时候,不仅仅需要关注前台的页面表现,还要看监控平台上的信息日志。有些系统对错误页面做了处理,我们在发现这类问题的时候,顶多将处理过的错误页面写到bug中,根本的原因可能无法得知,其实我们可以利用控制平台获取真正的错误原因,写到bug中。
4、结合数据库进行测试。一般流程性的测试,最重要的就是数据在数据库中的状态变化。比如移动的项目,很多是异步的,光从页面是看不到效果的,所以我们可以结合数据库进行测试,弄清楚数据在数据库中的流转流程,这样才能发现更深层的bug,当然需要我们掌握数据库的使用,尤为重要的是sql语句。举个例子,进行添加操作的时候,添加完成后没有反应,可能有两种情况,一是添加根本未成功,二是添加成功了没回显出来,那么我们可以通过sql查一下添加的数据,如果数据库中有了,就说明回显出了问题,如果没有,就说明insert 出了问题。
5、可以查看系统的日志检查测试过程中的问题。一切异常都需要关注,牢记操作步骤,在重现中找出引发问题的关键因素,然后记录到bug中去。
6、基于经验和业务知识积累下的探索性测试,通过不断发散思维,进行联想,可能就会找出更深层次的重要问题。如线上环境前端偶尔出现显示错误,根据经验,更大可能出现在后台数据处理上面,经过反复对界面测试确认前端逻辑正确,此时采用虚拟IP技术在线上进行高并发模拟,并让运维人员协助抓取日志,最后定位到是集群服务中某一数据源同步出了问题,这样再提交bug上去,bug技术含量大增。