[转]如何进行单元测试
一、單元測試步驟
代碼編寫完成后的單元測試工作主要分為兩個步驟:
人工靜態(tài)檢查是測試的第一步,這個階段工作主要是保證代碼算法的邏輯正確性(盡量通過人工檢查發(fā)現(xiàn)代碼的邏輯錯誤)、清晰性、規(guī)范性、一致性、算法高效性。并盡可能的發(fā)現(xiàn)程序中沒有發(fā)現(xiàn)的錯誤。
執(zhí)行待測程序來跟蹤比較實際結(jié)果與預(yù)期結(jié)果來發(fā)現(xiàn)錯誤。經(jīng)驗表明,使用人工靜態(tài)檢查法能夠有效的發(fā)現(xiàn)30%到70%的邏輯設(shè)計和 編碼錯誤。但是代碼中仍會有大量的隱性錯誤無法通過視覺檢查發(fā)現(xiàn),必須通過跟蹤調(diào)試法細(xì)心分析才能夠捕捉到。所以,動態(tài)跟蹤調(diào)試方法也成了單元測試的重點 與難點。
二、人工檢查
通常在人工檢查階段必須執(zhí)行以下項目的活動:?
第一、 檢查算法的邏輯正確性;確定所編寫的代碼算法、數(shù)據(jù)結(jié)構(gòu)定義(如:隊列、堆棧等)是否實現(xiàn)了模塊或方法所要求的功能。?
第二、 模塊接口的正確性檢查;確定形式參數(shù)個數(shù)、數(shù)據(jù)類型、順序是否正確;確定返回值類型及返回值的正確性。
第三、 輸入?yún)?shù)有沒有作正確性檢查;如果沒有作正確性檢查,確定該參數(shù)是否的確無需做參數(shù)正確性檢查,否則請?zhí)砑由蠀?shù)的正確性檢查。經(jīng)驗表明,缺少參數(shù)正確性檢查的代碼是造成軟件系統(tǒng)不穩(wěn)定的主要原因之一。?
第四、 調(diào)用其他方法接口的正確性;檢查實參類型正確與否、傳入的參數(shù)值正確與否、個數(shù)正確與否,特別是具有多態(tài)的方法。返回值正確與否,有沒有誤解返回值所表示 的意思。最好對每個被調(diào)用的方法的返回值用顯濕代碼作正確性檢查,如果被調(diào)用方法出現(xiàn)異常或錯誤程序應(yīng)該給予反饋,并添加適當(dāng)?shù)某鲥e處理代碼。
第五、 出錯處理;模塊代碼要求能預(yù)見出錯的條件,并設(shè)置適當(dāng)?shù)某鲥e處理,以便在一旦程序出錯時,能對出錯程序重做安排,保證其邏輯的正確性,這種出錯處理應(yīng)當(dāng)是 模塊功能的一部分。若出現(xiàn)下列情況之一,則表明模塊的錯誤處理功能包含有錯誤或缺陷:出錯的描述難以理解;出錯的描述不足以對錯誤定位,不足以確定出錯的 原因;顯示的錯誤信息與實際的錯誤原因不符;對錯誤條件的處理不正確;在對錯誤進(jìn)行處理之前,錯誤條件已經(jīng)引起系統(tǒng)的干預(yù)等。?
第六、 保證表達(dá)式、SQL語句的正確性;檢查所編寫的SQL語句的語法、邏輯的正確性。對表達(dá)式應(yīng)該保證不含二義性,對于容易產(chǎn)生歧義的表達(dá)式或運(yùn)算符優(yōu)先級 (如:《 、=、 》、 &&、||、++、 --等)可以采用擴(kuò)號“()”運(yùn)算符避免二義性,這樣一方面能夠保證代碼的正確可靠,同時也能夠提高代碼的可讀性。
第七、 檢查常量或全局變量使用的正確性;確定所使用的常量或全局變量的取值和數(shù)值、數(shù)據(jù)類型;保證常量每次引用同它的取值、數(shù)值和類型的一致性。?
第八、 表示符定義的規(guī)范一致性;保證變量命名能夠見名知意,并且簡潔但不宜過長或過短、規(guī)范、容易記憶、最好能夠拼讀。并盡量保證用相同的表示符代表相同功能,不要將不同的功能用相同的表示符表示;更不要用相同的表示符代表不同的功能意義。
第九、 程序風(fēng)格的一致性、規(guī)范性;代碼必須能保證符合企業(yè)規(guī)范,保證所有成員的代碼風(fēng)格一致、規(guī)范、工整。例如對數(shù)組做循環(huán),不要一會兒采用下標(biāo)變量從下到上的 方式(如:for(I=0;I++;I<10)),一會兒又采用從上到下的方式 (如:for(I=10;I--;I>0));應(yīng)該盡量采用統(tǒng) 一的方式,或則統(tǒng)一從下到上,或則統(tǒng)一從上到下。建議采用for循環(huán)和While循環(huán),不要采用do{}while循環(huán)等。?
第十、 檢查程序中使用到的神秘數(shù)字是否采用了表示符定義。神秘的數(shù)字包括各種常數(shù)、數(shù)組的大小、字符位置、變換因子以及程序中出現(xiàn)的其他以文字形式寫出的數(shù)值。 在程序源代碼里,一個具有原本形式的數(shù)對其本身的重要性或作用沒提供任何指示性信息,它們也導(dǎo)致程序難以理解和修改。對于這類神秘數(shù)字必須采用相應(yīng)的標(biāo)量 來表示;如果該數(shù)字在整個系統(tǒng)中都可能使用到務(wù)必將它定義為全局常量;如果該神秘數(shù)字在一個類中使用可將其定義為類的屬性(Attribute),如果該 神秘數(shù)字只在一個方法中出現(xiàn)務(wù)必將其定義為局部變量或常量。?
第十一、 檢查代碼是否可以優(yōu)化、算法效率是否最高。如:SQL語句是否可以優(yōu)化,是否可以用1條SQL語句代替程序中的多條SQL語句的功能,循環(huán)是否必要,循環(huán)中的語句是否可以抽出到循環(huán)之外等。?
第十二、 檢查您的程序是否清晰簡潔容易理解。注意:冗長的程序并不一定不是清晰的。?
第十三、 檢查方法內(nèi)部注釋是否完整;是否清晰簡潔;是否正確的反映了代碼的功能,錯誤的注釋比沒有注釋更糟;是否做了多余的注釋;對于簡單的一看就懂的代碼沒有必要注釋。?
第十四、 檢查注釋文檔是否完整;對包、類、屬性、方法功能、參數(shù)、返回值的注釋是否正確且容易理解;是否會落了或多了某個參數(shù)的注釋,參數(shù)類型是否正確,參數(shù)的限 定值是否正確。特別是對于形式參數(shù)與返回值中關(guān)于神秘數(shù)值的注釋,如:類型參數(shù) 應(yīng)該指出 1.代表什么,2.代表什么,3.代表什么等。對于返回結(jié)果集(Result Set)的注釋,應(yīng)該注釋結(jié)果集中包含那些字段及字段類型、字段順序等。
---------------------
作者:Roda的博客
來源:CSDN
原文:https://blog.csdn.net/weixin_42343424/article/details/90763843
版權(quán)聲明:本文為作者原創(chuàng)文章,轉(zhuǎn)載請附上博文鏈接!
總結(jié)
以上是生活随笔為你收集整理的[转]如何进行单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 140种Python标准库、第三方库和外
- 下一篇: [转]Angular 单元测试讲解