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