Parasoft 樁函數的了解和優先級
在軟體測試的單元測試過程中,常常需要給某個函數打樁,即為該函數生成一個樁函數。
樁函數一般是用來代替被測函數中調用的其它函數的。比如:
function A(...){
...
a=func_B();
...
}
int func_B(){
return 0;
}
A表示待測函數,在A中某一處調用了其它函數func_B()。在func_B中的一些語句或操作可能會影響到函數A 的測試結果,我們可以通過打樁使func_B函數執行我們想要的操作或傳回我們需要的值。假如,我想要func_B函數傳回一個2。則其樁函數可以寫成:
int func_B_stubs(){
return 2;
}
其中,func_B_stubs表示func_B的樁函數。在實際情況中,我們可以将func_B的樁函數的函數體寫成任何我們想要的内容。
在Parasoft C++ Test中自定義樁函數:
打開Stubs視圖,找到需要生成樁函數的函數,右鍵點選,選擇Create User stubs,會彈出一個框讓我們選擇或填寫生成樁函數的檔案。生成之後,就可以編寫樁函數的函數體了。【關于Parasoft生成樁函數的具體操作:打開Help–>Help Content輸入關鍵詞stubs即可檢視樁函數相關的所有内容】
樁函數的類型和優先級:
一般樁函數分為四類:使用者定義樁函數【User-defined stubs】;系統安全樁函數【Safe stubs】;原始樁函數【Original stubs】;自動生成樁函數【Auto generated stubs】
使用者定義樁函數:表示使用者自定義的樁函數;
系統安全樁函數:安全樁函數是為了代替原來的一些危險函數而自動生成的。所謂的危險函數比如:fopen()和exit()函數等。如果不想使用這類樁函數,可以在測試配置中去掉,具體操作看我首頁另外一篇部落格。
原始樁函數:就是原函數的意思,比如A()和func_B()都是原函數。
自動生成樁函數:即自動生成的樁函數。
優先級:User-defined stubs>Safe stubs>Original stubs>Auto generated stubs。
這些樁函數的優先級表示:在執行相應的測試用例時,會優先調用。比如測試函數A時,其中執行func_B函數調用時,由于為func_B定義了使用者定義的樁函數,測試執行時會調用其樁函數func_B_stubs而不是func_B。
關于樁函數的調用是經常導緻測試用例運作失敗的關鍵點,是以在測試用例執行失敗的情況下,要注意檢查樁函數的生成和調用。