如何在VectorCAST中測試可變參數函數?

創提科技
2021/11/22

分享到

測試可變參數函數
 
在對專案程式碼做單元測試時,有些函數可能是可變參數的函數,針對可變參數函數生成測試用例後,會發現參數樹中只能找到固定的參數部分,可變參數部分無法輸入參數。這是因為VectorCAST不能直接在參數樹中顯示出沒有名稱的參數,所以在測試用例設計介面中無法找到可變參數的部分。在這種情況下,如果需要測試可變參數函數,可以借助User Code來測試被測函數。
 
User Code是VectorCAST中很重要的一部分,而且功能十分強大,通過編輯User Code可以使得測試工作更容易進行,也可以通過User Code來拓展VectorCAST生成的測試套件的任何一部分,使用標準的C、C++語法,就可以方便地編輯User Code。
 
針對如下簡單的示例程式碼,利用VectorCAST進行測試:
 

如何在VectorCAST中测试可变参数函数-1.png

 
首先創建測試環境,測試環境創建完成,對函數average函數做單元測試,打開測試用例設計介面後,我們只能看到參數num和return,可變參數部分因為沒有顯示在介面中,所以也不能直接設計輸入值和期望。在這種情況下,就需要我們通過User Code編寫對應數量參數的函數來調用被測函數,就可以滿足測試可變參數函數的目的。到功能表Environment->User Code->Edit,打開User Code 介面,找到Unit Appendix User Code,展開後找到被測檔,按兩下空白區域,進入編輯狀態,在此處定義不同參數數量的函數,調用被測可變參數函數:


如何在VectorCAST中测试可变参数函数-2.png


如何在VectorCAST中测试可变参数函数-3.jpg

 
完成後點擊Test Compile按鈕,測試編譯,保存,重新構建環境。構建完成後可以在函數清單中看到新增的被測函數,對不同參數數量的函數創建測試用例,在介面輸入參數,執行測試用例即可測試被測的可變參數函數。


如何在VectorCAST中测试可变参数函数-4.jpg

打樁可變參數函數

 
在對專案程式碼做單元測試時,被測函式呼叫到了一些外部函數,這時需要對外部函數打樁,排除外部函數的干擾。打樁一方面可以對傳遞到樁函數中的參數設置期望值,驗證傳遞參數是否正確;另一方面可以自訂樁返回值,返回一個自訂的值。某些情況下,被測函式呼叫的外部函數是可變參數的函數,但是對於可變參數打樁後只能看到固定參數的部分,可變參數部分因為沒有參數名,所以無法直接在參數樹中找到可變參數部分,也就不能直接設置樁函數參數的期望值。在這種情況下,可變參數部分也可以借助User Code來獲取樁函數中可變參數的部分,實現驗證可變參數部分的參數值。
 
到功能表Environment->User Code->Edit,打開User Code 介面,找到Unit Appendix User Code,展開後找到被測檔,按兩下空白區域,進入編輯狀態,定義一個全域變數,用於存儲可變參數的部分。在此處為了方便,定義了一個10元素的陣列,用於存儲可變參數的部分,這裡需要根據實際程式碼,對User Code做出調整。


如何在VectorCAST中测试可变参数函数-5.png


如何在VectorCAST中测试可变参数函数-6.jpg

 
完成後點擊Test Compile按鈕,測試編譯,保存。
 
到功能表Environment->Configure Stub->Edit,打開User Code編輯介面,找到需要打樁的外部函數,按兩下Beginning of stub,進入編輯狀態,輸入以下程式碼,這裡的程式碼是將所有可變參數的部分賦值給全域變數average_param_list。


如何在VectorCAST中测试可变参数函数-7.png


如何在VectorCAST中测试可变参数函数-8.jpg

 
這裡的User Code也需要根據實際程式碼情況,做出調整。完成後點擊Test Compile按鈕,測試編譯,保存,重新構建環境。環境構建完成後,可以在測試用例設計介面,看到新增的全域變數,對外部函數打樁後,可以輸入全域變數的期望值,執行測試用例,被測函數執行完成後,傳遞進樁函數的實際值值會自動和期望值做比較,如果相同,測試用例執行通過。


如何在VectorCAST中测试可变参数函数-9.jpg