單元測試之模塊接口、局部數(shù)據(jù)結(jié)構(gòu)缆镣、路徑芽突、邊界條件、錯誤處理董瞻、代碼書寫規(guī)范

單元測試是以程序設(shè)計說明書為指導(dǎo)寞蚌,測試模塊范圍內(nèi)的重要控制路徑,以揭露錯誤力细。

測試的相對復(fù)雜性和所發(fā)現(xiàn)的錯誤受到單元測試所限定的范圍的限制睬澡。它在執(zhí)行的過程中緊密的依照程序框架對模塊進行測試,測試包含入口和出口的參數(shù)眠蚂,輸入和輸出信息煞聪,錯誤處理信息,部分邊界數(shù)值測試逝慧。需要在6個方面對所測模塊進行檢查昔脯。

1.模塊接口測試

模塊接口測試是單元測試的基礎(chǔ),當模塊通過外部設(shè)備進行輸入/輸出操作時笛臣,只有在數(shù)據(jù)能正確流入云稚、流出模塊的前提下,模塊才能完成他的功能沈堡。

模塊接口測試應(yīng)考慮下列因素:

★ 調(diào)用其他模塊時所給的輸入?yún)?shù)與模塊的形式參數(shù)在個數(shù)静陈、屬性、順序上是否匹配诞丽;

★ 調(diào)用其他模塊時所給實際參數(shù)的個數(shù)是否與被調(diào)模塊的形參個數(shù)相同鲸拥;

★ 調(diào)用其他模塊時所給實際參數(shù)的屬性是否與被調(diào)模塊的形參屬性匹配;

★ 調(diào)用預(yù)定義函數(shù)時所用參數(shù)的個數(shù)僧免、屬性和次序是否正確刑赶;

★ 輸入的實際參數(shù)與形式參數(shù)的個數(shù)是否相同;

★ 輸入的實際參數(shù)與形式參數(shù)的屬性是否匹配懂衩;

★ 輸入的實際參數(shù)與形式參數(shù)的量綱是否一致撞叨;

★ 是否修改了只做輸入用的形式參數(shù)金踪;

★ 是否存在與當前入口點無關(guān)的參數(shù)引用;

★ 是否修改了只讀型參數(shù)牵敷;

★ 對全程變量的定義各模塊是否一致胡岔;

★ 是否把某些約束作為參數(shù)傳遞。

★ 輸出給標準函數(shù)的參數(shù)在個數(shù)劣领、屬性姐军、順序上是否正確;

★ 限制是否通過形式參數(shù)來傳送尖淘;

★ 文件屬性是否正確;

★ OPEN/CLOSE語句是否正確著觉;

★ 格式說明與輸入輸出語句是否匹配村生;

★ 緩沖區(qū)大小與記錄長度是否匹配;

★ 文件使用前是否已經(jīng)打開饼丘;

★ 是否處理了輸入/輸出錯誤趁桃;

★ 輸出信息中是否有文字性錯誤;

★ 在結(jié)束文件處理時是否關(guān)閉了文件肄鸽。

2.局部數(shù)據(jù)結(jié)構(gòu)測試

局部數(shù)據(jù)結(jié)構(gòu)是為了保證臨時存儲在模塊內(nèi)的數(shù)據(jù)在程序執(zhí)行過程中完整卫病、正確的基礎(chǔ)。模塊的局部數(shù)據(jù)結(jié)構(gòu)往往是錯誤的根源典徘,力求發(fā)現(xiàn)最常見的幾類錯誤:

★ 不合適或不相容的類型說明蟀苛;

★ 變量無初值;

★ 變量初始化或省缺值有錯逮诲;

★ 不正確的變量名(拼錯或不正確地截斷)帜平;

★ 出現(xiàn)上溢、下溢和地址異常梅鹦。

3.路徑測試

應(yīng)對模塊中重要的執(zhí)行路徑進行測試裆甩。由于錯誤的計算、不正確的比較或不正常的控制流而導(dǎo)致執(zhí)行路徑的錯誤齐唆。路徑錯誤應(yīng)考慮下列因素:

★ 運算的優(yōu)先次序不正確或誤解了運算的優(yōu)先次序嗤栓;

★ 運算的方式錯,即運算的對象彼此在類型上不相容箍邮;

★ 算法錯茉帅;

★ 初始化不正確;

★ 浮點數(shù)運算精度問題而造成的兩值比較不等媒殉;

★ 關(guān)系表達式中不正確的變量和比較符號表示不正確担敌;

★ 不正確地多循環(huán)一次或少循環(huán)一次;

★ 錯誤的或不可能的循環(huán)終止條件廷蓉;

★ 當遇到發(fā)散的迭代時不能終止的循環(huán)全封;

★ 不適當?shù)匦薷牧搜h(huán)變量等马昙。

4. 邊界條件測試

邊界條件測試是單元測試中最重要的一項任務(wù)。軟件經(jīng)常在邊界上失效刹悴,邊界條件測試是一項基礎(chǔ)測試行楞,也是后面系統(tǒng)測試中的功能測試的重點,邊界測試執(zhí)行的較好土匀,可以大大提高程序健壯性子房。邊界條件測試應(yīng)考慮下列因素:

★ 程序內(nèi)有一個n次循環(huán),n次循環(huán)應(yīng)是1~n, 出錯0~n;

★ 小于就轧、小于等于证杭、等于、大于妒御、大于等于解愤、不等于確定的比較值出錯;

★ 出現(xiàn)上溢乎莉、下溢和地址異常送讲。

5.錯誤處理測試

