原創|使用教程|編輯:龔雪|2015-12-14 11:03:01.000|閱讀 624 次
概述:關于Parasoft C / C ++test的嵌入式單元測試實踐,本文主要介紹了單元測試的覆蓋率和測試用例生成。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
一旦完成C++test項目和uVision項目配置,所有的開發
環境限制都解決了。我們可以運行一個簡單的測試用例來驗證是否工作正常。為了避免被測功能或測試項目的其他部分出現爭議,建議使用簡單的功能進行初始化測試驗證。通過這種方式,我們可以避免將設置問題與錯誤的初始化參數或外部函數區分開來。
第一次運行測試用例,要在C++test的測試用例管理器中選擇并運行自定義測試配置。接著,你就可以得到測試結果和被測函數的代碼覆蓋率報告。這前半部分的文章中,我們簡要介紹了嵌入式的單元測試。我們例舉了一個簡單的ASR系統(驅動防滑校準)的例子。在第二部分,我們將展示如何在單元測試中達到目的,例如一定程度的代碼覆蓋率。
首先,要確保所有的配置已經按照前文所說完成了。對于有經驗的用戶,這項工作只需要幾分鐘到一個小時。
IEC-61508-3國際標準第二版中,強烈建議代碼覆蓋率的明確類型需要實現一個給定的安全完整性等級。SIL2需要100%的語句覆蓋。SIL3要求100%的分支覆蓋。SIL4需要100%的MC/ DC覆蓋率(表B-2)。沒有單元測試,想實現100%覆蓋幾乎是不可能的。現在,有幾種技術可以顯著減少所需的工作量。
首先注意的是,C++test真實地反映了我們的覆蓋范圍:行,語句,分支或MC/ DC覆蓋。您可以簡單直接地導航到需要額外操作的功能上,以達到理想的覆蓋范圍。若是沒有這項功能,將不能直接進行操作了。你將不知道代碼的哪些部分需要額外的覆蓋,哪些不需要。因此,無論你使用什么測試框架,都要確保提供了正確的覆蓋度量。
我們的目標是單元測試(SIL2)達到100%的語句覆蓋。我們首先關注名為“proc.c”的文件,它包含計算車輪'旋轉速度(“update_speed”)的函數;計算 制動功率(“update_brake_signal”,“brake_control”)和一些額外的平滑函數(“平均”)。因為文章 內容有限,我們這里不討論這些功能究竟是如何工作以及它們是好是壞。我們的重點是如何對它進行單元測試。
在開始之前,我們可以重新輸入測試用例。然而,更好的方法是自動生成。你只需要將需要生成測試用例的文件(也可以是目錄或整個項目)高亮,然后在C++test菜單中選擇內置的 “Generate Unit Tests”測試設置。在我們的例子中,所有的功能都在“proc.c”文件中,所以我們選中它并運行。接著,在項目中創建了 A “tests”目錄,隨之自動生成子目錄。C++test分析代碼并生成自動測試用例,并將它們存儲在該目錄中。使用這種方法,我們只用了30秒就生成了38個測試用例。生成的時間主要取決于代碼。
這時生成的測試用例還沒有包括斷言。執行第一次后,看它的實際價值,并報告“驗證結果”。一旦這些 值通過驗證,C++test將把這些語句轉化為實際的斷言。如果結果不正確,用戶可以選擇:刪除測試用例、更正代碼、輸手動入斷言等。
購買最新正版授權Parasoft贈送Macbook!""
慧都年終盛典火爆開啟,一年僅一次的最強促銷,破冰鉅惠不容錯過(12.01~12.31)!!優惠詳情點擊查看>>
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn