Parasoft是一家專門提供軟體測試解決方案的公司,Parasoft通過其經過市場驗證的自動化軟體測試工具內建套件,幫助企業持續傳遞高品質的軟體。Parasoft的技術支援嵌入式、企業和物聯網市場,通過将靜态代碼分析和單元測試、Web UI和API測試等所有内容內建到傳遞管道中,再加上服務虛拟化和完整的代碼覆寫率,減少了傳遞安全、可靠和合規軟體所需的時間、精力和成本。
Parasoft—C/C++靜态測試自動化測試工具,建構高品質軟體的最佳解決方案-慧都網
在建構關鍵系統時,将代碼覆寫率結構化是必須的,也是非常重要的。這篇文章闡述了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。
下圖展示了為使用者提供的多種測試用例,前置條件字段表示:
- mainSensorSignal和coSensorSignal的範圍和輸入值
- 外部調用的預期輸出
在使用這些設定的參數值和外部調用的樁函數建立單元測試用例時,使用者将獲得所選行的覆寫率。
總結
在建構嵌入式安全和安全關鍵型軟體系統時,代碼結構覆寫率是必須的。同時,我們可以将對應的測試用例和需求關聯上,這樣可以確定:
- 建立了足夠的測試用例來測試軟體
- 沒有任何死代碼
- 每一行代碼都經過合規性和認證需求的檢查
Parasoft C/C++test是一個完整的軟體測試解決方案,它為團隊提供了測試方法功能和自動化生産能力,比如覆寫率覆寫率指導助手。利用這個功能,開發人員可以快速實作他們的代碼覆寫率目标。相應地,管理者可以加快産品上市時間、保障審計和簡化産品認證。在向市場輸出高品質軟體的同時,能夠降低成本投入。