比較完善的模塊設(shè)計要求能預(yù)見出錯的條件,并設(shè)置適當?shù)某鲥e處理惋啃,以便在一旦程序出錯時哼鬓,能對出錯程序重做安排,保證其邏輯上的正確性边灭。這種出錯處理也應(yīng)當是模塊功能的一部分异希。錯誤處理測試應(yīng)考慮下列因素:

★ 出錯的描述難以理解;

★ 出錯的描述不足以對錯誤定位存筏,不足以確定出錯的原因宠互;

★ 顯示的錯誤與實際的錯誤不符;

★ 對錯誤條件的處理不正確椭坚;

★ 異常處理不當予跌。

6.代碼書寫規(guī)范

代碼書寫規(guī)范應(yīng)考慮下列因素:

★ 模塊設(shè)計程序框架流程圖;

★ 代碼書寫規(guī)范善茎,對齊方式券册;

★ 代碼的注釋;

★ 參數(shù)類型垂涯,數(shù)據(jù)長度,指針烁焙,數(shù)組長度大小耕赘;

★ 輸入輸出參數(shù)和結(jié)果骄蝇。

單元測試是對每個程序的單體調(diào)試。主要有以下幾步:

(1) 程序語法檢查操骡;

(2) 程序邏輯檢查九火。

在程序的邏輯檢查之前赚窃,首先需要制作測試數(shù)據(jù);即假設(shè)一些輸入數(shù)據(jù)和文件數(shù)據(jù)岔激。測試數(shù)據(jù)直接影響了程序的調(diào)試工作勒极,所以制作的數(shù)據(jù)應(yīng)該滿足以下幾個條件:

(1) 數(shù)據(jù)應(yīng)能滿足設(shè)計上要求的上下限及循環(huán)次數(shù);

(2) 數(shù)據(jù)應(yīng)滿足程序中的各種檢驗要求的錯誤數(shù)據(jù)虑鼎;

(3) 數(shù)據(jù)應(yīng)能適宜于人工對程序的檢查工作辱匿。

測試數(shù)據(jù)的內(nèi)容包含4個方面:

(1) 正常的數(shù)據(jù)

(2) 不同的數(shù)據(jù)

(3) 錯誤的數(shù)據(jù)

(4) 大量的數(shù)據(jù)

通過以上不同角度的數(shù)據(jù)檢驗,證明程序邏輯是對的炫彩,程序的調(diào)試也就結(jié)束了匾七。

在程序測試期,評價模塊的五個主要特性是:

★ 模塊接口江兢;

★ 局部數(shù)據(jù)結(jié)構(gòu)乐尊;

★ “重要”的執(zhí)行路徑;

★ 錯誤處理路徑划址;

★ 影響上述幾點的界限條件。

在其它任何測試開始之前限府,需要測試橫穿模塊接口的數(shù)據(jù)流夺颤。如果數(shù)據(jù)不是正確地進入和退出,其它的測試就談不上胁勺。

在程序測試中接口測試的清單如下:

⑴ 輸入?yún)?shù)的數(shù)目是否等于變元的數(shù)目

⑵ 參數(shù)與變元的屬性是否匹配

⑶ 參數(shù)與變元的單位是否匹配

⑷ 傳送給被調(diào)用模塊的變元數(shù)是否等于參數(shù)的項目

⑸ 傳送給被調(diào)用模塊的變元屬性是否同參數(shù)屬性一致

⑹ 傳送給被調(diào)用模塊的變元單位是否同參數(shù)的單位一致

⑺ 屬于內(nèi)部的函數(shù)屬性數(shù)目及變元次序是否正確

⑻ 對參數(shù)的任何訪問是否與當前的入口點無關(guān)

⑼ 輸入是否改動變元

⑽ 跨模塊的全程量定義是否相容

⑾ 限制是否作為變元來傳送

⑿ 參數(shù)是否被重復(fù)定義

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末世澜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子署穗,更是在濱河造成了極大的恐慌寥裂,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件案疲,死亡現(xiàn)場離奇詭異封恰,居然都是意外死亡,警方通過查閱死者的電腦和手機褐啡,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進店門诺舔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人备畦,你說我怎么就攤上這事低飒。” “怎么了懂盐?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵褥赊,是天一觀的道長。 經(jīng)常有香客問我莉恼,道長拌喉,這世上最難降的妖魔是什么速那? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮司光,結(jié)果婚禮上琅坡,老公的妹妹穿的比我還像新娘。我一直安慰自己残家,他們只是感情好榆俺,可當我...
    茶點故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坞淮,像睡著了一般茴晋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上回窘,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天诺擅,我揣著相機與錄音,去河邊找鬼啡直。 笑死烁涌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的酒觅。 我是一名探鬼主播撮执,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼舷丹!你這毒婦竟也來了抒钱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤颜凯,失蹤者是張志新(化名)和其女友劉穎谋币,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體症概,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡蕾额,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了穴豫。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凡简。...
    茶點故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖精肃,靈堂內(nèi)的尸體忽然破棺而出秤涩,到底是詐尸還是另有隱情,我是刑警寧澤司抱,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布筐眷,位于F島的核電站,受9級特大地震影響习柠,放射性物質(zhì)發(fā)生泄漏匀谣。R本人自食惡果不足惜照棋,卻給世界環(huán)境...
    茶點故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望武翎。 院中可真熱鬧烈炭,春花似錦、人聲如沸宝恶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垫毙。三九已至霹疫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間综芥,已是汗流浹背丽蝎。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膀藐,地道東北人屠阻。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像额各,于是被迫代替她去往敵國和親栏笆。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容