標籤:

如何理解軟體測試中的stub和mock?

開始接觸一些軟體測試的概念,很多包中和文章中都提到了stub和mock的概念,但是還是不能理解這兩個東西在實際開發中的作用,在具體環境下他們可以代表什麼呢.


如果被測程序、系統或對象,我們稱之為A,那麼Stub和Mock指的並不是A,而是測A的過程中,A需要與之交互的程序、系統或對象B。

Stub,也即「樁」,很早就有這個說法了,主要出現在集成測試的過程中,從上往下的集成時,作為下方程序的替代。作用如其名,就是在需要時,能夠發現它存在,即可。就好像點名,「到」即可。

Mock,主要是指某個程序的傀儡,也即一個虛假的程序,可以按照測試者的意願做出響應,返回被測對象需要得到的信息。也即是要風得風、要雨得雨、要返回什麼值就返回什麼值。

關於這幾個詞的中文名,我的建議如下:譯文:fake, mock, stub, driver, simulator, dummy, double


個人簡單理解,比較傻的是stub,稍微有點邏輯的是mock


Stub 和 Mock 都是為了替換外部依賴對象,只不過驗證的關注點不同。

Stub 關注交互行為,為了驗證被測系統 (SUT) 調用目標系統介面的交互行為

Mock 關注狀態,為了驗證 SUT 調用目標系統後,目標系統的狀態


推薦閱讀:

請教軟體測試工程師的簡歷要怎麼寫?我不是計算機專業的。?
離職一個月了,也面了很多公司,但都沒有offer,軟體測試工作不難找,為啥我就那麼難找?
求大神解釋什麼是冒泡測試,回歸測試?
作為一名優秀的軟體測試人員,應該具備哪些專業知識和素質?
要不要去參加軟體測試培訓?

TAG:軟體測試 |