嵌入式軟體測試與一般軟體測試之異同研究

2021-09-30 23:06:22 字數 4587 閱讀 8654

摘要:隨著計算機技術的普及,軟體系統已經深入到生活的各個方面,從普通的計算機軟體,到銀行或超市的終端系統,甚至到手機的軟體系統。對軟體的質量要求也在不斷提高,軟體測試及其技術也有了飛速發展。在對軟體測試技術相關基本概念研究解析的基礎上,分析軟體測試起源與發展,保證軟體產品的質量、提高產品的可靠性。對於嵌入式軟體系統,因其多樣性,基於作業系統,使用的開發環境,微控制器都是日益繁多的,所以嵌入式軟體測試與普通軟體測試相比有其自身的特點。

關鍵字:軟體測試;嵌入式測試;軟體質量

1、引言

嵌入式軟體的開發和測試也就與普通軟體的開發和測試策略有了很大的不同,嵌入式軟體系統是一種針對特殊任務、特殊環境而進行特殊設計的定製產品,有其專門的開發環境、軟硬體緊密結合、嚴格的實時要求等特點。使得嵌入式軟體測試與普通軟體測試雖有相似之處,但有也有其自身獨特的特點。

2、軟體測試和嵌入式軟體測試

2.1 軟體測試的定義及目的

軟體測試,即software testing。軟體測試的定義有很多,在2023年出版的一本經典著作《軟體測試藝術》(the art of software testing)中,glemford

j.myers曾經對軟體測試下過如下定義:軟體測試就是為了發現錯誤而執行程式或系統的過程。雖然它不太完善,但放在當時的情況下是可以說的通的。

隨著計算機和軟體技術的發展,軟體應用的複雜性和規模的不斷擴大,軟體測試技術的研究也取得了很大的突破。早期的定義已經不適用了,許多專家對軟體測試提出了各種各樣的定義。綜合起來,我們可以定義「軟體測試是由乙個程式的行為在有限測試用例集合上,針對期望的行為的動態驗證組成,測試用例是從通常的無限執行域中適當選取的」。

長期以來對軟體測試存在著兩種不同的認識。一種觀點認為,軟體軟體測試的目的是證明 軟體的正確性;而另一種觀點則認為,軟體測試的目的是盡可能尋找軟體中隱藏的錯誤和缺陷。

2.2 軟體測試的特點

1)大多數硬體實驗失敗的方式和方法是固定的,而軟體測試失敗則是毫無規律的,探索所有軟體測試失敗的模式是不可能的。

2)軟體方面的許多缺陷都源於設計和實現上的錯誤,而不是源於生產製造方面的缺陷。

3)軟體質量保證的關鍵在於我們如何讓避免產生錯誤和消除已經產生的錯誤,是程式中的錯誤密度達到盡可能低的程度。

4)軟體測試是乙個動態的執行過程,體現在輸入、行為和行為的輸出結果上。

5)軟體測試是乙個有限的集合。

2.3 嵌入式軟體測試的定義及目的

嵌入式軟體是一種比較特出的軟體,軟體經過分析,設計,編碼後只有燒入硬體環境中才可以看見,比如數碼電視的中介軟體軟體,洗衣機的自動控制軟體,手機遊戲軟體等等。嵌入式軟體測試/嵌入式測試或叫交叉測試(cross-test)的目的與普通軟體測試是相同的,都是為了發現軟體缺陷,而後修正缺陷以提高軟體的可靠性。嵌入式系統安全性的失效可能會導致災難性的後果,即使非安全性失效,由於其應用場合特殊也會導致重大經濟損失。因此,往往嵌入式軟體對可靠性的要求比普通軟體高。這就要求對嵌入式軟體進行嚴格的測試、確認和驗證,以提高產品的可靠性。

2.4 嵌入式軟體測試的特點

嵌入式軟體測試與普通軟體測試相比,有其自身的特點:

嵌入式軟體測試是在特定的硬體環境下才能執行的軟體。

