- 授課品牌:
深圳達(dá)內(nèi)教育
- 機(jī)構(gòu)級(jí)別:代理會(huì)員
- 信譽(yù)等級(jí):
學(xué)校評(píng)價(jià)(我要提問/點(diǎn)評(píng))
- 學(xué)校被點(diǎn)評(píng):0 次
- 好評(píng)(0%)
- 中評(píng)(0%)
- 差評(píng)(0%)
資料認(rèn)證
未通過身份證認(rèn)證
未通過辦學(xué)許可認(rèn)證
- 學(xué)校瀏覽人次:次
- 加盟時(shí)間:2020年11月05日
嵌入式軟件測試基礎(chǔ)知識(shí)
測試是傳統(tǒng)軟件開發(fā)的最后一步。整個(gè)軟件開發(fā)過程,需要收集要求、進(jìn)行高層次的設(shè)計(jì)、詳細(xì)設(shè)計(jì)、創(chuàng)建代碼、進(jìn)行部分單元測試,然后集成,最后才開始最終測試。今天,深圳軟件測試(sz.qa.tedu.cn)專家就給大家說說嵌入式軟件測試基礎(chǔ)知識(shí)。
最佳的開發(fā)實(shí)踐應(yīng)包含代碼檢查這個(gè)步驟。然而代碼檢查一般只能找出70%的系統(tǒng)錯(cuò)誤,因此完美的測試環(huán)節(jié)絕對(duì)必不可少。測試就像個(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)識(shí)到將這個(gè)關(guān)鍵步驟放在項(xiàng)目末期極不明智,因而主張同步地編寫測試程序和應(yīng)用程序。
嵌入式系統(tǒng)軟件測試在諸多方面都與應(yīng)用軟件測試一樣。不過,應(yīng)用測試與嵌入式系統(tǒng)測試之間還是存在一些重要差異。嵌入式開發(fā)人員一般會(huì)用到基于硬件的測試工具,而這類工具通常不會(huì)用于應(yīng)用開發(fā)過程中。此外,嵌入式系統(tǒng)一般都有些獨(dú)一無二的特性,這些特性應(yīng)該在測試計(jì)劃中得以體現(xiàn)。本文將介紹測試和測試案例開發(fā)的基礎(chǔ)知識(shí),并指出整個(gè)嵌入式系統(tǒng)測試工作的特有細(xì)節(jié)。
何時(shí)測試以及如何測試
可行的條件下,測試應(yīng)盡早展開。一般來講,最早的測試是由最初的開發(fā)人員進(jìn)行的模塊或單元測試。遺憾的是,開發(fā)人員大多對(duì)如何建構(gòu)一整套測試?yán)桃赃M(jìn)行測試所知不足。由于精心設(shè)計(jì)的測試?yán)掏ǔV钡郊蓽y試時(shí)才能使用,因此許多在單元測試過程中就能找出的缺陷直到集成測試時(shí)才會(huì)被發(fā)現(xiàn)。比如,硅谷的一家大型網(wǎng)絡(luò)設(shè)備廠商為找出其軟件集成問題的關(guān)鍵原因,進(jìn)行了一項(xiàng)研究。這家廠商發(fā)現(xiàn),在項(xiàng)目集成階段找出的缺陷中,有70%是由在集成之前從沒被執(zhí)行過的程序所產(chǎn)生的。
單元測試:開發(fā)人員在單獨(dú)進(jìn)行模塊級(jí)測試時(shí)一般是編寫存根代碼(stub code)取代余下的系統(tǒng)軟硬件。在開發(fā)周期的這個(gè)環(huán)節(jié),測試主要側(cè)重于代碼的邏輯性能。
通常,開發(fā)人員會(huì)分別使用某些平均值、高值或低值、以及某些超出范圍的值(以測試代碼的異常處理功能)進(jìn)行測試。但這些基于“黑匣子”的測試僅能對(duì)模塊中整個(gè)代碼的一部分進(jìn)行測試。
回歸測試:測試不應(yīng)是一勞永逸的。每次修改程序后都應(yīng)該重新進(jìn)行測試,以確保這些更改不會(huì)無意中“誤傷”某些不相關(guān)的行為。
稱為回歸測試的這類測試,一般是通過測試腳本自動(dòng)進(jìn)行的。比如,如果你設(shè)計(jì)了一組100個(gè)輸入/輸出(I/O)測試,回歸測試腳本會(huì)自動(dòng)執(zhí)行這100個(gè)測試,然后將輸出與一組“黃金標(biāo)準(zhǔn)”輸出進(jìn)行對(duì)比。每次對(duì)代碼的任何部分進(jìn)行修改時(shí),都要對(duì)包含被修改代碼的整個(gè)程序運(yùn)行整套回歸測試程序包,以確保修改過程中不會(huì)“誤傷”其余代碼。
測試什么
因?yàn)闆]有一個(gè)實(shí)際的測試集可以證明一個(gè)程序是正確的,因此關(guān)鍵問題變成了哪個(gè)測試子集最有可能檢測到最多的錯(cuò)誤。選擇合適的測試?yán)痰膯栴}被稱為測試?yán)淘O(shè)計(jì)。雖然存在數(shù)十種測試案例的設(shè)計(jì)方法,但它們通常可歸為兩種截然不同的方法:功能測試和覆蓋測試。
功能測試(也稱為黑匣子測試)選擇可評(píng)估實(shí)現(xiàn)與需求規(guī)格符合程度的測試。覆蓋測試(也稱為白匣子測試)選擇可執(zhí)行代碼某些部分的測試?yán)獭?過后,將詳細(xì)討論這兩種方法。)
這兩種測試都是對(duì)嵌入式設(shè)計(jì)進(jìn)行嚴(yán)格測試所必需的。其中,覆蓋測試表示代碼的穩(wěn)定性,所以這種測試是用于已經(jīng)完成或?qū)⒔瓿傻漠a(chǎn)品的。另一方面,可在編寫要求文檔時(shí),同時(shí)編寫功能測試。
事實(shí)上,從功能測試開始入手,可以最大限度地降低重復(fù)勞動(dòng)和重寫測試案例的工作。因此,在我看來,要先考慮功能測試。
每個(gè)人都同意先編寫功能測試這個(gè)觀點(diǎn),有人認(rèn)為,功能測試在系統(tǒng)集成階段(而不是在單元測試時(shí))最有用。以下是整合功能測試和覆蓋測試方法的一個(gè)簡單處理流程:
1.找出哪些功能未被功能測試完全覆蓋。
2.找出每個(gè)功能的哪些部分沒被執(zhí)行。
3.找出需要哪些額外的覆蓋測試。
4.運(yùn)行新增的額外測試。
5.重復(fù)以上步驟。
何時(shí)停止測試?
最通用的停止標(biāo)準(zhǔn)(按可靠性排序)如下:
1.老板命令停止測試
2.新的測試周期找到的新缺陷少于X個(gè)
3.在沒有發(fā)現(xiàn)任何新缺陷的情況下已經(jīng)滿足了某個(gè)覆蓋閥限
無論你多么徹底地測試了程序,都無法保證找出所有缺陷。這引發(fā)了另一個(gè)有趣的問題:你可容忍多少缺陷?假設(shè)在極端軟件壓力測試過程中,你發(fā)現(xiàn)系統(tǒng)每進(jìn)行大約20小時(shí)的測試就會(huì)鎖定。你仔細(xì)地檢查程序,但是仍無法找出這個(gè)錯(cuò)誤的根源。這個(gè)時(shí)候你應(yīng)該交付產(chǎn)品嗎?
最后,歡迎你來學(xué)習(xí)我們的軟件測試零基礎(chǔ)入門教程,如果你對(duì)軟件測試學(xué)習(xí)有任何疑問,請(qǐng)加入我們的學(xué)習(xí)交流群。