在構建關鍵系統時,將代碼覆蓋率結構化是必須的,也是非常重要的。這篇文章闡述了Parasoft C/C++test如何通過覆蓋率指導助手等自動化生產力功能更好地幫助測試團隊。
軟件測試是軟件開發不可分割的一部分。每個開發和執行代碼的行業都可以從使用結構代碼覆蓋率測試工具中受益。這些工具在安全關鍵型應用的嵌入式開發行業中特別有用,在這些行業中,軟件系統不能出現故障,否則就會涉及生命危險。Parasoft C/C++test的覆蓋率指導助手能夠幫助用戶對難以捉摸又耗時的代碼創建測試用例。
代碼覆蓋率是一個重要且必要的條件
我們在嵌入式安全和安全關鍵系統中將代碼提升到100%覆蓋率有多種目的。其中最主要的目是符合DO-178C、IEC 62304等流程標準中定義的驗證和確認(Verification & Validation)要求。
優點
代碼覆蓋率提供的價值是對V&V(Verification & Validation)過程的提升,它可以幫助我們清除代碼中的缺陷,確保每行代碼都已執行,從而滿足團隊或者認證的要求。這可以大大提高團隊代碼質量的安全性和可靠性。
同樣,如果我們執行了所有的測試用例,而只獲得了60%的覆蓋率,那么很明顯我們沒有創建足夠的測試用例。因此,隱藏的缺陷可能潛伏在這些未測試的部分。
另一個問題是“死代碼”。這意味著這些代碼永遠不會被執行,因為沒有條件能夠支持這些代碼被執行。這種情況可能發生在實現了某個特性/功能,但在某種條件下,這個功能需求被刪除了。如果不完全刪除這些相關的代碼,就可能會導致死代碼這種情況。在函數或方法中查找死代碼的同時,還可以突出必須解決的壞代碼。
如何滿足您的代碼覆蓋率要求
您可以通過下面的測試方法或它們的組合方法來實現代碼的高覆蓋率:
單元測試
集成測試
系統測試
下面是Parasoft支持度較高的兩種方法:
1.系統測試和單元測試的組合。首先,檢測代碼并執行所有的系統測試用例,這將會產生比較高的覆蓋率指標。最后,使用單元測試方法來提升剩余未覆蓋代碼的覆蓋率。
2.利用單元測試實現100%代碼覆蓋率。這種方法很直接。用戶創建單元級的測試用例,以確保對每個功能/方法被覆蓋。
代碼覆蓋率指標
覆蓋率指標有非常多種類。具體應用哪種覆蓋率指標取決于IEC 61508中定義的安全完整性等級(SIL)。另一種情況是DO-178B/C的設計保證級別(DAL)對覆蓋率指標的不同要求。對于嵌入式系統,我們可能常用到的覆蓋率指標是語句、分支、修改條件/判定(MC/DC)覆蓋率。其中,對于那些最嚴格的要求,會包括匯編代碼的覆蓋率。Parasoft支持收集所有這些覆蓋率指標,包括其他行業名稱不同的覆蓋率指標種類,比如塊、調用、函數、路徑、判定覆蓋率等。
圖一:指標和趨勢
自動化流程
Parasoft C/C++test的“一鍵獲取覆蓋率”功能在對減輕團隊工作任務和減少成本方面,有著巨大作用。首先是自動生成測試用例,我們只需要單擊一下測試配置,C/C++test即可分析代碼并且自動生成智能的單元測試用例。然后我們可以執行這些單元測試用例。根據不同代碼的大小和復雜性,團隊基本上可以達到80%左右的覆蓋率。
對于復雜的代碼,總是有一些結構復雜的代碼語句,要覆蓋這些語句并且獲取覆蓋率是非常困難的。對于這些結構復雜的代碼,我們可能需要根據不同的路徑或條件情況排列,設計很多組測試用例,才有可能覆蓋這些代碼,這需要花費我們大量的時間和精力。但是我們現在就有一個完美的解決方案,那就是Parasoft C/C++test Coverage Advisor。Parasoft C/C++test覆蓋率指導助手,可以幫我們分析結構或條件復雜的代碼,提供給我們多組測試用例,使這些代碼更容易被覆蓋。
如何在Coverage Advisor中獲取覆蓋率
在編輯器中,右鍵單擊您想要覆蓋的代碼行,然后選擇Parasoft->Show in Coverage Advisor。
圖二:在Coverage Advisor菜單中顯示
下圖展示了為用戶提供的多種測試用例,前置條件字段表示:
mainSensorSignal和coSensorSignal的范圍和輸入值
外部調用的預期輸出
在使用這些設置的參數值和外部調用的樁函數創建單元測試用例時,用戶將獲得所選行的覆蓋率。
圖三:Parasoft C/C++test2020.2 Coverage Advisor行覆蓋分析反饋
總結
在構建嵌入式安全和安全關鍵型軟件系統時,代碼結構覆蓋率是必須的。同時,我們可以將對應的測試用例和需求關聯上,這樣可以確保:
創建了足夠的測試用例來測試軟件
沒有任何死代碼
每一行代碼都經過合規性和認證需求的檢查
Parasoft C/C++test是一個完整的軟件測試解決方案,它為團隊提供了測試方法功能和自動化生產能力,比如覆蓋率覆蓋率指導助手。利用這個功能,開發人員可以快速實現他們的代碼覆蓋率目標。相應地,管理者可以加快產品上市時間、保障審計和簡化產品認證。在向市場輸出高質量軟件的同時,能夠降低成本投入。
審核編輯 :李倩
-
嵌入式
+關注
關注
5072文章
19026瀏覽量
303516 -
C++
+關注
關注
22文章
2104瀏覽量
73503 -
代碼
+關注
關注
30文章
4753瀏覽量
68368
原文標題:解決提升覆蓋率難題-使用C/C++test覆蓋率指導助手
文章出處:【微信號:麥克泰技術,微信公眾號:麥克泰技術】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論