WEB开发网      婵犵數濞€濞佳囧磹婵犳艾鐤炬い鎰堕檮閸嬬喐銇勯弽銊с€掗梻鍕閺岋箑螣娓氼垱笑闂佽姘﹂褔婀佸┑鐘诧工妤犲憡绂嶉崜褏纾奸弶鍫涘妼缁楁岸鏌熷畡鐗堝殗闁诡喒鏅犲畷褰掝敃閵堝棙顔忔繝鐢靛仦閸ㄥ爼骞愰幘顔肩;闁规崘绉ぐ鎺撳亹闁绘垶锕╁Λ鍕⒑閹肩偛濡奸悗娑掓櫇缁顓兼径妯绘櫇闂佹寧绻傞弻濠囨晝閸屾稓鍘甸柣搴㈢⊕閿氶柣蹇ョ稻缁绘繃绻濋崘銊т紝闂佽鍨伴崯鏉戠暦閻旂⒈鏁傞柛鈾€鏅欑槐妯衡攽閻愬樊鍤熷┑顔藉劤铻為柛鏇ㄥ墯閸欏繘鏌嶉崫鍕櫣缂佲偓婢跺绠鹃柟瀛樼箘閿涘秵顨ラ悙顏勭伈闁诡喖缍婂畷鎯邦槻婵℃彃顭烽弻娑㈠Ω閵夈儺鍔夌紓浣稿€哥粔褰掑极閹剧粯鏅搁柨鐕傛嫹 ---闂傚倷鐒︾€笛兠洪埡鍛闁跨噦鎷�
开发学院软件开发Java Java 理论与实践: 平衡测试,第 1 部分:不要仅编... 阅读

Java 理论与实践: 平衡测试,第 1 部分:不要仅编写测试,还要编写 bug 检测器

 2010-01-11 00:00:00 来源:WEB开发网 闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹闂傚倷绀侀幉锟犲垂閻㈠灚宕查柟鎵閸庡秵銇勯幒鎴濃偓鐢稿磻閹炬枼妲堟繛鍡楃С濞岊亞绱撻崒姘扁枌闁瑰嚖鎷�婵犵數濮幏鍐川椤撴繄鎹曢梻渚€娼уú銈吤洪妸鈺佺劦妞ゆ帊鑳堕埊鏇㈡煏閸モ晛浠х紒杈╁仱閺佹捇鏁撻敓锟�闂傚倷绶氬ḿ褍螞閹绢喖绠柨鐕傛嫹  闂傚倷鑳舵灙缂佺粯顨呴埢宥夊即閵忕姵鐎梺缁樺姇閻忔氨鈧凹鍓熷娲垂椤曞懎鍓伴梺閫炲苯澧紒澶婄秺瀵濡歌閸嬫捇妫冨☉娆忔殘闂佷紮缍€娴滎剟鍩€椤掑倹鏆柛瀣躬瀹曚即寮借閺嗭箓鏌ㄩ悤鍌涘
核心提示: 静态分析的主要作用是分析输出,并确定报告的条目是真的 bug 还是假警报,Java 理论与实践: 平衡测试,第 1 部分:不要仅编写测试,还要编写 bug 检测器(3),编写的部分优秀分析工具或 bug 模式检测器会管理误报率;核心 FindBugs 包中的检测器已经进行了调优,目的是使误报率不

静态分析的主要作用是分析输出,并确定报告的条目是真的 bug 还是假警报。编写的部分优秀分析工具或 bug 模式检测器会管理误报率;核心 FindBugs 包中的检测器已经进行了调优,目的是使误报率不超过 50 %,这样分析输出时不会有太多的烦麻。(将此阈值与针对 C 的 lint-like 工具进行比较,后者常常发出许多假警报,使用时相当耗时。)

将它提升一个级别

前面描述修复 bug 的方法(首先编写测试用例,然后检查修复和测试用例)反映了这样一个愿望:不仅要修复 bug,还要提高修复它的信心,并记录如何修复它,以及何时修复它。此方法比仅修复 bug 要多做许多工作,但是它给我们提供了更多的信心,我们的代码在经过多个开发人员的不断修改后可以继续使用。不过,仅为所发现的 bug 编写测试用例是一种消极方法。在代码失败之前,我们希望尽可能以最佳实践分析代码。

清单 1 通过 BigDecimal 类说明了常见的 bug。BigDecimal 是固定不变的,所以算术方法(如 add())会返回一个新的 BigDecimal 作为其结果,而不修改调用它们的对象。清单 1 中的代码显然被假定为有条件地将运输费用添加到总体订购价格中,但是,实际上不能随意添加任何内容,因为 add() 的返回值被丢弃了:


清单 1. 典型的 bug 模式 —— 使用 mutator 方法配置 factory 方法
public class ShoppingCart { 
  private BigDecimal totalCost; 
 
  private boolean qualifiesForFreeShipping() { ... } 
  private BigDecimal getShippingCost() { ... } 
 
  public void checkout() { 
    ... 
    if (!qualifiesForFreeShipping()) 
      totalCost.add(getShippingCost()); //WRONG! 
  } 
} 

上一页  1 2 3 4 5 6  下一页

Tags:Java 理论 实践

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接