你怎么知道你的軟件正在按照它應該的方式工作? 你測試一下! 然而,真正的問題是“你如何測試它?”。在過去,嵌入式開發人員過去只是手動測試他們的軟件。然而,手動測試并不是測試軟件的好方法。大量的測試用例、測試所需的時間和勞動強度幾乎保證了軟件不會得到充分的測試。
改進嵌入式軟件測試的解決方案是使用自動化測試。自動化測試可以有多種形式,但現在,我們將專注于單元測試。單元測試是“一種軟件測試方法,通過該方法對各個源代碼單元(一個或多個程序模塊的集合以及相關的控制數據、使用程序和操作程序)進行測試,以確定它們是否適合使用”。今天的文章將探討開發和運行嵌入式軟件單元測試的三個技巧。
技巧1 – 將您的軟件組織成組件進行測試
通常,嵌入式軟件程序將由幾十個模塊組成,這些模塊被放入一個程序文件夾中。今天,更常見的是看到一些文件夾組織,其中模塊按應用程序、中間件和驅動程序組織。像這樣的程序組織結構是可以的,但在考慮單元測試時,按組件管理程序會容易得多。
組件是封裝了一組相關功能[2]、數據和測試用例的模塊。例如,為 FIR 濾波器編寫應用程序組件的開發人員可能會按如下方式組織它:
FIR Filter
– include
— fir.h
– source
— fir.c
– tests
— fir_test.c
構建這樣的文件夾結構起初可能看起來有點痛苦。但是,它保留了組件執行其目的所需的所有軟件模塊和測試用例!此外,像這樣組織組件使組件易于移植,或者更重要的是,更易于在其他軟件項目中重用。
技巧2 – 使用測試驅動開發 (TDD) 開發軟件
敏捷運動為嵌入式開發人員提供了許多流程和工具,旨在幫助他們更快地開發出高質量的軟件。 敏捷產生的一種方法是測試驅動開發,通常稱為 TDD。 TDD“是一個軟件開發過程,依賴于在軟件完全開發之前將軟件需求轉換為測試用例,并通過針對所有測試用例重復測試軟件來跟蹤所有軟件開發”。
一般來說,TDD 通過專注于測試改變了開發人員編寫軟件的方式案例。開發人員創建一個測試用例,使其失敗,然后編寫通過測試用例所需的代碼。通過這樣做,他們正在構建測試用例,他們知道如果將錯誤引入軟件中就會發現問題。
技巧3 – 利用 Docker 和單元測試工具
嵌入式開發人員可用于開發單元測試的工具在過去幾年中發生了很大變化。當我第一次開始使用自動化測試時,我發現設置工具是一個巨大的挑戰,今天不再是這種情況。
團隊可以通過多種方式設置單元測試。首先,他們可以將測試設置為持續集成和持續部署 (CI/CD) 系統的一部分。 CI/CD 允許團隊在構建和部署過程中自動運行測試用例。接下來,開發人員可以選擇一個測試工具并將其安裝在他們的系統上。在這種情況下,測試工具在獨立環境中運行。最后,開發人員可以構建他們的測試工具和開發流程,并在 Docker 環境中進行設置。 Docker 允許開發人員在可移植的映像中運行他們的開發環境,從而最大限度地減少設置時間并提高開發人員之間的一致性。
可以在 Docker 中設置測試工具,然后輕松部署到多個開發人員,以便他們只需使用幾條命令即可設置環境。
一開始,為嵌入式軟件創建和使用自動化測試似乎令人生畏。然而,鑒于當今系統變得如此復雜,手動進行測試幾乎是不可能的。唯一真正的解決方案是開發可用于執行所有系統功能的自動化測試。單元測試是嵌入式開發人員最常用的工具,可以顯著提高系統質量,同時減少開發軟件的總時間。