軟件測試步驟
測試過程按4個(gè)步驟進(jìn)行,即單元測試、集成測試、確認(rèn)測試和系統(tǒng)測試及發(fā)版測試。
開始是單元測試,集中對用源代碼實(shí)現(xiàn)的每一個(gè)程序單元進(jìn)行測試,檢查各個(gè)程序模塊是否正確地實(shí)現(xiàn)了規(guī)定的功能。
集成測試把已測試過的模塊組裝起來,主要對與設(shè)計(jì)相關(guān)的軟件體系結(jié)構(gòu)的構(gòu)造進(jìn)行測試。
確認(rèn)測試則是要檢查已實(shí)現(xiàn)的軟件是否滿足了需求規(guī)格說明中確定了的各種需求,以及軟件配置是否完全、正確。
系統(tǒng)測試把已經(jīng)經(jīng)過確認(rèn)的軟件納入實(shí)際運(yùn)行環(huán)境中,與其它系統(tǒng)成份組合在一起進(jìn)行測試。
單元測試 (Unit Testing)
單元測試又稱模塊測試,是針對軟件設(shè)計(jì)的最小單位 ─ 程序模塊,進(jìn)行正確性檢驗(yàn)的測試工作。其目的在于發(fā)現(xiàn)各模塊內(nèi)部可能存在的各種差錯(cuò)。
單元測試需要從程序的內(nèi)部結(jié)構(gòu)出發(fā)設(shè)計(jì)測試用例。多個(gè)模塊可以平行地獨(dú)立進(jìn)行單元測試。
1. 單元測試的內(nèi)容
在單元測試時(shí),測試者需要依據(jù)詳細(xì)設(shè)計(jì)說明書和源程序清單,了解該模塊的I/O條件和模塊的邏輯結(jié)構(gòu),主要采用白盒測試的測試用例,輔之以黑盒測試的測試用例,使之對任何合理的輸入和不合理的輸入,都能鑒別和響應(yīng)。
(1) 模塊接口測試
在單元測試的開始,應(yīng)對通過被測模塊的數(shù)據(jù)流進(jìn)行測試。測試項(xiàng)目包括:
–調(diào)用本模塊的輸入?yún)?shù)是否正確;
–本模塊調(diào)用子模塊時(shí)輸入給子模塊的參數(shù)是否正確;
–全局量的定義在各模塊中是否一致;
在做內(nèi)外存交換時(shí)要考慮:
–文件屬性是否正確;
–OPEN與CLOSE語句是否正確;
–緩沖區(qū)容量與記錄長度是否匹配;
–在進(jìn)行讀寫操作之前是否打開了文件;
–在結(jié)束文件處理時(shí)是否關(guān)閉了文件;
–正文書寫/輸入錯(cuò)誤,
–I/O錯(cuò)誤是否檢查并做了處理。
(2) 局部數(shù)據(jù)結(jié)構(gòu)測試
不正確或不一致的數(shù)據(jù)類型說明
使用尚未賦值或尚未初始化的變量
錯(cuò)誤的初始值或錯(cuò)誤的缺省值
變量名拼寫錯(cuò)或書寫錯(cuò)
不一致的數(shù)據(jù)類型
全局?jǐn)?shù)據(jù)對模塊的影響
(3) 路徑測試
選擇適當(dāng)?shù)臏y試用例,對模塊中重要的執(zhí)行路徑進(jìn)行測試。
應(yīng)當(dāng)設(shè)計(jì)測試用例查找由于錯(cuò)誤的計(jì)算、不正確的比較或不正常的控制流而導(dǎo)致的錯(cuò)誤。
對基本執(zhí)行路徑和循環(huán)進(jìn)行測試可以發(fā)現(xiàn)大量的路徑錯(cuò)誤。
(4) 錯(cuò)誤處理測試
出錯(cuò)的描述是否難以理解
出錯(cuò)的描述是否能夠?qū)﹀e(cuò)誤定位
顯示的錯(cuò)誤與實(shí)際的錯(cuò)誤是否相符
對錯(cuò)誤條件的處理正確與否
在對錯(cuò)誤進(jìn)行處理之前,錯(cuò)誤條件是否已經(jīng)引起系統(tǒng)的干預(yù)等
(5) 邊界測試
注意數(shù)據(jù)流、控制流中剛好等于、大于或小于確定的比較值時(shí)出錯(cuò)的可能性。對這些地方要仔細(xì)地選擇測試用例,認(rèn)真加以測試。
如果對模塊運(yùn)行時(shí)間有要求的話,還要專門進(jìn)行關(guān)鍵路徑測試,以確定最壞情況下和平均意義下影響模塊運(yùn)行時(shí)間的因素。
2. 單元測試的步驟
模塊并不是一個(gè)獨(dú)立的程序,在考慮測試模塊時(shí),同時(shí)要考慮它和外界的聯(lián)系,用一些輔助模塊去模擬與被測模塊相聯(lián)系的其它模塊。
–驅(qū)動(dòng)模塊 (driver)
–樁模塊 (stub) ── 存根模塊
如果一個(gè)模塊要完成多種功能,可以將這個(gè)模塊看成由幾個(gè)小程序組成。必須對其中的每個(gè)小程序先進(jìn)行單元測試要做的工作,對關(guān)鍵模塊還要做性能測試。
對支持某些標(biāo)準(zhǔn)規(guī)程的程序,更要著手進(jìn)行互聯(lián)測試。有人把這種情況特別稱為模塊測試,以區(qū)別單元測試。
集成測試(Integrated Testing)
集成測試 (集成測試、聯(lián)合測試)
通常,在單元測試的基礎(chǔ)上,需要將所有模塊按照設(shè)計(jì)要求組裝成為系統(tǒng)。這時(shí)需要考慮的問題是:
– 在把各個(gè)模塊連接起來的時(shí)侯,穿越模塊接口的數(shù)據(jù)是否會(huì)丟失;
– 一個(gè)模塊的功能是否會(huì)對另一個(gè)模塊的功能產(chǎn)生不利的影響;
– 各個(gè)子功能組合起來,能否達(dá)到預(yù)期要求的父功能;
– 全局?jǐn)?shù)據(jù)結(jié)構(gòu)是否有問題;
– 單個(gè)模塊的誤差累積起來,是否會(huì)放大,從而達(dá)到不能接受的程度。
在單元測試的同時(shí)可進(jìn)行集成測試,發(fā)現(xiàn)并排除在模塊連接中可能出現(xiàn)的問題,最終構(gòu)成要求的軟件系統(tǒng)。
子系統(tǒng)的集成測試特別稱為部件測試,它所做的工作是要找出集成后的子系統(tǒng)與系統(tǒng)需求規(guī)格說明之間的不一致。
通常,把模塊集成成為系統(tǒng)的方式有兩種
–一次性集成方式
–增殖式集成方式