C++軟件不同於C的一個關鍵地方就在於,C++在完全保留有C的高效的基礎上,增添了抽象機制。而所謂的“現代C++風格”,讓我們感受到科學和美學的統一所展現出的巨大魅力。
C++軟件測試用例的生成主要還是測試一些邊界值,例如最大值、最小值、0等。假設我們要測試如下一個類的成員函數:void strcpy(char* dest, char const * src),則軟件會自動生成如下9個測試用例:
- <module name="FileLength"/>
- <module name="LineLength">
- <property name="max" value="120"/>
- </module>
- <module name="MethodLength">
- <property name="max" value="300"/>
- </module>
- <module name="ParameterNumber"/>
- <module name="RedundantThrows">
- <property name="allowUnchecked" value="true"/>
- <property name="allowSubclasses" value="true"/>
- </module>
- <module name="VisibilityModifier">
- <property name="protectedAllowed" value="true"/>
- <property name="packageAllowed" value="true"/>
- </module>
可見,如果我們的代碼在實現時沒有對各種可能情況尤其是邊界條件)進行特殊處理的話,則通過C++Test可以方便地發現這些潛在的問題。此外,對於一些特殊的測試情況,我們還可以手工創建測試用例。此外,采用C++ Test也可以幫助我們檢查程序的編碼情況,判斷是否嚴格按編碼規范進行開發。
C++ Test的使用比較簡單,即可以針對一個VC工程進行全面的測試,也可以一次只對一個C++軟件進行測試。在試用中發現,如果項目比較大時,最好不要直接對一個工程進行自動測試,而應按文件一個一個地測試,否則可會會導致程序死掉。由於其是采用JAVA技術開發的,所以在使用時最好使用運算速度較快的機器。
ProfileConf直接使用了第三方SNMP協議包,而ProfileConfNew則使用了封裝後的SNMP協議軟件包。進行協議封裝的目的一是為了隔離第三方軟件包,另一個目的是為了簡化客戶端使用SNMP協議棧的操作。
改造完成後,我們使用Together自帶的軟件測量工具進行了數據測量。選擇Together菜單中tools——>metrics,裡面提供了大量的測量指標。通過數據可以看出,改進以後,編寫的代碼有所減少,大約節省三分之一的代碼;耦合度有所降低,但並不是特別明顯,因為我們把對第三方協議包的依賴轉為對自己編織的協議包的依賴了;
C++軟件代碼復雜度大大降低,這是因為我們自己編寫的協議包更符合實際使用情況,因而使代碼編寫難度大大降低,非常容易學習,修改和維護。數據說明了一切。