关闭

今天发现了我写的一个bug

发表于:2015-10-14 10:56

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小林觉    来源:51Testing软件测试网采编

private void getFiles(String path, List<File> list) {
File dir = new File(path);
if (dir.isFile()) {
list.add(dir);
} else {// is folder
File[] fileArr = dir.listFiles();
for (File file : fileArr) {
getFiles(file.getAbsolutePath(), list);
}
}
}
  对,上面的这段代码就是我写出来的bug。先说下该段代码的用意:传过来一个文件/目录路径,遍历下面的所有文件。
  这段代码暴露出来的问题是,假如用户输入的是 ~@#/a/a8888% 这样的参数,此时,代码会执行到else里面,结果就报了空指针异常。
  这里面就是犯了过分相信用户输入的错误,也属于程序的健壮性中的一种。
  问题的部分先不多说了。由此,我却联想到了另外一个问题,到底该在何处去验证我们的输入。
  看示例:
  private void function(){
  String para = getPara();
  fun1(para);
  fun2(para);
  fun3(para);
  ……
  }
  像上面的这个示例一样,如果我们在每个方法里面都去验证数据的合法性,总觉得有些啰嗦重复,但是如果不验证,只在getpara方法里面验证,万一哪天需求变更,或者是方法修改,抑或是别的人调用fun1()的时候没有考虑到数据的有效性,就又会引发问题。
  思来想去还是没有结果。最终就归结为具体问题具体对待吧
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号