您的位置:首页 > 其它

开发人员或测试人员工作没有做完,导致自己必须去现场调试或测试

2011-04-05 09:34 459 查看

1 现象

部署人员:我部署完后,一运行XX模块,总是弹出一堆错误信息。
开发人员:你把该配置的都配置了吗?
部署人员:我都配了呀!
开发人员:奇怪,不可能啊。那你看看系统提示什么?
部署人员:看不懂,我复制下来给你发过来吧。
开发人员:好的。
开发人员收到后错误信息后,从其中并看不到任何错误原因,不知道错误是出自哪个类,更不知道是是出自哪一行代码。无奈之下……
开发人员:哥们,我还是到现场来用源代码跟踪调试一下吧。不过我估计你肯定是什么配置信息没有配置全,要是让我测出来了,你得好好请我一顿!
部署人员:呵呵,我确认我都配置全了。
第二天,开发人员到达现场,用笔记本连上系统,打开源代码工程,加上断点,一句一句跟踪,最后发现在如下方法中:

public Manufactory getFirstManufactory(){
ManufactoryDao dao=new ManufactoryDao();
List<Manufactory> allManufactory=dao.getManufactorysByType(
Manufactory.MANUFACOTRY_TYPE_LIGHT_PLATFORM);
Manufactory manufactory=allManufactory.get(0);
//其他一些代码
//...
return manufactory;
}

allManufactory列表中一个元素也没有。于是……
开发人员:大哥,你骗人,你没有配置厂家信息!走,请我吃饭去!
部署人员:不可能!我打开数据库看看,哦……,的确是没有配置。不好意思……
后来,这样的场景又出现了很多次,团队成员之间的信任几乎没有了。部署人员嫌开发人员做出的程序问题多,而开发人员又嫌部署人员水平差、没记性。

2 谁的责任

2.1开发人员程序没有做完

看一下开发人员写的如下程序:

/**
* 此类演示了一个没有完成程序
* @author qujianfeng
*
*/
public class UndoneExample {
/**
* 获取第一个厂家信息。(该方法仅仅是一个示例,假设有这么一个类似的需求。)
* @return
*/
public Manufactory getFirstManufactory(){
ManufactoryDao dao=new ManufactoryDao();
List<Manufactory> allManufactory=dao.getManufactorysByType(
Manufactory.MANUFACOTRY_TYPE_LIGHT_PLATFORM);
Manufactory manufactory=allManufactory.get(0);
//其他一些代码
//...
return manufactory;
}
}

仔细看这块代码,其实程序根本就没有做完!只考虑到了正常流程。此程序能够正常运行是基于两个假设:
首先,此程序假设allEmployee不为null。当然这个我们可以通过编码标准进行约束:不能返回为null的集合对象,即使元素数为0,也应返回一个集合对象,只是size为0而已。
其次,此程序假设allEmployee的size>0。当忘记配置或者配置被从数据库中误删时,此程序将在“Manufactory manufactory=allManufactory.get(0)”这句代码处会抛出如下异常:
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
这样的异常信息即时在界面中显示出来,也没有任何帮助,应该给出更明确的提示信息。
有同志会这样修改如上程序:

public Manufactory getFirstManufactory(){
ManufactoryDao dao=new ManufactoryDao();
List<Manufactory> allManufactory=dao.getManufactorysByType(
Manufactory.MANUFACOTRY_TYPE_LIGHT_PLATFORM);
Manufactory manufactory=null;
if(allManufactory.size()>0){
manufactory=allManufactory.get(0);
}
//其他一些代码...
return manufactory;
}

当allEmployee的size为0时,若是没有在调用此方法的程序中做个判断进行提示。此程序的结果是:没有配置信息时,程序在运行时既没有正常运行,也没有报错。反正就是没有反应!这样,部署人员更无法知道原因!

既然此处的需求就是必须有光平台厂家的配置信息,那就在没有时直接给出一个明确的提示:

public Manufactory getFirstEmployee(){
ManufactoryDao dao=new ManufactoryDao();
List<Manufactory> allManufactory=dao.getManufactorysByType(
Manufactory.MANUFACOTRY_TYPE_LIGHT_PLATFORM);
if(allManufactory.size()==0){
throw new RuntimeException("没有配置光平台厂家信息!");
}

Manufactory manufactory=allManufactory.get(0);
//其他一些代码
//...
return manufactory;
}

现在,当忘记配置光平台厂家时,就可以给出一个明确的提示了,部署人员一看就知道问题出在哪了。部署人员再不会叫开发人员去现场调查了,整个世界清静了。

这个当信息没有配置对时提示不明确的问题,不应该等到现场才发现,应该在测试阶段就测出来。测试人员肯定只测了正常流程,没有试着把厂家信息删掉后再测试一次,看系统有何反应,是否有容易理解、明确的提示信息。
Ø 尽量在部署前测试到位
开发人员发生上面那样的遗漏是有可能的,测试人员应该考虑到这种问题发生的可能性。测试人员的测试用例,应该全面,应把测试用例的全面性作为考核内容。另外,项目经理应该对测试用例进行检查,测试人员在认为自己工作完成后,然后在项目经理确认其测试用例及其测试结果都达到要求后,测试工作才算完成。
Ø 一旦发现问题,应及时完善程序,补上易于理解的提示信息
开发人员尽可能地不遗漏,测试人员尽可能地测出遗漏,但实际上不可能做到百分之百不遗漏。但是,如果在部署过程中或用户使用过程中,软件出现了错误,经过一番周折,发现程序对于错误并没有给出一个明确的提示,而是抛出了一段英文提示。此时,就应该尽快补上易于理解的提示信息,以免下次再被同样的问题困扰。测试人员有责任检查此工作是否完成,并在测试用例中补上遗漏的用例。

2.2 测试人员测试没有做完
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