軟件測試之c++test v7.1基礎學習經驗談 軟件測試
正式接觸c++test v7.1快一個月了,雖然在使用過程中還會遇到一些這樣那樣的問題,但這并不影響我在未來的幾天內對c++test做一個完整的盤點。
我在過去幾年的工作經歷中接觸過很多代碼測試工具,如PRQA公司的靜態分析工具QAC/C++、(IBM)Telelogic公司的Logiscope、LDRA公司的Testbed等等。根據我對這些類似工具的一些經驗,在本次盤點中,我會重點強調我個人認為的c++test的“亮點”。當然,任何東東都是“仁者見仁,智者見智”,如果您有什么異議,歡迎留言。
下面我將就c++test v7.1的“亮點”,說一下我的看法。
1 “站在巨人的肩上”——用戶界面及其擴展性
任何人對某個軟件的第一印象一定是其UI(用戶界面)。c++test v7.1在這方面有先天的優勢,因為其“站在巨人的肩上”。
我們都知道,Eclipse是一個開源的、目前最流行的IDE框架,而c++test v7.1恰恰是基于Eclipse開發框架內,所以其天然的繼承了Eclipse的所有優點,如界面友好、操作簡單、擴展性好,可以與多種版本管理工具無縫集成等。
總之,在整個界面框架方面,c++tes很聰明,占了相當大的“便宜”。
2 編程規則檢查
c++test v7.1自帶了830條c/c++編程規則,雖然在規則的絕對數量上比不過QAC/C++的一千多條,但c++test的規則更實用,更容易維護和管理,主要體現在兩個方面:
×規則分組明確
c++test的830條編程規則被劃分到不同類別的幾個組中,如
QT Best Practices 組包含的是 由Qt (Trolltech)倡導并經由實踐驗證的最佳代碼規范。使用QT平臺編程的項目可以直接選擇該組的規則即可;
針對汽車電子行業的編程,c++test提供了MISRA及MISRA 2004兩個組。MISRA全稱是Motor Industry Software Reliability Association(汽車行業軟件可靠性協會),其在1998年和2004年分別發表過兩個針對汽車電子軟件C編程的規范,即MISRA和MISRA-c:2004。c++test已經內建了這兩個規范的支持,汽車行業的項目可以直接選擇這兩組。
另外c++test還有STL Best Practices組(針對STL)、Security組(針對安全)、Portability(針對可移植性)、Name Conventions(針對命名規范)等等,根據不同的客戶的平臺和關注點,客戶可以很容易選擇自己需要的規范,在這一點上,c++test比其他工具更方便。
×不同的嚴重等級
c++test中的八百多條規則并不是完全“平等”的,按照嚴重等級,劃分為5個不同的級別,level 1-5分別為嚴重違例、可能嚴重違例、違例、可能違例、提醒,level 1最嚴重,level 5最輕微。按照嚴重級別選擇適合自己的規則更加容易。關于嚴重等級的詳細情況,請參考http://www.51testing.com/?10851/action_viewspace_itemid_82575.html
3 更容易的添加新的規則
c++test的RuleWizard支持用戶使用圖形方式自定義自己的編碼規則。相比于QAC/C++使用Perl手動編程新規則、Logiscope使用TCL手動編程新規則,c++test的添加新規則的功能是最方便的。
RuleWizard使用圖形化的規范編輯器,直接用鼠標點擊、拖拽就可以完成規則的編程,相當的方便。
而且相比于其他工具的user guide(用戶手冊)中都沒有關于如何編程新規則的詳細內容,導致這些工具雖說有這個功能,但基本上除了廠商自己大部分客戶很難用起來,c++test提供了圖形化編程新規則的詳細教程,通過14個從淺入深的例子,用戶可以很容易上手,添加自己的規則。
4 創新的BugDetective
BugDetective是Parasoft的專利技術,借助于改技術,程序員可以在靜態階段(編碼及單元測試)就可以發現以往只有在動態測試(代碼運行)中才能發現的運行時錯誤,如內存/資源泄漏、緩沖區溢出、除數為零、指針的非法引用等。
BugDetective更智能,可以自動分析代碼邏輯,虛擬執行代碼邏輯路徑,從而發現并準確定位運行時錯誤。
BugDetective更精確,它可以達到100%的測試覆蓋,發現更多的錯誤,更難得是,它100%沒有誤報,即它提示的錯誤肯定是代碼的BUG。
BugDetective更全面,它可以跨文件、跨類,跨包,支持對整個系統進行測試,找到80%以上的運行時錯誤。
BugDetective更快速,它不需要測試用例,不需要代碼執行,不需要下載到目標機(針對嵌入式開發),大大提高效率。
BugDetective是Parasoft創新的功能,該功能在其他工具中都是沒有的,所以該功能是c++test中需要特定的license保護。
c++test靜態分析部分的“亮點”就先盤點到這里,在下文中我將就c++test的動態單元測試部分盤點,歡迎繼續關注。
文章來源于領測軟件測試網 http://www.kjueaiud.com/