嵌入式軟體測試除了要保證嵌入式軟體在特定環境下執行的高可靠性,還要保證嵌入式軟體系統的實時性。

嵌入式軟體產品為了滿足高可靠性的要求,不允許內存在執行時有洩漏等情況發生,因此嵌入式軟體測試除了對軟體進行效能測試、gui測試、覆蓋分析測試是同普通軟體測試一樣都不可或缺之外,還要對記憶體進行測試。

嵌入式產品不同於一般軟體產品,在嵌入式軟體和硬體整合測試完成之後,並不代表測試全部完成,在第一件嵌入式產品生產出來之後,還需對其進行產品測試。

嵌入式軟體測試的最終目的是使嵌入式產品在能夠滿足所有功能的同時安全可靠的進行。

3、嵌入式軟體測試與普通軟體測試的異同點

3.1 嵌入式軟體測試與普通軟體測試的相同點

嵌入式軟體測試作為一種特殊的軟體測試,它的目的和原則與普通軟體測試是相同的,都是為了發現軟體缺陷,而後修正缺陷以提高軟體的可靠性。它們的中心任務都是驗證和確認其實際實現是否符合需求要求,在驗證過程中發現系統缺陷。

嵌入式軟體測試與普通軟體測試具有相同的資訊流,如圖3-1。

圖3-1 軟體測試資訊流

嵌入式軟體測和普通軟體測試物件相同,包括軟體中所有內容,貫穿軟體定義與開發的整個過程。也就是說,需求分析、概要設計、詳細設計、程式編碼等各階段所得到的文件及源程式,包括需求規格說明、概要設計規格說明、詳細設計規格說明以及源程式,都應當稱為軟體測試的物件。

3.2 嵌入式軟體測試與普通軟體測試的區別

由於嵌入式系統的自身特點,如實時性(real-timing),記憶體不豐富,i/o通道少,開發工具昂貴,並且與硬體緊密相關cpu種類繁多,等等。嵌入式軟體的開發和測試也就與一般商用軟體的開發和測試策略有了很大的不同,可以說嵌入式軟體是最難測試的一種軟體。

嵌入式系統由於自己本身的特點,如實時性強、記憶體不豐富、i/o通道少、開發工具昂貴並且與硬體緊密相關、cpu種類繁多等等,決定了不同的嵌入式系統必須有不同的測試方法。

3.2.1 嵌入式軟體測試的各個階段測試的環境是不一樣的

嵌入式軟體開發和執行的環境是分開的,嵌入式軟體開發環境往往是交叉開發環境。因此,各個階段測試的環境是不一樣的。

單元測試階段:所有的單元測試都可以在宿主機環境下進行,只有個別情況下會特別指定單元測試要直接在目標機環境下進行。應該最大化在宿主機環境下進行軟體測試的比例,通過盡可能小的目標單元訪問其指定的目標單元介面,提高單元的有效性和針對性。

在宿主機平台上執行測試的速度比在目標機平台上快得多,當在宿主機平台上完成測試後可以在目標機環境下重複做一次簡單的確認測試,確認測試結果在宿主機和目標機上沒有不同。在目標機環境下進行確認測試將確定一些未知的、未預料到的、未說明的宿主機與目標機的不同之處,例如,目標機編譯器可能有缺陷,但在宿主機編譯器上沒有。

整合測試階段:軟體整合也可在宿主機環境下完成,在宿主句平台上模擬目標環境執行,在此級別上的確認測試可以確定一些與環境有關的問題,比如記憶體定位和分配方面的一些錯誤。

在宿主機環境上的整合測試的使用,依賴於目標系統的具體功能有多少。有些嵌入式系統與目標機環境耦合的非常緊密,這種情況下就不適合在宿主機環境下進行整合。對於乙個大型的軟體開發而言,整合可以分幾個級別。低階別的軟體整合在宿主機平台上完成有很大優勢,級別越高,整合越依賴於目標環境。

