教你怎样快速定位bug
作者:网络转载 发布时间:[ 2013/1/9 10:42:31 ] 推荐标签:
对于一个测试人员来说,发现bug不是难的,定位bug的 root cause 却是比较困难的,特别是哪些隐藏在代码中比较深的bug,以下是我的一些快速定位bug的心得,希望可以抛砖引玉。
要定位问题,首先要熟悉代码,我觉得熟悉代码的两个有效的方式是:
(1)本地运行
(2)接口测试
(3)Debug代码
拿到被测应用后,第一步是把开发的代码的svn地址拿过来,check out到本地,能在IDE里面run起来,在淘宝有一个比较好的eclipse插件 叫 HSF Jetty插件,可以比较快速的把开发代码跑起来。
插件地址:http://tools.taobao.net/site/store/product_detail.htm?product_id=65
拿到开发代码以后,对代码中的核心接口可以写一些接口测试脚本,写脚本有几个好处,一个是提高测试深度,二是可以持续集成测试,三是可以熟悉代码,了解每个接口的功能和逻辑。
如果你没有时间去写详细的接口测试脚本,那么Debug代码我认为是熟悉代码快,简单的方式之一,另外一种比较简单的方式是走读代码,但是相对来说难度比较大,debug代码是从页面操作为入口,看每一个操作会进入到哪段代码。
在测试执行的时候如果发现了bug,首先去看下相关的代码,逻辑是否正确。
下面说说整个的一个过程:
加入我测试的页面是admin.uz.daily.taobao.net/siteAdmin.htm 这个页面,在淘宝大部分是webx工程,那么对应的类应该SiteAdmin.java
在eclipse 中可以直接通过Crtl + shift + R 快捷键打开资源,找到对应的文件。这里放部分代码:
long loginUserId = super.getUserId();
/*
可以看出这里是处理登录的。如果没有登录跳到登录页面
*/
if (loginUserId <= 0) {
super.goLoginPage(nav);
return;
}
/*
可以看出这里是处理白名单的,如果不在白名单则跳到
*/
boolean isSuperUser = whiteListAuthorityAO.isSuperUser(loginUserId);
if (!isSuperUser) {
super.toError(nav, "对不起,你没有权限");
return;
}
TurbineRunData rundata = TurbineUtil.getTurbineRunData(request);
HttpServletResponse response = rundata.getResponse();
PrintWriter out = null;
try {
out = response.getWriter();
if (uid == null || opt == null) {
out.println("Usage:http://"
+ configInfoManager.getDaogouHost()
+ "/admin/SiteAdmin.do?uid=%userId%&opt=[onLine|offLine]");
return;
}
long userId = Long.parseLong(uid);
TaeSiteDO site = siteManager.getTaeSite(userId);
if (site == null) {
out.println("模板站点不存在,用户ID:" + userId);
return;
}
if (opt.equalsIgnoreCase("offLine"))
site.setStatus(0);
else if (opt.equalsIgnoreCase("onLine"))
site.setStatus(1);
siteService.saveOrUpdateDomain(site);
out.println("模板站点已更新,状态:" + site.getStatus());
String nick = getUserNick(userId);
whiteListAO.remove(nick, super.getUserNick(),
Constants.DG_WHITE_LIST_TEMPLATE_TYPE);
out.println("已从模板站点白名单中删除:"+nick);
} catch (IOException e) {
throw new WebxException(e);
} finally {
if (out != null)
out.close();
}
测试之前可以先看下这段代码,在测试时可以先验证一下未登录,和没有白名单的场景,看看是否到对应的代码上。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11