zoukankan      html  css  js  c++  java
  • java整理的经典的bug问题白盒问题(转)

    白盒测试静态检查--java经典bug

    经过一段时间白盒静态扫描,目前已经扫了两个包,发现了100多个bug.

    值得欣慰的是,自己开发的工具也扫描出了一些bug,这段时间熬夜的开发没有白费.总结一下,主要问题的分类。随着这些经验的积累,可以作为日后人工审查和开发学习

    经典案例。

     

     

     

     

     

     

     

    如下列表展示

      Type headline demo Comment
    1 多线程 单例action里面包含有属性并且允许读写 public class XxxAction extends Action{
     
     private StringBuffer vo = new StringBuffer();
     
     
     public void setVo(StringBuffer invo){
     vo=invo;
     }
     public StringBuffer getVo(){
     return this.vo;
     }
    .................
    单例action里面包含有属性进行读写
    会引起数据错乱
    2 Bad practice 字符串比较用==或者=  if(dao.getADTerminalByServiceCode(serviceCode).getServicecode() == serviceCode){ String类型的比较不要用==或者!=,应该用equal方法
      就上面的代码永远都为false,因为==表示在同一常量区才会为true
    3   字符串分割正则表达式使用不对 String[] area = areaSize.split("*"); 正则表达式使用不对,会一直抛出异常
    应该使用转义字符
    4   字符串比较的空点异常 vo.getVirtualFlag().equals("NO") 建议修改为"NO".equalsvo.getVirtualFlag()
    5   对象比较不对
    if (this == obj) {
               return true;
           }
    对象必须重再了hashcode方法,比较才有意义
    6   流没关闭 InputStream input = new BufferedInputStream(file.getInputStream()); 流没有关闭
    会造成文件句柄资源耗尽,那么就无法再打开新的流
    7   connection statement rs等没关闭  try{
      .....
    } catch(..){

    }finally
      if(rs!=null){
         rs.close();
       }
      if(stmt!=null){
        stmt.close();
      }
     if(conn!=null){
        conn.close();
      }

    }
    rs有异常会关闭不了statement conn
    statement有异常会关闭不了conn
    8 Performance 循环中创建字符串 String children = "" ;
           ClassSpecVO[] t = cs.getTree();
           if ( t == null )
            return "";
          
           for ( int i = 0 ; i < t.length ; i ++ )
           {
            if ( children.length() != 0 )
             children += ",";
            children += constructJsonString(t[i]);
           }

    children会循环创建对象,必须改为StringBuffer对象。用append进行连接字符串
    9   不应该创建字符串对象 String vsplist=new String(); 修改为高效的构造方法String vsplist=“”
     “”
    的字符串会在常量区不用创建对象

        


    作者:高级测试开发网
    博客地址:https://seniortesting.club
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    angularjs中的指令
    git笔记
    webpack.config.js
    webpack开发react常用插件和依赖
    angularjs中的分页指令
    angularjs中的排序和过滤
    react学习
    gulp学习
    Javascript 判断变量类型的陷阱 与 正确的处理方式
    Fn.bind.apply() 解决 new 操作符不能用与 apply 或 call 同时使用
  • 原文地址:https://www.cnblogs.com/seniortestingdev/p/2395696.html
Copyright © 2011-2022 走看看