模型覆蓋度分析及提高的方法
Simulink模型覆蓋度分析是一種用于評估軟件質(zhì)量的重要方法,它可以幫助開發(fā)人員確定軟件中存在的問題,并且可以有效地提高軟件的可靠性。汽車電子軟件對模型覆蓋度的需求也很大,因為它們必須能夠確保所有功能都能正常工作,而不會出現(xiàn)意外情況。

覆蓋度分析包括三種不同的覆蓋度:行覆蓋度、判斷覆蓋度和條件覆蓋度。行覆蓋度是測試用例中所有代碼行都已執(zhí)行過的情況。判斷覆蓋度是測試用例中所有判斷條件都已正確執(zhí)行過的情況。條件覆蓋度是測試用例中所有條件流都已正確執(zhí)行過的情況。
Simulink模型覆蓋度分析可以使用一些工具或者方法來實現(xiàn),如Simulink Coverage、MATLAB Code Coverage、Simulink Test、MATLAB Unit Test Framework、Model Advisor Checker 等。這些工具或方法可以幫助開發(fā)人員快速準確地評估代碼中存在的問題,并提供有效的修復(fù)方法。
為了實現(xiàn)100%的覆蓋度,開發(fā)人員必須設(shè)計出盡可能多的測試用例,根據(jù)代碼中存在的特定問題、關(guān)聯(lián)性來創(chuàng)建測試用例,并根據(jù)不同情況選擇合適的測試方法來實施測試。例如:對于一個特定功能,開發(fā)人員可以根據(jù)其特性和使用場景來設(shè)計出盡可能多的測試用例;對于一個特定代碼行或者判斷條件,開發(fā)人員也可根據(jù)其特性和使用場景來設(shè)計出盡可能多的測試用例。此外,開發(fā)人員還必須根據(jù)不同情況選擇合適的測試方法來實施測試;如單元測試、集成測試、站體測試、回歸測試、性能測試等。

使用Simulink Coverage或MATLAB Code Coverage時,開發(fā)人員還必須考慮如何將測試數(shù)據(jù)集合導(dǎo)入Simulink或MATLAB中去運行測試套件。一般考慮使用MATLAB Unit Test Framework或Model Advisor Checker將數(shù)據(jù)集合導(dǎo)入Simulink或MATLAB中去運行測試套件。然后通過將生成的日志文件抓取回來并放入Excel文件中去生成一個易于理解并清理整理出關(guān)聯(lián)性、特征之間關(guān)系圖形化顯示出來即可得出100% 覆蓋度判斷 。
為了實施上述步驟:
1. 需要先明白代碼特性;
2. 根據(jù)代碼特性選出適當?shù)睦藵龢永?
3. 在Simulink中將樣例導(dǎo)入;
4. 運行Simulink Coverage或MATLAB Code Coverage;
5. 檢驗生成的Coverage Report;
6. 改進Coverage Report中存在間隙;
7. 重復(fù)上述步驟, 直到Coverage Report結(jié)果滿足要求為止。
為了幫助大家更好理解上述方法, 舉一個具體例子: 在一個Simulink Model中, 有一個if-else-endif 語句, 其中if-else-endif 語句包含三個判斷條件: A>B, A=B, A<B. 為了保障100% 的判斷覆蓋度, 需要將三個判斷條件改寫成三個獨立樣例: 樣例1: A>B; 樣例2: A=B; 樣例3: A<B. 然后將三個樣例導(dǎo)入Simulink Model, 運行Simulink Coverage或MATLAB Code Coverage, 檢閱生成Coverage Report, 判斷是否存在遺留尚未覆蓋的分支(或稱間隙), 并改進遺留間隙。

HuaZhang是一位開發(fā)人員,她正在使用 Simulink 來開發(fā)一個新功能——“無人駕駛汽車” ?的遠程仿真控制系統(tǒng)。為了保障無人駕駛汽車能夠正常工作并提升其安全性,她必須對 Simulink 求真控制系統(tǒng)100%的覆蓋度。她采用 MATLAB Unit Test Framework 來生成大量不同情況的Case, 然后將生成日志文件抓回,并放入Excel文件,通過圖形化顯示出間隙,特征,關(guān)聯(lián)性之間的關(guān)系,最后得出100%的覆蓋度。通過上述方法,Li Hua 有效節(jié)省了大量時間,也保障交上去無人駕駛汽車能夠正常且安全地運行。
