qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Coverity談“開發中測試”與程序員最常犯的編碼錯誤

           Coverity公司位于美國加州舊金山,他們的產品包括Coverity Integrity Control、Coverity Static Analysis等一系列代碼分析工具與解決方案。日前,Coverity公司產品副總Ezi Boteach先生就“開發中測試”、代碼復查和開發人員最常犯的編碼錯誤接受了采訪。

            問題:能否介紹下Coverity的“開發中測試”理念和你們的Development Testing Platform?

            Ezi:“開發中測試”是新出現的一種技術,包括一系列流程和軟件,例如靜態分析。開發中測試的目的是要幫助開發人員、管理層和業務人員能在開發周期的早期,找到并修復質量和安全方面的問題,這些代碼還在開發之中,不會影響上市時間、成本或客戶滿意度。

            “開發中測試”擴大了傳統測試范圍,可以包括功能測試性能測試和安全審核,為開發團隊提供更快、更便捷的方式來測試代碼中的缺陷,而且是以非侵入的方式。這種方式下,開發人員能夠把注意力集中在創新上,管理層能夠在開發周期早期盡早了解問題以作出決策,業務人員能持續向市場交付高質量的產品,獲得競爭優勢。

            問題:代碼復查是人們高度推薦的編程實踐。如果使用你們的產品,對于代碼復查,您有什么建議?

            Ezi:代碼復查是軟件“開發中測試”很重要的部分,而且其成本很高,因為需要另一個開發人員來復審代碼,很多時候這個開發人員還必須是資深人員。在代碼復查之前先做靜態分析,這能讓代碼復審過程更快,而且成本更低。使用自動化分析來檢查變更以及于系統其他部分的集成點,以此來識別和消滅代碼錯誤,代碼復審就可以更集中于邏輯和功能錯誤,而不是代碼的缺陷,這樣做更劃算,能夠自動化,而且易于重復。

            我們推薦測試驅動開發所有的工具和實踐,包括代碼復審、單元測試和代碼覆蓋率。當然,要是能和Coverity的自動化代碼測試工具一起使用就更好了。

            問題:你們的產品如何與像xUnit這樣的工具一起配合使用?

            Ezi:單元測試是“開發中測試”的重要組成,需要支持測試驅動開發。使用Coverity 5.5,我們引入了“開發中測試”的平臺,能夠讓多種不同工具與測試工作流集成。目前我們還不能專門與xUnit集成在一起,但是我們的客戶現在能夠很方便地把他們使用的測試工具與Coverity Development Testing平臺集成。舉個例子:Coverity 5.5.1版本包括與常用Java靜態分析工具FindBugs的集成。這樣的集成讓管理人員能夠降低維護多個測試工具的成本,并通過統一的工具來推行策略。開發人員也有統一的界面來查看缺陷,并排定解決的優先級。

            問題:你們的產品是否能與持續交付流程集成?

            Ezi:Coverity Static Analysis可以與多個構建系統集成,包括Jenkins這個常用的持續集成系統。一般來說,與Jenkins和持續集成系統的集成是為了確保所有的持續構建都能運行自動化代碼測試工具。如果分析中發現了新的缺陷,一個構建版本就是失敗的。這確保新的缺陷不會引入到交付的軟件的主干代碼中,而交付過程是持續交付流程的一部分。這也能保證失敗的構建版本不會進入流程的下一個階段,一般來說是QA階段。Coverity就像是交付過程中的一道閘門。

            問題:除了使用你們的產品,您是否還能為開發人員和架構師提供一些其他的原則與實踐?

            Ezi:確保軟件的質量,防止安全漏洞,這需要良好協作、工具和開發流程管理這幾方面的結合。從清晰的需求文檔開始,這是開發任何新功能的基礎。需求文檔之后,就是功能和系統架構師完成的功能和需求設計。代碼開發完成后,“開發中測試”應該是這個流程的有機部分。不僅僅是一個產品,而應該是流程和技術的組合,幫助開發組織在開發周期早期、撰寫代碼的時候,就能修復軟件的問題,確保代價高昂的缺陷不會進入后續階段和生產環境。

            架構師要確保軟件的架構良好。這需要人工復審和架構分析,此外還要有經過考驗的軟件開發方法論。與之類似,開發人員也要保證,除了使用靜態和動態分析的自動化測試之外,也要使用代碼復審和單元測試。質量保證(QA)是任何軟件開發過程中都很重要的階段,以確保功能測試和性能測試順利通過。最后,安全審核也很重要,保證在識別、修復、移除代碼缺陷時不會帶入新的安全漏洞。

            問題:根據Coverity收集的數據,您能否列舉一些開發人員最常犯的錯誤?

            Ezi:開源項目SCAN(scan.coverity.com)能夠很好地發現開發人員常犯的錯誤。從2006年開始,Coverity與美國國土安全部一起,研發了Coverity SCAN項目,來保證開源軟件的安全性和完整性。Coverity SCAN分析了超過290個開源項目,包括Linux、Apache、PHP和Android,識別出49,654個缺陷,開源軟件開發人員已經修復了超過15,000個缺陷。蝦米的表格就展示出了開源軟件中最常出現的缺陷,商業軟件也與之類似。

           SCAN項目中的出現頻率 風險程度 
          NULL指針引用 27.60% 中 
          資源泄露 23.19% 高 
          非原意圖表達式 9.76% 中 
          讀未初始化的值 8.41% 高 
          釋放后使用 5.91% 高 
          緩沖區溢出 5.52% 高 

            很重要的一點要指出:像NULL指針引用、內存泄露和緩沖區溢出常常會帶來很嚴重的質量和安全風險。很多這樣的缺陷,使用傳統的測試方法,有時難以找到。使用Coverity的工具會更易于發現類似問題。

            要想了解更多關于SCAN項目的信息,可以訪問 2010 SCAN報告,其中包括對于Android核心代碼的分析結果。

            問題:對于代碼分析可視化的重要性,程序員們認識得越來越明白了。您能否列出3個最重要的相關分析圖?

            Ezi:Coverity的Development Testing平臺能以代碼可視化形式讓開發人員和管理層看到代碼的質量。可視化能夠在幾個方面起到幫助作用:它有助于標識代碼的所有者和缺陷,能幫助展示出軟件代碼的整體可讀性,以及質量和安全風險較高的代碼區域,還能有助于推行代碼完整性的檢查策略。

            只談3個圖很困難,但我想選的是:未解決的缺陷與已解決的缺陷的對比、每個軟件組件中的缺陷個數、新的Integrity Control熱度圖。

          posted on 2011-12-14 15:58 順其自然EVO 閱讀(295) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          <2011年12月>
          27282930123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 红桥区| 许昌县| 永济市| 榕江县| 唐河县| 河西区| 白朗县| 茌平县| 西和县| 长垣县| 小金县| SHOW| 宁国市| 水城县| 双牌县| 武定县| 福贡县| 定日县| 都江堰市| 竹溪县| 许昌市| 高邑县| 石阡县| 得荣县| 东港市| 镶黄旗| 富蕴县| 廉江市| 宁河县| 平度市| 高清| 荆州市| 若羌县| 五莲县| 红桥区| 富裕县| 河南省| 北海市| 都安| 密山市| 阿拉善左旗|