概述
我曾经在优秀互联网高级测试工程师应该具备的能力一文中提过:
测试人员能发现问题,还能定位问题,而且能给研发解释得清楚
定位问题并不是那么简单,尤其是在没有日志和异常的信息的情况下。对于不具备开发能力的部分测试人员来说,就更加难。这个时候,我们可以借助一些小技巧,来帮忙查找问题的原因。一种是远程debug,另外一种是异常断点。
远程debug
远程debug提供这样一种能力:
可以让我们在本地了解远程服务器的代码执行情况。
如果你是使用Intellij IDEA的话,进行远程debug是非常简单的,只需要做几步操作即可。
设置debug端口
可以在JAVA进程启动的脚步中,追加如下配置:
-agentlib:jdwp=transport=dt_socket,server=y,address=9798,suspend=n
address是debug端口。完整命令如下:
nohup java -agentlib:jdwp=transport=dt_socket,server=y,address=9798,suspend=n -jar xxxxxxx.jar
在IDEA中配置Remote
具体如下:
1、

2、选中Application,然后选中+号

3、点击+号后,选中Remote

4、填写远程host和port

名字可以自己根据实际情况填写,比如叫【测试环境购物车】。点解ok按钮。如果操作成功,会在IDEA的主界面上出现如下的菜单。

这个时候,如果远程的服务器进程是启动的,我们只需要点击如下的小虫按钮即可启动远程debug了。

正常情况下,点击后IDEA的控制台会输出如下信息:
Connected to the target VM, address: '10.10.10.5:9798', transport: 'socket'
如果是应用是基于http的,那么直接使用postman发送一个http请求,我们就可以在本地的IDEA里debug远程代码了。
设置异常断点
程序的bug都是特定的业务数据触发的,如果测试人员想更加快速的知道,为啥这份数据会导致bug,那么除了结合上面提到的远程debug之外,还需要借助异常断点。
举个例子,在电商中的结算页面或者购物车页面中,都会针对用户购买的商品,提供一份优惠券列表,列出哪些优惠券可用,哪些优惠券不可用。这个时候,测试人员认为某张优惠券应该是可用的,但是界面上却显示不可用,为了快速的知道为啥这张优惠券不可用,就需要异常断点的帮忙了。
在IDEA里设置异常断点非常简单。

像上面的第25行,如果你只是想当优惠券的id是2的时候,才打印信息的话,可以直接用鼠标在行号的右边点击一下。

就会出现一个断点了。然后鼠标移动到断点上面,用鼠标右键点击一下,就会弹出如下界面:

然后再Condition那里加上
coupon.getCouponId().equals(2)
的条件即可。运行代码,你会发现,当优惠券id的值为2的时候,断点才会起作用,才会打印信息出来。
本文介绍如何通过远程Debug和异常断点技术,解决测试过程中遇到的问题,特别是在缺乏日志和异常信息的情况下,帮助测试人员快速定位问题原因。
1万+





