如何進行嵌入式軟件的測試和認證
時間:2024-02-22 來源:華清遠見
嵌入式軟件是指被安裝在嵌入式設備中的軟件,例如數字電視、洗衣機、手機游戲等。嵌入式軟件經過分析、設計和編碼后,必須被燒入硬件環境才能運行,因此嵌入式軟件測試是針對嵌入式系統的特殊測試方法。
嵌入式軟件調試,主要有以下特點:
1、嵌入式軟件測試需要考慮特定硬件環境。嵌入式軟件常常集成在設備中,無法獨立運行。因此,在測試過程中需要考慮設備的特殊硬件和軟件環境,以確保測試的準確性和完整性。為此,測試人員需要了解嵌入式設備的硬件結構和工作方式,并進行針對性的測試。
2、嵌入式軟件測試需要考慮實時性。嵌入式軟件常常需要在實時性要求比較高的環境下運行,如航空航天、醫療設備等領域。在此情況下,嵌入式軟件測試需要對實時性進行測試,判斷程序的響應速度和完成任務的時間,以確保程序能夠及時、準確地響應用戶的指令。
3、嵌入式軟件測試需要考慮內存管理。嵌入式軟件產品為了滿足高可靠性的要求,不允許內存在運行時有泄漏等情況發生,因此嵌入式軟件測試除了對軟件進行性能測試、GUI測試、覆蓋分析測試是同普通軟件測試一樣都不可或缺之外,還要對內存進行測試。測試人員需要對程序的內存使用情況進行監控和調試,防止出現內存泄漏等問題。
4、嵌入式軟件測試需要多個測試階段。在開發過程中,測試人員需要對軟件進行單元測試、集成測試和系統測試等多個階段的測試,以確認軟件在不同環境下的穩定性和可靠性。這要求測試人員具有全面的測試技能和經驗。
5、嵌入式軟件測試需要進行正確的數據管理和記錄。測試人員必須正確記錄每個測試的結果及其測試環境,以便開發人員更好地理解測試結果并進行優化。
6、嵌入式軟件測試的最終目的是使嵌入式產品在能夠滿足所有功能的同時安全可靠的進行。嵌入式產品應用領域廣泛,除了需要具備良好的性能和功能外,還需要保證其安全可靠。因此,嵌入式軟件測試的最終目的是確保嵌入式產品能夠在各種環境下穩定運行,避免出現故障和漏洞等問題。
總之,嵌入式軟件測試是一種特殊的測試方法,其目的是為了提高嵌入式軟件的可靠性。由于嵌入式軟件的特殊性,測試人員需要考慮多個因素,包括特定硬件環境、實時性、內存管理、多個測試階段和正確的數據管理和記錄等。成功的嵌入式軟件測試需要測試人員具有全面的測試技能和經驗,并進行正確的測試管理和記錄,以確保嵌入式產品能夠滿足所有功能的同時安全可靠的進行。
軟件測試的對象
需求分析、概要設計、詳細設計、程序編碼等各階段所得到的文檔及源程序,包括需求規格說明、概要設計規格說明、詳細設計規格說明以及源程序。
嵌入式軟件的開發和測試也就與普通軟件的開發和測試策略有了很大的不同,嵌入式軟件系統是一種針對特殊任務、特殊環境而進行特殊設計的定制產品,有其專門的開發環境、軟硬件緊密結合、嚴格的實時要求等特點。使得嵌入式軟件測試與普通軟件測試雖有相似之處,但也有其自身獨特的特點。
嵌入式軟件測試
嵌入式軟件是一種比較特殊的軟件,軟件經過分析、設計、編碼后只有燒入硬件環境中才可以看見,比如數字電視的中間件軟件,洗衣機的自動控制軟件,手機游戲軟件等等。
1、嵌入式軟件測試
嵌入式軟件測試/嵌入式測試或叫交叉測試(cross-test),其目的與普通軟件測試是相同的,都是為了發現軟件缺陷,而后修正缺陷以提高軟件的可靠性。嵌入式系統安全性的失效可能會導致災難性的后果,即使非安全性失效,由于其應用場合特殊也會導致重大經濟損失。因此,往往嵌入式軟件對可靠性的要求比普通軟件高。這就要求對嵌入式軟件進行嚴格的測試、確認和驗證,以提高產品的可靠性。
2、嵌入式軟件測試的特點◇ 嵌入式軟件測試是在特定的硬件環境下才能運行的軟件。◇ 嵌入式軟件測試除了要保證嵌入式軟件在特定環境下運行的高可靠性,還要保證嵌入式軟件系統的實時性。◇ 嵌入式軟件產品為了滿足高可靠性的要求,不允許內存在運行時有泄漏等情況發生,因此嵌入式軟件測試除了對軟件進行性能測試、GUI測試、覆蓋分析測試是同普通軟件測試一樣都不可或缺之外,還要對內存進行測試。◇ 嵌入式產品不同于一般軟件產品,在嵌入式軟件和硬件集成測試完成之后,并不代表測試全部完成,在第一件嵌入式產品生產出來之后,還需對其進行產品測試。
◇ 嵌入式軟件測試的最終目的是使嵌入式產品在能夠滿足所有功能的同時安全可靠的進行。
由于嵌入式系統的自身特點,如實時性(Real-timing),內存不豐富,I/O通道少,開發工具昂貴,并且與硬件緊密相關,CPU種類繁多,等等。嵌入式軟件的開發和測試也就與一般商用軟件的開發和測試策略有了很大的不同,可以說嵌入式軟件是最難測試的一種軟件。
嵌入式系統由于上述特點,決定了不同的嵌入式系統必須有不同的測試方法。1、 嵌入式軟件測試的各個階段測試的環境是不一樣的嵌入式軟件開發和運行的環境是分開的,嵌入式軟件開發環境往往是交叉開發環境。因此,各個階段測試的環境是不一樣的。● 交叉開發
交叉開發是指先在一臺通用PC上進行軟件的編輯、編譯與連接,然后下載到嵌入式設備中運行調試的開發過程。通用PC稱為宿主機,嵌入式設備稱為目標機。
● 交叉開發環境
交叉開發環境(Cross Development Environment)是指編譯、連接和調試嵌入式應用軟件的環境。它與運行嵌入式應用軟件的環境有所不同,通常采用“宿主機——目標機”模式。
開放的交叉開發環境的典型代表是:GNU工具鏈。它能夠支持X86、ARM、MIPS、PowerPC等多種處理器。
● 交叉編譯
在一種平臺上編譯出能夠在另一種平臺(體系結構不同)上運行的程序。用來編譯這種程序的編譯器就叫做交叉編譯器。
● GUN工具鏈
GNU工具鏈 (GNU Toolchain) 是一組用于開發應用程序和操作系統的編程工具的集合,這些工具構成了一個完整的系統。GNU工具鏈包括GCC、GNU Binutils、GNUm4、GNU Autoconf和GNU make等部分。
1.1單元測試階段所有的單元測試基本都可以在宿主機環境下進行,只有個別情況下會特別指定單元測試要直接在目標機環境下進行。應該最大化在宿主機環境下進行軟件測試的比例,通過盡可能小的目標單元訪問其指定的目標單元界面,提高單元的有效性和針對性。在宿主機平臺上運行測試的速度比在目標機平臺上快得多,當在宿主機平臺上完成測試后可以在目標機環境下重復做一次簡單的確認測試,確認測試結果在宿主機和目標機上沒有不同**。在目標機環境下進行確認測試將確定一些未知的、未預料到的、未說明的宿主機與目標機的不同之處**,例如,目標機編譯器可能有缺陷,但在宿主機編譯器上沒有。
1.2 集成測試階段軟件集成也可在宿主機環境下完成,在宿主機平臺上模擬目標環境運行,在此級別上的確認測試可以確定一些與環境有關的問題,比如內存定位和分配方面的一些錯誤。在宿主機環境上的集成測試的使用,依賴于目標系統的具體功能有多少。有些嵌入式系統與目標機環境耦合的非常緊密,這種情況下就不適合在宿主機環境下進行集成。對于一個大型的軟件開發而言,集成可以分幾個級別。低級別的軟件集成在宿主機平臺上完成有很大優勢,級別越高,集成越依賴于目標環境。
1.3 系統測試和確認測試所有的系統測試和確認測試必須在目標機環境下執行。當然在宿主機上開發和執行系統測試,然后移植到目標機環境重復執行是很方便的。對目標系統的依賴性會妨礙將宿主機上的系統測試移植到目標系統上,況且只有少數開發者會卷入系統測試,所以有時放棄在宿主機上執行系統測試可能更方便。確認測試最終必須在目標機環境中進行,因為系統的確認必須在真實系統下完成,而不能在宿主機環境下模擬,這關系到嵌入式軟件的最終使用
2、嵌入式軟件測試的復雜多樣因為嵌入式系統的一個突出的特點,是其專用性,即一個嵌入式系統只進行特定的一項或幾項工作,嵌入式軟件運行的平臺都是為進行這些工作而開發出來的專用硬件電路,他們的體系結構、硬件電路,甚至所用的元器件都是不一樣的,所以嵌入式軟件運行的平臺也是復雜多樣的。由于開發平臺的復雜多樣性,使得嵌入式軟件的測試從測試環境的建立到測試用例的編寫也是復雜多樣的。與不同的開發平臺對應的嵌入式軟件是肯定不相同的。嵌入式軟件測試在一定程度的上并不只是對嵌入式軟件的測試,很多情況下是對嵌入式軟件在開發平臺中同硬件的兼容性測試。因此,對于任何一套嵌入式軟件系統,都需要有其自己的測試、創建其自己的測試環境、編寫其自己的測試用例。
3、嵌入式軟件測試中對實時性有嚴格要求由于嵌入式系統的實時性,決定了嵌入式系統的運行時間也是受嚴格限制的。嵌入式軟件在測試時應當充分考慮系統實時響應的問題,很多嵌入式系統會要求系統的響應時間應在多少毫秒之內。在測試有嚴格響應時間要求的嵌入式系統時,要做負載測試。
4、嵌入式軟件測試需要進行插樁測試嵌入式軟件最終的測試需要在目標機平臺上進行,在對目標機進行測試時,我們需要對在宿主機上編譯通過的代碼進行插樁處理。插樁完成之后,需要重新對代碼進行編譯,如果編譯通過,就可以將編譯好的代碼下載到目標機上執行。在目標機執行程序的時候,需要將插樁時預測好的數據返回到宿主機上,因此,宿主機和目標機上要有能夠相互傳遞數據的網線或者串口線,宿主機上同時要有能夠處理返回的數據的處理程序或軟件。插樁技術:指在保證原有程序邏輯完整性的基礎上,在程序中插入探針,通過探針采集代碼中的信息(方法本身、方法參數值、返回值等)在特定的位置插入代碼段,從而收集程序運行時的動態上下文信息。
5、嵌入式軟件對系統的可靠性和安全性要求比一般的軟件系統高因為嵌入式軟件對系統的可靠性和安全性要求比一般的軟件系統高,所以還需要進行系統的可靠性測試。對于不同的嵌入式系統,需要制定相應的符合系統需求的可靠級別,在進行可靠性測試時應該將系統的可靠性級別考慮進去。

