嵌入式系統(tǒng)軟件的測試以及系統(tǒng)的測試案例

2013-11-06 14:32 來源:互聯(lián)網(wǎng) 作者:洛小辰

測試是傳統(tǒng)軟件開發(fā)的最后一步。整個(gè)軟件開發(fā)過程,需要收集要求、進(jìn)行高層次的設(shè)計(jì)、詳細(xì)設(shè)計(jì)、創(chuàng)建代碼、進(jìn)行部分單元測試,然后集成,最后才開始最終測試。

最佳的開發(fā)實(shí)踐應(yīng)包含代碼檢查這個(gè)步驟。然而代碼檢查一般只能找出70%的系統(tǒng)錯(cuò)誤,因此完美的測試環(huán)節(jié)絕對必不可少。測試就像個(gè)復(fù)式記帳系統(tǒng),可以確保將缺陷扼殺在最終推出的產(chǎn)品之前。

在所有其它的工程實(shí)踐中,測試都被視為基本環(huán)節(jié)。比如,在美國,每一座聯(lián)邦政府出資修建的橋都必須經(jīng)過大量的風(fēng)洞測試。而在軟件領(lǐng)域,測試并沒有很受重視。盡管測試是所有工程實(shí)踐準(zhǔn)則的關(guān)鍵部分,但編寫測試程序卻感覺是在浪費(fèi)時(shí)間。好在嵌入式系統(tǒng)設(shè)計(jì)界內(nèi)的許多領(lǐng)域已經(jīng)將測試作為其工作的核心部分,他們認(rèn)識到將這個(gè)關(guān)鍵步驟放在項(xiàng)目末期極不明智,因而主張同步地編寫測試程序和應(yīng)用程序。

嵌入式系統(tǒng)軟件測試在諸多方面都與應(yīng)用軟件測試一樣。不過,應(yīng)用測試與嵌入式系統(tǒng)測試之間還是存在一些重要差異。嵌入式開發(fā)人員一般會用到基于硬件的測試工具,而這類工具通常不會用于應(yīng)用開發(fā)過程中。此外,嵌入式系統(tǒng)一般都有些獨(dú)一無二的特性,這些特性應(yīng)該在測試計(jì)劃中得以體現(xiàn)。本文將介紹測試和測試案例開發(fā)的基礎(chǔ)知識,并指出整個(gè)嵌入式系統(tǒng)測試工作的特有細(xì)節(jié)。

何時(shí)測試以及如何測試

從圖1可以看出,在可行的條件下,測試應(yīng)盡早展開。一般來講,最早的測試是由最初的開發(fā)人員進(jìn)行的模塊或單元測試。遺憾的是,開發(fā)人員大多對如何建構(gòu)一整套測試?yán)桃赃M(jìn)行測試所知不足。由于精心設(shè)計(jì)的測試?yán)掏ǔV钡郊蓽y試時(shí)才能使用,因此許多在單元測試過程中就能找出的缺陷直到集成測試時(shí)才會被發(fā)現(xiàn)。比如,硅谷的一家大型網(wǎng)絡(luò)設(shè)備廠商為找出其軟件集成問題的關(guān)鍵原因,進(jìn)行了一項(xiàng)研究。這家廠商發(fā)現(xiàn),在項(xiàng)目集成階段找出的缺陷中,有70%是由在集成之前從沒被執(zhí)行過的程序所產(chǎn)生的。


3

圖1:改正問題的成本。


單元測試:開發(fā)人員在單獨(dú)進(jìn)行模塊級測試時(shí)一般是編寫存根代碼(stub code)取代余下的系統(tǒng)軟硬件。在開發(fā)周期的這個(gè)環(huán)節(jié),測試主要側(cè)重于代碼的邏輯性能。

通常,開發(fā)人員會分別使用某些平均值、高值或低值、以及某些超出范圍的值(以測試代碼的異常處理功能)進(jìn)行測試。但這些基于“黑匣子”的測試僅能對模塊中整個(gè)代碼的一部分進(jìn)行測試。

回歸測試:測試不應(yīng)是一勞永逸的。每次修改程序后都應(yīng)該重新進(jìn)行測試,以確保這些更改不會無意中“誤傷”某些不相關(guān)的行為。

稱為回歸測試的這類測試,一般是通過測試腳本自動進(jìn)行的。比如,如果你設(shè)計(jì)了一組100個(gè)輸入/輸出(I/O)測試,回歸測試腳本會自動執(zhí)行這100個(gè)測試,然后將輸出與一組“黃金標(biāo)準(zhǔn)”輸出進(jìn)行對比。每次對代碼的任何部分進(jìn)行修改時(shí),都要對包含被修改代碼的整個(gè)程序運(yùn)行整套回歸測試程序包,以確保修改過程中不會“誤傷”其余代碼。

1 2 3 > 
嵌入式 測試

相關(guān)閱讀

暫無數(shù)據(jù)

一周熱門