李海海 陳曉軒
(卡斯柯信號有限公司 上海市 200070)
軟件測試是嵌入式軟件開發(fā)中一個重要的環(huán)節(jié),軟件測試過程是一種抽象的模型,用于定義軟件測試流程和方法,一種好的測試模型,在一定程度上決定了軟件開發(fā)成本以及質(zhì)量,在整個軟件生命周期中,越早的發(fā)現(xiàn)問題,整個項目的費(fèi)用也就越低。
在鐵路系統(tǒng)中,安全嵌入式軟件被廣泛應(yīng)用,為了保證產(chǎn)品的安全和可靠性,測試流程同樣重要,目前傳統(tǒng)的模型為V 模型以及W 模型,但是這兩種模型都存在一定的問題,無法滿足鐵路安全軟件的安全流程認(rèn)證要求,為了更好的滿足安全認(rèn)證的要求,實現(xiàn)對安全軟件流程SIL4 的要求,對W 進(jìn)行改進(jìn),完善了測試文檔測試的流程,以保證測試的準(zhǔn)確性和有效性。
V 模型目前廣泛應(yīng)用于嵌入式軟件的測試過程,如圖1 所示,測試分別是從單元測試、軟件集成測試、軟件確認(rèn)測試、系統(tǒng)集成測試,系統(tǒng)確認(rèn)測試,驗收測試。V 模型的優(yōu)點(diǎn)是明確的定義了測試階段和開發(fā)階段的對應(yīng)關(guān)系,但是缺點(diǎn)也是很明顯:
(1)測試活動是在編碼以后才介入,早期的需求設(shè)計導(dǎo)致錯誤可能在后期才發(fā)現(xiàn),導(dǎo)致返工,基于錯誤越早發(fā)現(xiàn),成本越低的原則,會導(dǎo)致成本增大;
(2)人員利用率低,早期測試等著編碼完成,后期開發(fā)人員編碼完成后,需要等著測試提交缺陷,所以這種模型已經(jīng)如法滿足要求。
如圖2 所示,W 模型是V 模型的改進(jìn), W 模型由兩個“V”重疊而成。其中一個“V”表示開發(fā)過程,包括用戶需求、系統(tǒng)需求說明、系統(tǒng)架構(gòu)設(shè)計,軟件需求說明,軟件架構(gòu)設(shè)計,軟件詳細(xì)設(shè)計,編碼。另一個“V”表示測試過程,包括用戶需求分析、系統(tǒng)需求測試、系統(tǒng)架構(gòu)測試,軟件需求測試,軟件架構(gòu)測試,軟件單元測試,W 模型的優(yōu)點(diǎn)有:
(1)W 模型保證了需求的完整性,準(zhǔn)確性和一致性,能較早的發(fā)現(xiàn)問題,避免后期編碼人員的功能實現(xiàn)錯誤;
(2)人員利用率高,前期測試人員介入,也能夠較早了解產(chǎn)品;
(3)測試與開發(fā)并行且相對獨(dú)立。但是W 模型也存在一定安全隱患,在前期注重的是開發(fā)文檔的測試,沒有對測試文檔進(jìn)行測試,不能在前期發(fā)現(xiàn)測試文檔的準(zhǔn)確性,后期可能導(dǎo)致測試執(zhí)行的錯誤。
圖3 為3V 模型整個流程圖,在W 模型的基礎(chǔ)上增加一個V,V 左邊主要是用例的設(shè)計以及用例的確認(rèn)和驗證,“V”的右邊主要是測試報告,以控制階段的進(jìn)行,詳細(xì)描述如下:
圖1:V 模型流程圖
圖2:W 模型流程圖
(1)用戶需求階段:①通過分析用戶需求,識別不可能實現(xiàn)的用戶需求;②通過分析,明確細(xì)化客戶目的。用戶需求階段是項目的開始,與顧客的交談不夠多和不夠徹底,一些重要的需求被忽視,會導(dǎo)致后續(xù)開發(fā)工作有大的偏差,因此,需要做好用戶需求的分析,能夠保證功能的不遺漏。
(2)系統(tǒng)需求設(shè)計階段:①通過驗證系統(tǒng)需求和用戶需求之間的追蹤關(guān)系,驗證系統(tǒng)需求的完整性和一致性;②通過編寫用例,確定系統(tǒng)功能的可測性;③通過系統(tǒng)確認(rèn)用例的V&V,驗證系統(tǒng)測試用例準(zhǔn)確性和追蹤的完整性,防止漏測功能。
(3)系統(tǒng)架構(gòu)設(shè)計階段:①通過驗證架構(gòu)和系統(tǒng)需求之間的追蹤關(guān)系,驗證系統(tǒng)架構(gòu)的完整性與一致性,并驗證軟件之間交互數(shù)據(jù)的一致性;②通過編寫用例,以及對系統(tǒng)集成用例的V&V,驗證系統(tǒng)集成用例的準(zhǔn)確性和追蹤的完整性,確保軟件之間數(shù)據(jù)交互的準(zhǔn)確性。
圖3:3V 模型流程圖
(4)軟件需求設(shè)計階段:①通過驗證和確認(rèn)軟件需求和系統(tǒng)架構(gòu)之間的追蹤關(guān)系,驗證各個軟件功能的完整和一致性;②通過編寫軟件確認(rèn)用例,確定軟件功能的可測性;③通過軟件確認(rèn)用例的V&V,驗證軟件確認(rèn)測試用例準(zhǔn)確性和追蹤的完整性,防止漏測功能。
(5)軟件架構(gòu)設(shè)計階段:①通過驗證和確認(rèn)軟件架構(gòu)和軟件需求之間的追蹤關(guān)系,軟件架構(gòu)與軟件需求的一致性,驗證軟件模塊之間接口的一致性;②通過編寫軟件集成用例并對軟件集成用例的V&V,驗證軟件集成測試用例準(zhǔn)確性和追蹤的完整性,防止漏測模塊之間的接口數(shù)據(jù)。
(6)軟件概要設(shè)計階段:① 通過驗證和確認(rèn)軟件詳細(xì)設(shè)計與軟件建構(gòu)之間的追蹤關(guān)系,驗證詳細(xì)設(shè)計的完整性和準(zhǔn)確性,提編碼提供詳細(xì)的設(shè)計依據(jù);② 通過編寫單元測試用并對單元測試用例的V&V,驗證了單元測試用例的準(zhǔn)確性和追蹤完整性。
(7)編碼到軟件單元測試階段以及報告階段:完成編碼后,測試人員依據(jù)單元測試用例執(zhí)行測試,完成對軟件的動態(tài)測試以及靜態(tài)的代碼走讀,如有問題,提交缺陷,編碼問題只需對應(yīng)軟件概要設(shè)計修改,待測試通過,提交單元測試通過的測試報告。
(8)其他階段的測試:為了防止下一階段測試無效,下一階段必須在收到上一階段測試通過報告才能開展。
對于安全軟件的開發(fā)來說,基于3V 模型的測試模型有利于通過流程來保證軟件質(zhì)量,同時測試人員的早期介入,也能更好的對產(chǎn)品了解,不僅僅是前期通過文檔質(zhì)量來保證開發(fā)代碼的質(zhì)量,更是通過技術(shù)文檔來保證產(chǎn)品的開發(fā)質(zhì)量,在我們進(jìn)行開發(fā)文檔測試的同時,我們也對后面開發(fā)階段對應(yīng)的測試階段-單元測試、軟件集成測試、軟件確認(rèn)測試、系統(tǒng)集成測試、系統(tǒng)確認(rèn)測試以及驗收測試做出測試設(shè)計以及驗證,保證了后面測試質(zhì)量。3V 模型完全符合SIL4 軟件的開發(fā)流程,可以廣泛應(yīng)用到安全產(chǎn)品。
在采用3V 模型時,對于“V”模型左邊,當(dāng)某個階段發(fā)現(xiàn)問題時,我們只要回到上一個階段即可,不必回答最初,有利于節(jié)省時間,但是在“V”模型右邊,當(dāng)某個測試階段發(fā)現(xiàn)問題并修改時,往往要回到單元測試開始,所以3V 模型不適合敏捷開發(fā)。
本文結(jié)合軟件測試模型的實際原則,提出一種新的安全軟件測試模型-W 模型,該模型吸取了V 模型和W 模型的有點(diǎn),同時彌補(bǔ)了改模型的不足之處,體現(xiàn)了“盡早測試,盡早發(fā)現(xiàn)問題,開發(fā)測試文檔全面測,代碼文檔全面測”的原則,在遵循安全軟件測試原則上,將問題盡早暴漏,減少反正,也通過流程來全面確保文檔的正確性。