測(cè)試C++軟件舉例說明介紹
C++軟件不同于C的一個(gè)關(guān)鍵地方就在于,C++在完全保留有C的高效的基礎(chǔ)上,增添了抽象機(jī)制。而所謂的“現(xiàn)代C++風(fēng)格”,讓我們感受到科學(xué)和美學(xué)的統(tǒng)一所展現(xiàn)出的巨大魅力。
C++軟件測(cè)試用例的生成主要還是測(cè)試一些邊界值,例如***值、最小值、0等。假設(shè)我們要測(cè)試如下一個(gè)類的成員函數(shù):void strcpy(char* dest, char const * src),則軟件會(huì)自動(dòng)生成如下9個(gè)測(cè)試用例:
- <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>
可見,如果我們的代碼在實(shí)現(xiàn)時(shí)沒有對(duì)各種可能情況(尤其是邊界條件)進(jìn)行特殊處理的話,則通過C++Test可以方便地發(fā)現(xiàn)這些潛在的問題。此外,對(duì)于一些特殊的測(cè)試情況,我們還可以手工創(chuàng)建測(cè)試用例。此外,采用C++ Test也可以幫助我們檢查程序的編碼情況,判斷是否嚴(yán)格按編碼規(guī)范進(jìn)行開發(fā)。
C++ Test的使用比較簡(jiǎn)單,即可以針對(duì)一個(gè)VC工程進(jìn)行全面的測(cè)試,也可以一次只對(duì)一個(gè)C++軟件進(jìn)行測(cè)試。在試用中發(fā)現(xiàn),如果項(xiàng)目比較大時(shí),***不要直接對(duì)一個(gè)工程進(jìn)行自動(dòng)測(cè)試,而應(yīng)按文件一個(gè)一個(gè)地測(cè)試,否則可會(huì)會(huì)導(dǎo)致程序死掉。由于其是采用JAVA技術(shù)開發(fā)的,所以在使用時(shí)***使用運(yùn)算速度較快的機(jī)器。
ProfileConf直接使用了第三方SNMP協(xié)議包,而ProfileConfNew則使用了封裝后的SNMP協(xié)議軟件包。進(jìn)行協(xié)議封裝的目的一是為了隔離第三方軟件包,另一個(gè)目的是為了簡(jiǎn)化客戶端使用SNMP協(xié)議棧的操作。#t#
改造完成后,我們使用Together自帶的軟件測(cè)量工具進(jìn)行了數(shù)據(jù)測(cè)量。選擇Together菜單中tools——>metrics,里面提供了大量的測(cè)量指標(biāo)。通過數(shù)據(jù)可以看出,改進(jìn)以后,編寫的代碼有所減少,大約節(jié)省三分之一的代碼;耦合度有所降低,但并不是特別明顯,因?yàn)槲覀儼褜?duì)第三方協(xié)議包的依賴轉(zhuǎn)為對(duì)自己編織的協(xié)議包的依賴了;
C++軟件代碼復(fù)雜度大大降低,這是因?yàn)槲覀冏约壕帉懙膮f(xié)議包更符合實(shí)際使用情況,因而使代碼編寫難度大大降低,非常容易學(xué)習(xí),修改和維護(hù)。數(shù)據(jù)說明了一切。