工程師們似乎在嵌入式軟件開發的一個領域就是測試。工程師經常對設計和實現階段感到興奮,但是當涉及到證明系統工作時,努力和/或興趣真的開始減弱。考慮到可能需要的時間和精力,這是完全可以理解的。嵌入式開發工程師測試嵌入式系統有許多不同的方法,但它們可以歸結為兩種主要的測試類型,白盒測試和黑盒測試。
黑盒測試通常由第三方或質量保證小組執行,他們了解外部系統行為需求,但缺乏對內部結構或代碼操作的深入了解。另一方面,嵌入式軟件工程師更有可能執行白盒測試,因為他們了解軟件的結構和實現,在這種類型的測試中,工程師會考慮軟件結構,以確保每一個分支、每一個案例和每一行代碼都通過測試得到了執行和驗證。
即使對于相對較小的程序來說,這也是一項令人望而生畏的任務。值得慶幸的是,有一種簡單的方法來理解和生成確保適當測試覆蓋所需的測試用例數量,那就是使用條件復雜度,也稱為圈復雜性。傳統上,在實現階段推薦條件復雜度測試,以確保代碼質量。其思想是分析程序中的每個函數,并提供一個結果復雜度值。值越高,函數就越復雜,導致錯誤風險更高,測試和維護困難。
這個測量真正有趣的是,它直接通過函數測量線性無關路徑的數量!復雜度值提供了完整分支覆蓋所需的測試用例數量的上限!這意味著,嵌入式開發人員通過對源代碼執行這個簡單的度量檢查,不僅有助于確保代碼保持簡單,而且可以用來檢查是否已經為分支覆蓋測試定義了足夠的測試用例!
現在想到的問題是,我們如何使用這個復雜度值來創建測試用例?答案首先在于條件復雜度是如何計算的。有兩種方法可以解決這件事。第一種是簡單地把if的個數,循環的個數相加并加一個。第二種方法是生成控制流圖,確定邊、節點和連通分量的數量,然后從邊中減去節點的數量,再加上連通分量。因為這比簡單地查看源代碼要復雜得多,所以第一種方法要容易得多,也更有可能在開發周期中完成。
在測試基礎上執行測試有許多不同的類型和方式,使用條件復雜性只是如何執行測試的一個簡單例子。測試通常需要的不僅僅是簡單的分支測試,而是需要沿著多個實現層和系統行為需求進行測試。無論如何,嵌入式開發人員從開發周期中使用的代碼度量創建測試至少是一個好的開始。