無知是福,但是在處理軟體bug的時候,這句話並不適用。
軟體品質專家會告訴我們,那些努力找出bug並且提高 軟體品質的公司可以得到客戶更多的信任,得到更高的利潤,降低開發和維護的費用,簡化交付的流程,同時還可以避免客 戶的流失。
軟體品質是個大工程
如果你覺得軟體品質沒有什麼大不了的,那麼就來看看Capers Jones在2011 年6月軟體品質雜誌上發表的文章(這份雜誌由美國品質協會主辦):
高品質軟體的發布周期比低品質軟體短15%。
高品質軟體從第一個版本發布到之後五年的周期裡花費的總費用比低品質軟體低30%。
高品質軟體每年的維護費用比低品質軟體低40%。
規模越大的軟體,品質越是一個重要的因素。
根據Jones的觀點,軟體測試在尋找bug時的有效性有限,還不到35%。
考慮到軟體品質對公司業務的影響,開發 團隊都在尋找新的提高軟體品質的方法。其中最有前景的方法就是自動化錯誤報表(Automated Error Reporting),這種 方法以使用者為基礎來確定軟體的錯誤和異常。
我們的目標是讓錯誤報表變得易用、完整和 可自訂
有許多讓使用者參與到軟體錯誤修正當中的方法,比如郵件和論壇社區,自訂的軟體功能,Windows Error Reporting(WER)和各種現成的解決方案。
但是這些方法都不一定比自動錯誤報表有效:有的方法會讓使用者承擔過 多的責任;有的方法不能收集到精確的資訊;有的方法不能捕捉關鍵的特徵,如變數運行時的賦值可能就是一種關鍵特徵; 有的方法不能把錯誤提交到通用的錯誤跟蹤系統裡面。
我們的目標是讓錯誤報表變得易用、完整和可自訂,這就 要求使用者可以方便地提交錯誤報表,開發人員也可以方便地理解錯誤報表。這可不是一件簡單的事情,每個錯誤報表都應該 包括完整的堆棧追蹤資訊和有助於尋找、修複bug的上下文資訊。自動錯誤報表還應該可以和bug追蹤工具整合在一起。
Andrew Neville表示:“自動化錯誤報表讓使用者可以十分方便地提交錯誤報表。只要使用者按發送鍵,我們就可以收 到修正錯誤所需的所有資訊。使用了自動化錯誤報表之後,我們讓使用者可以更方便地與我們溝通。”Andrew Neville是 Neville&Rowe的一名資深軟體工程師,在Red Gate的SmartAssembly中使用了自動化錯誤報表,從而使商業智慧分析軟 件ImpactEdge可以很好地追蹤bug。
認識自動化錯誤報表
自動化錯誤報表的價值在於讓Team Dev瞭解到未知 異常的詳細資料。它從五個方面為軟體開發帶來了好處:
它為使用者提供了一種有效反饋途徑,增加了使用者和Team Dev之間的溝通效率。
它讓Team Dev瞭解到哪些bug是最容易發生的,讓Team Dev可以根據事實情況而不是猜測來修正bug。
它讓Team Dev可以更快的修複bug。
它可以以更低的代價確認和修複bug。
它可以讓Team Dev在發布軟體之前獲得更多的前期使用者反饋。如果Team Dev正在使用敏捷開發,自動化錯誤報表可以讓 Team Dev根據使用者的反饋快速制定出迭代的計劃,從而縮短迭代的周期。
微軟MVP和IT顧問Ed Blankenship解釋說:“知道異常發生的頻率對於修複異常來說是非常有協助的。知道bug的詳細信 息對於修複bug也是必不可缺的。“
自動化錯誤報表是怎樣工作的
一個理想的自動化錯誤報表系統可以讓用 戶方便地告訴Team Dev軟體產品的問題在哪裡。在理想狀態下,當軟體發生異常的時候,使用者應該可以得到一個簡單明了的 錯誤提示並且可以通過使用者介面發送錯誤報表。這可以大大節省使用者花在描述和反饋錯誤上的時間。所有的必要資訊都應該 被自動收集,而不需要使用者操心。