系統測試和確認測試:所有的系統測試和確認測試必須在目標機環境下執行。當然在宿主機上開發和執行系統測試,然後移植到目標機環境重複執行是很方便的。對目標系統的依賴性會妨礙將宿主機上的系統測試移植到目標系統上,況且只有少數開發者會捲入系統測試,所以有時放棄在宿主機上執行系統測試可能更方便。

確認測試最終必須在目標機環境中進行,因為系統的確認必須在真實系統下完成,而不能在宿主機環境下模擬,這關係到嵌入式軟體的最終使用。

3.2.2 嵌入式軟體測試的複雜多樣

因為嵌入式系統的乙個突出的特點,是其專用性,即乙個嵌入式系統只進行特定的一項或幾項工作,嵌入式軟體執行的平台都是為進行這些工作而開發出來的專用硬體電路,他們的體系結構、硬體電路,甚至所用的元器件都是不一樣的,所以嵌入式軟體執行的平台也是複雜多樣的。

由於開發平台的複雜多樣性,使的嵌入式軟體的測試從測試環境的建立到測試用例的編寫也是複雜多樣的。與不同的開發平台對應的嵌入式軟體是肯定不相同的。嵌入式軟體測試在一定程度的上並不只是對嵌入式軟體的測試,很多情況下是對嵌入式軟體在開發平台中同硬體的相容性測試。因此,對於任何一套嵌入式軟體系統,都需要有其自己的測試、建立其自己的測試環境、編寫其自己的測試用例。

3.2.3 嵌入式軟體測試中對實時性有嚴格要求

由於嵌入式系統的實時性,決定了嵌入式系統的執行時間也是受嚴格限制的。嵌入式軟體在測試時應當充分考慮系統實時響應的問題,很多嵌入式系統會要求系統的響應時間應在多少毫秒之內。在測試有嚴格響應時間要求的嵌入式系統時要做負載測試。

3.2.4 嵌入式軟體測試需要進行插樁測試

3.2.5 嵌入式軟體對系統的可靠性和安全性要求比一般的軟體系統高

因為嵌入式軟體對系統的可靠性和安全性要求比一般的軟體系統高,所以還需要進行系統的可靠性測試。對於不同的嵌入式系統,需要制定相應的符合系統需求的可靠級別,在進行可靠性測試時應該將系統的可靠性級別考慮進去。

一些嵌入式系統,比如工廠車間的某些控制系統,他們要在電磁很強的惡劣的環境下可靠的工作,而且要保證操作人員的安全。但是對於手機軟體來說,他的可靠性和安全性就不如工廠車間的車床控制系統要求的高。

***********************************=分割線******************************==

嵌入式軟體測試

嵌入式軟體測試 嵌入式軟體測試 嵌入式測試或叫交叉測試 cross test 的日的與非嵌入式軟體是相同的。但是,在嵌入式系統設計中,軟體正越來越多地取代硬體,以降低系統的成本,獲得更大的靈活性,這就需要使用更好的測試方法和工具進行嵌入式和實時軟體的測試。通常嵌入式系統對可靠性的要求比較高。嵌入式系...

嵌入式軟體測試

如何在目標板上實時測試應用程式 為什麼嵌入式系統測試困難?在目標板上測試面臨的系列問題 2 如何累積可重複自動執行的測試 3 如何盡可能減少人工工作 4 如何減少記憶體不夠的問題 這些都是經常碰到但難以解決的問題。隨著專案 越來越大,開發人員數量和 數量都變多,完全懂得目標硬體和軟體工作原理的可能僅...

嵌入式軟體測試策略

在嵌入式領域目標系統的應用系統日趨複雜,而由於競爭要求產品快速上市,開發技術日新月異,同時硬體發展的日益穩定,而軟體故障卻日益突出,軟體的重要性逐漸引起人們的重視,越來越多的人認識到嵌入式系統的測試勢在必行。提到嵌入式軟體測試,首先要簡單介紹一些軟體工程的一些觀點,現在,被普遍接受的軟體的定義是 軟...