先來說下ASPICE項目實操中遇到的問題:
底層軟件在做單元測試時,從ASPICE角度看,該如何做?要不要在目標控制器或開發板中去測?尤其是復雜驅動,如果不在將程序下載到硬件中,該如何測試?如果帶著硬件一起做,那和集成測試又有什么區別?后續的集成測試和功能測試還有必要做嗎?
我們的思路:
1)在ASPICE過程域“SWE.4 Software Unit Testing”中,單元測試(Unit Testing)是對軟件單元進行隔離測試的過程,目的是驗證軟件單元的功能和性能是否符合設計要求,以及檢查代碼中的錯誤和缺陷。其中并沒有規定單元測試的測試環境。
2)當ASPICE中定義的軟件單元包含與芯片相關的代碼時,單元測試通常會覆蓋這部分代碼。這意味著在進行單元測試時,已經對與芯片相關的代碼進行了部分集成測試。然而,需要注意的是,單元測試主要關注軟件單元的內部邏輯和功能,而不是與其他軟件單元或硬件組件的集成。
3)單元測試的驗證內容主要包括:單元功能邏輯、接口、性能、覆蓋率等。
4)軟件集成測試主要測試的是組件之間或子系統之間的接口(信號傳遞)是否正確,集成后的子系統或整個系統的表現是否符合策略定義。
5)通過實施單元測試活動,可以盡早發現軟件開發過程中的錯誤和缺陷,促進代碼質量的提升,降低后期階段發現和修復問題的成本,從而提高軟件產品的質量和可靠性。實踐過程中,開發前期,硬件往往滯后于軟件開發,且硬件有專門的開發質量標準。
綜上,結論:①單元測試不需要過多關注硬件,應更多精力放在軟件本身上。與硬件相關的交互可以在軟件集成測試中開展。這樣整個的效率和價值,以及開發過程的順暢性會更高。②單元測試的測試環境為純軟的放著環境,對于復雜驅動這類與硬件相關的驅動單元,進行單元測試時需要模擬硬件環境。這可以通過使用模擬器(仿真器,指模擬的軟件仿真環境)或樁函數(Stub Functions)來實現。模擬器可以模擬硬件的行為,而樁函數則用于替代那些與硬件交互的函數,以便在測試環境中模擬其行為。
你們在實際項目中是如何實施的呢?歡迎在評論區留言。