• <strike id="aymay"></strike>
    <strike id="aymay"></strike>
    <ul id="aymay"><dfn id="aymay"></dfn></ul>
    <ul id="aymay"><sup id="aymay"></sup></ul>
  • <del id="aymay"></del>

    嵌入式系統的軟件測試以及測試案例的開發

    2013-10-31 16:28 來源:互聯網 作者:洛小辰

    測試是傳統軟件開發的最后一步。整個軟件開發過程,需要收集要求、進行高層次的設計、詳細設計、創建代碼、進行部分單元測試,然后集成,最后才開始最終測試。

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

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

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

    何時測試以及如何測試

    從圖1可以看出,在可行的條件下,測試應盡早展開。一般來講,最早的測試是由最初的開發人員進行的模塊或單元測試。遺憾的是,開發人員大多對如何建構一整套測試例程以進行測試所知不足。由于精心設計的測試例程通常直到集成測試時才能使用,因此許多在單元測試過程中就能找出的缺陷直到集成測試時才會被發現。比如,硅谷的一家大型網絡設備廠商為找出其軟件集成問題的關鍵原因,進行了一項研究。這家廠商發現,在項目集成階段找出的缺陷中,有70%是由在集成之前從沒被執行過的程序所產生的。


    2

    圖1:改正問題的成本。


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

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

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

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

    測試什么

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

    功能測試(也稱為黑匣子測試)選擇可評估實現與需求規格符合程度的測試。覆蓋測試(也稱為白匣子測試)選擇可執行代碼某些部分的測試例程。(過后,將詳細討論這兩種方法。)

    這兩種測試都是對嵌入式設計進行嚴格測試所必需的。其中,覆蓋測試表示代碼的穩定性,所以這種測試是用于已經完成或將近完成的產品的。另一方面,可在編寫要求文檔時,同時編寫功能測試。

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

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

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

    找出每個功能的哪些部分沒被執行。

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

    運行新增的額外測試。

    重復以上步驟。

    何時停止測試?

    最通用的停止標準(按可靠性排序)如下:

    老板命令停止測試

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

    在沒有發現任何新缺陷的情況下已經滿足了某個覆蓋閥限

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

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

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

    1 2 > 
    嵌入式 測試

    相關閱讀

    暫無數據

    一周熱門

    主站蜘蛛池模板: 欧美一区二区精品| 日韩麻豆国产精品欧美| 99精品福利国产在线| 国产精品v欧美精品v日韩| 国产精品人人做人人爽人人添| 亚洲天堂久久精品| 国产亚洲精品影视在线产品| 日韩熟女精品一区二区三区| 中文字幕精品亚洲无线码一区| 2020久久精品国产免费| 国精品午夜福利视频不卡麻豆| 国产精品久久久久久福利69堂| 99久久99久久精品国产片| 日韩AV毛片精品久久久| 国产成人精品无码一区二区| 亚洲欧美精品伊人久久| 亚洲国产人成精品| 精品久久久久久中文字幕| 精品一区二区三区色花堂| 亚洲精品国产精品乱码不卡| 精品偷自拍另类在线观看| 9191精品国产免费久久| 亚洲?V无码乱码国产精品| 精品国产第1页| 日本免费精品一区二区三区| 国产精品91av| 亚洲精品视频在线看| 国产成人精品曰本亚洲79ren| 2021久久国自产拍精品| 欧洲精品码一区二区三区免费看| 国产精品熟女高潮视频| 日本精品一区二区三区在线视频| 久久91精品国产91久久户| 亚洲成人国产精品| 国产精品成人免费观看| 99国产欧美精品久久久蜜芽| 最新国产在线精品观看| 国产精品亚洲美女久久久 | 99精品在线免费| 99热精品久久只有精品| 国产精品狼人久久久久影院|