国产一区二区精品在线_午夜精品视频_亚洲国产高清高潮精品美女_久久久91_午夜精品视频_久久久久亚洲一区二区三区

嵌入式系統(tǒng)軟件測試及測試案例開發(fā)

來源:互聯(lián)網(wǎng)

點擊:2442

A+ A-

所屬頻道:新聞中心

關(guān)鍵詞:嵌入式系統(tǒng) 軟件測試 開發(fā)實踐

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

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

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

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

        何時測試以及如何測試

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

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

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

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

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

        測試什么

        因為沒有一個實際的測試集可以證明一個程序是正確的,因此關(guān)鍵問題變成了哪個測試子集最有可能檢測到最多的錯誤。選擇合適的測試?yán)痰膯栴}被稱為測試?yán)淘O(shè)計。雖然存在數(shù)十種測試案例的設(shè)計方法,但它們通常可歸為兩種截然不同的方法:功能測試和覆蓋測試。

        功能測試(也稱為黑匣子測試)選擇可評估實現(xiàn)與需求規(guī)格符合程度的測試。覆蓋測試(也稱為白匣子測試)選擇可執(zhí)行代碼某些部分的測試?yán)獭#ㄟ^后,將詳細(xì)討論這兩種方法。)

        這兩種測試都是對嵌入式設(shè)計進行嚴(yán)格測試所必需的。其中,覆蓋測試表示代碼的穩(wěn)定性,所以這種測試是用于已經(jīng)完成或?qū)⒔瓿傻漠a(chǎn)品的。另一方面,可在編寫要求文檔時,同時編寫功能測試。

        事實上,從功能測試開始入手,可以最大限度地降低重復(fù)勞動和重寫測試案例的工作。因此,在我看來,要先考慮功能測試。

        每個人都同意先編寫功能測試這個觀點,有人認(rèn)為,功能測試在系統(tǒng)集成階段(而不是在單元測試時)最有用。以下是整合功能測試和覆蓋測試方法的一個簡單處理流程:

       1. 找出哪些功能未被功能測試完全覆蓋。

       2.找出每個功能的哪些部分沒被執(zhí)行。

       3. 找出需要哪些額外的覆蓋測試。

       4.運行新增的額外測試。

        5.重復(fù)以上步驟。

        何時停止測試?

        最通用的停止標(biāo)準(zhǔn)(按可靠性排序)如下:

        1.老板命令停止測試

        2.新的測試周期找到的新缺陷少于X個

        3.在沒有發(fā)現(xiàn)任何新缺陷的情況下已經(jīng)滿足了某個覆蓋閥限

        無論你多么徹底地測試了程序,都無法保證找出所有缺陷。這引發(fā)了另一個有趣的問題:你可容忍多少缺陷?假設(shè)在極端軟件壓力測試過程中,你發(fā)現(xiàn)系統(tǒng)每進行大約20小時的測試就會鎖定。你仔細(xì)地檢查程序,但是仍無法找出這個錯誤的根源。這個時候你應(yīng)該交付產(chǎn)品嗎?

        多少測試才“足夠好”?這個我說不好。但遵循一些久經(jīng)時間考驗的規(guī)則總是好的:“如果方法Z預(yù)估Y行代碼中的缺陷少于X個,那么就可放心地發(fā)布程序了。”也許有一天會出現(xiàn)這種標(biāo)準(zhǔn)。編程行業(yè)仍然相對年輕,還達不到類似建筑業(yè)那樣的成熟度。

        許多厚厚的建筑手冊和大本規(guī)范是多年經(jīng)驗的結(jié)晶,它們可為建筑師、土木工程師和結(jié)構(gòu)工程師提供按工期在預(yù)算內(nèi)、建造一棟安全建筑所需的全部信息。偶爾雖仍會有建筑倒塌,但畢竟很少見。在編程行業(yè)制定出類似標(biāo)準(zhǔn)前,“多少測試才足夠?”就是個主觀判斷問題。

        選擇測試案例

        在理想情況下,你可能想要測試程序中每一個可能的行為。這意味著每一種可能的輸入組合或者每一種可能的判定路徑至少測試一次。

        這是個崇高但完全不切實際的目標(biāo)。比如,Glen Ford Myers在其《軟件測試的藝術(shù)》一書中就描述了一個只用五個判定條件就可有1014個不同執(zhí)行路徑的小程序。他指出,如果你能夠每五分鐘就能編寫、執(zhí)行并驗證一個測試?yán)痰脑挘敲慈鎻氐椎販y試完這個小程序需要10億年時間。

        顯然,理想的狀況是無法實現(xiàn)的,因此你必須采用接近這種理想狀況的標(biāo)準(zhǔn)。如你所見,功能測試與覆蓋測試相結(jié)合可以提供合理的次優(yōu)選擇方案。基本方法是選擇最有可能發(fā)現(xiàn)錯誤的測試(一部分功能測試,一部分覆蓋測試)。

        1.功能測試

        功能測試一般稱為黑匣子測試,因為在編寫功能測試的測試?yán)虝r并沒有涉及實際的代碼。換句話說,沒有觸及到“匣子內(nèi)”。嵌入式系統(tǒng)有輸入和輸出,并在輸入和輸出之間執(zhí)行某些算法。黑匣子測試是根據(jù)對哪些輸入應(yīng)該是可接受的以及這些輸入應(yīng)與輸出有何種關(guān)系的了解來進行的。黑匣子測試完全不了解輸入與輸出之間的算法是如何實現(xiàn)的。黑匣子測試的示例包括:

        壓力測試:有意使輸入通道、內(nèi)存緩沖器、磁盤控制器、存儲器管理系統(tǒng)等過載的測試

        邊界值測試:表示特定范圍內(nèi)的“邊界”的輸入(例如,對于整數(shù)輸入而言,是最大和最小整數(shù)以及-1、0、+1);以及應(yīng)使輸出在輸出范圍的類似邊界出現(xiàn)跨變的輸入值。

        異常測試:能觸發(fā)故障模式或異常模式的測試。

        錯誤推測:根據(jù)以前的軟件測試經(jīng)驗或者從測試類似程序獲得的經(jīng)驗進行的測試。

        隨機測試:通常,這是效率最低的一種測試方法,但卻仍然廣泛用于評估用戶界面代碼的魯棒性。

        性能測試:由于性能預(yù)期是產(chǎn)品要求的一部分,因此性能分析屬于功能測試的范疇。

        由于黑匣子測試僅取決于程序要求及其I/O行為,因此一旦完成功能要求的編寫,即可開發(fā)這類測試。這使得黑匣子測試?yán)痰拈_發(fā)可以與余下的系統(tǒng)設(shè)計同步進行。

        與所有測試一樣,功能測試應(yīng)被設(shè)計得具有破壞性,也即,要試圖證明程序無法工作。這包括使輸入通道過載、隨意地敲打鍵盤,以及故意地做程序員認(rèn)為會破壞其程序的所有事情。

     

        作為研發(fā)產(chǎn)品經(jīng)理,這是我的主要測試方法之一。如果產(chǎn)品在經(jīng)過40個小時的極限測試(abuse testing)后,并沒發(fā)現(xiàn)任何嚴(yán)重或者致命的缺陷,那么就可以發(fā)布這個產(chǎn)品了。如果找到了一個重大的缺陷,那么修正這個缺陷后,還必須重復(fù)前面的測試步驟。

        2.覆蓋測試

        功能測試的缺點是其很少執(zhí)行全部代碼。覆蓋測試則試圖規(guī)避這個缺點,它采用的方法是(理想地)確保每一條代碼語句、判定點或者判定路徑都至少被測試一次。覆蓋測試還可以顯示已經(jīng)訪問的數(shù)據(jù)空間大小。

        覆蓋測試也稱為白匣子測試或玻璃匣子測試,這類測試的設(shè)計需要全面了解軟件的實現(xiàn)方式,也就是說,它要“看到匣子里面”。白匣子測試?yán)昧嗽创a所能提供的方便。

     

        白匣子測試充分借力了程序員對程序API、內(nèi)部控制結(jié)構(gòu)的知識,分享了程序員的異常處理能力。由于白匣子測試取決于具體的實現(xiàn)決策,因此要到應(yīng)用代碼完成后,才能動手設(shè)計這類測試。

        從嵌入式系統(tǒng)的角度來看,覆蓋測試是最重要的測試,這是因為只要你把握已在多大程度上對代碼進行了測試,你就可很好地預(yù)警出現(xiàn)未發(fā)現(xiàn)缺陷的風(fēng)險。白匣子測試的示例包括:

        語句覆蓋:選擇的測試案例可以至少將程序中的每一條語句執(zhí)行一次。

        判定或分支覆蓋:選擇的測試?yán)炭梢允姑恳粋€分支(條件為真和假的路徑)至少執(zhí)行一次。

        條件覆蓋:選擇的測試?yán)炭梢詮娭婆卸ㄖ械拿恳粋€條件(項)都包含所有可能的邏輯值。

        理論上,白匣子測試可以利用或控制所需的任何對象來執(zhí)行其測試。因此,白匣子測試可能使用JTAG接口強制設(shè)定特定的存儲器值作為測試的一部分。實踐上,白匣子測試可以分析邏輯分析儀報告的執(zhí)行路徑。

        3.灰匣子測試

        由于白匣子測試可以深入代碼內(nèi)部,因此與黑匣子測試相比,這類測試的維護成本更高。只要要求和I/O關(guān)系保持穩(wěn)定,黑匣子測試就會一直有效;但每次修改代碼后,可能都需要重新進行白匣子測試。因此成本效益最高的白匣子測試一般是那些在不深入編程細(xì)節(jié)的情況下利用實現(xiàn)知識進行的測試。

        較少涉及代碼細(xì)節(jié)的測試有時也稱為灰匣子測試。當(dāng)與“錯誤推測”配合使用時,灰匣子測試非常有效。如果你知道(或者至少猜到)代碼中的弱點在哪里,那么你就可以設(shè)計出對這些弱點“施壓”的測試案例。

        因為這些測試覆蓋了代碼的特定部分,因此這些測試是灰匣子測試;因為這些測試是根據(jù)可能會出現(xiàn)哪些錯誤的猜測而選擇的,因此這些測試是錯誤推測測試。

        在整合新功能與穩(wěn)定的舊代碼庫時,這種測試策略非常有用。由于代碼庫已經(jīng)過全面的測試,因此將測試重點集中在新、舊代碼交集處可以起到事半功倍的效果。


    (審核編輯: 智匯小新)

    聲明:除特別說明之外,新聞內(nèi)容及圖片均來自網(wǎng)絡(luò)及各大主流媒體。版權(quán)歸原作者所有。如認(rèn)為內(nèi)容侵權(quán),請聯(lián)系我們刪除。

    国产一区二区精品在线_午夜精品视频_亚洲国产高清高潮精品美女_久久久91_午夜精品视频_久久久久亚洲一区二区三区
    <cite id="gqusq"><tbody id="gqusq"></tbody></cite>
    <strike id="gqusq"><tbody id="gqusq"></tbody></strike>
    <abbr id="gqusq"><rt id="gqusq"></rt></abbr>
  • <strike id="gqusq"><tbody id="gqusq"></tbody></strike>
    <ul id="gqusq"></ul>
    <center id="gqusq"><noscript id="gqusq"></noscript></center>
  • 欧美日韩一区在线播放| 久久精品人人| 精品视频免费观看| 亚洲三级电影在线观看| 亚洲aⅴ天堂av在线电影软件| 国产一区二区高清| 韩国亚洲精品| 自拍视频一区二区三区| 日本在线观看不卡| 精品国产乱码久久久久久郑州公司 | 另类欧美小说| 97久久人人超碰caoprom欧美| 亚洲理伦在线| 精品99视频| 欧美午夜久久| 欧美日韩a区| 一本一生久久a久久精品综合蜜| 久久99久久精品国产| 国产成人一区二区三区免费看| 欧美在线综合| 欧美亚洲一级| 久久伊人一区二区| 91成人免费观看| 久久另类ts人妖一区二区| 午夜影院日韩| 欧美一级播放| 国产精品一区二区三区四区五区| 久久激情中文| 99re视频在线| 久久人人爽爽人人爽人人片av| 国产精品日韩一区二区三区| 精品卡一卡二| 亚洲春色在线视频| 欧美不卡福利| 亚洲色诱最新| 狂野欧美一区| 免费久久久一本精品久久区| 久久久久久精| 亚洲欧美综合一区| 国产在线精品二区| 亚洲欧美网站| 精品免费日产一区一区三区免费| 精品一区二区国产| 亚洲欧美国产不卡| 欧美日韩一区综合| 亚洲美女毛片| 国产精品一国产精品最新章节| 久久精品网址| 精品视频在线观看| 欧美欧美天天天天操| 国产精品毛片| 亚洲一二区在线| 亚洲青色在线| 99精彩视频| 亚洲一区二区三区在线观看视频| 亚洲夜间福利| 国产精品久久亚洲| 一区二区三区久久网| 欧美午夜久久| 国产精品免费在线播放| 亚洲三级一区| 久久九九精品| 亚洲巨乳在线观看| 久久av一区二区三区| 日本一区网站| 国产亚洲二区| 亚洲欧洲日韩精品| 久久天堂国产精品| 色涩成人影视在线播放| 亚洲精品一级| 欧美不卡三区| 亚洲精品韩国| 欧美高清性xxxxhd| 一区二区三区四区国产| 精品一区二区日本| 亚洲激情亚洲| 欧美日韩高清免费| 中文高清一区| 一区二区精品免费视频| 91文字幕巨乱亚洲香蕉| 欧美黄在线观看| 极品校花啪啪激情久久| 亚洲黄色大片| 亚洲精品视频一二三| 成人一区二区三区四区| 国内精品视频在线播放| 欧美一区二区三区在线播放| 男人的天堂成人在线| 欧美久久久久久久| 欧美在线3区| 91视频99| 一区二区国产精品| 影音先锋欧美资源| 欧美精品123| 久久久久久亚洲精品不卡4k岛国| 女同一区二区| 日韩wuma| 精品国产区在线| 69174成人网| 亚洲美女91| 好看的av在线不卡观看| 日韩视频在线播放| 久久久99爱| 99三级在线| 51午夜精品| 国产欧美高清| 日韩视频精品| 国产一区美女| 国产精品高清一区二区三区| 视频一区三区| 日日骚一区二区网站| 欧美精品与人动性物交免费看| 91成人免费观看| 久久亚洲国产精品一区二区| 国产精品久久久久9999高清| 国户精品久久久久久久久久久不卡| 亚洲一区二区三区四区中文| 奇米888一区二区三区| 久久国产精品一区二区三区四区| 2022国产精品| 97人人干人人| 成人性色av| 国产日韩欧美二区| 亚洲三级免费| 国产一区二区高清| 久久久水蜜桃| 91超碰在线免费观看| yellow视频在线观看一区二区 | 视频一区国产精品| 亚洲精品成人三区| 欧美精品日本| 亚洲黑丝一区二区| 亚洲一区二区网站| 97se亚洲综合| 久久riav二区三区| 日韩福利视频| 欧美伊人影院| 亚洲韩日在线| 葵司免费一区二区三区四区五区| 成人高清在线观看| 欧美精品国产精品久久久 | 免费在线观看成人av| 久久一二三四| 欧美在线一二三区| 伊人久久青草| 中文日韩欧美| 国产精品免费一区二区三区四区| 免费电影一区| 欧美成人高清| 久久人人97超碰国产公开结果| 国产精品国产精品| 亚欧精品在线| 国产欧美日韩综合精品二区| 国产精华一区| 午夜精品亚洲一区二区三区嫩草| 日韩亚洲视频在线| 精品国产一二| 韩日成人av| 99久久久久国产精品免费| 日韩一二三区不卡在线视频| 亚洲人体大胆视频| 国产91色在线|亚洲| 亚洲一区美女| 麻豆精品传媒视频| 日本在线观看一区二区| 国产精品久久久久毛片大屁完整版 | 日韩在线电影一区| 国产一区二区你懂的| 欧美日韩一区二区视频在线| 精品1区2区3区4区| 精品国产免费久久久久久尖叫| 欧美久久一级| 精品一区二区三区国产| 伊人婷婷久久| 日本欧美色综合网站免费| 99精品福利视频| 日韩精品欧美专区| 久久久久国产精品一区二区| 亚洲日本无吗高清不卡| 99影视tv| 日韩亚洲一区在线播放| 色姑娘综合av| 成人av免费在线看| 亚洲激精日韩激精欧美精品| 欧洲精品久久| 成人激情av| 99国产精品视频免费观看一公开| 日韩高清国产精品| 成人午夜电影在线播放| 中文精品视频| 欧美午夜精品久久久久免费视| 你懂的视频在线一区二区| 亚洲永久字幕| 在线视频观看日韩| 日韩欧美一区二区三区四区五区 | 夜夜爽99久久国产综合精品女不卡| 99re在线观看| 噜噜噜在线观看免费视频日韩| 国内一区在线| 99视频在线免费观看|