天天看點

Parasoft 樁函數的了解和優先級Parasoft 樁函數的了解和優先級

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。

關于樁函數的調用是經常導緻測試用例運作失敗的關鍵點,是以在測試用例執行失敗的情況下,要注意檢查樁函數的生成和調用。