MockServer的測試思想與實現(2)

發表于:2014-06-11來源:百度質量部作者:不詳點擊數: 標簽:軟件測試
創建SOCKET,監聽所需的端口WHILE NOT STOP: 從socket中讀數據 IF 數據滿足[條件] THEN 返回[結果數據] END IFEND WHILE 為了適應的不同的被測系統,Stub Server需要跟據

  創建SOCKET,監聽所需的端口WHILE NOT STOP: 從socket中讀數據 IF 數據滿足[條件] THEN 返回[結果數據] END IFEND WHILE

  為了適應的不同的被測系統,Stub Server需要跟據情況實現不同的接口協議,對數據包進行解析和封裝,這部分的工作量占據了很大一部分比重,且實際代碼往往單調繁瑣。 這個問題可以利用一些代碼自動生成技術或接口定義語言來解決,這方面的話題不在本文中討論了。

  接口實現好了,接下就是跟據需要來返回相應的數據了,對應于前面的流程,其實就是替換其中的[條件]和[結果數據],以適應不同的CASE。那么如何描述 [條件]和[結果數據]自然也就是成了接下來要解決的問題,有時我們會直接將它們硬編碼到程序里,或者使用配置文件來描述[條件]和[結果數據]以觸發程序中不同的處理代碼。如果數據的結構比較簡單,這種方法是很好實現的,但如果數據結構比較復雜,那配置文件格式的設計與數據的解析加載都會是件很煩人的事情,而如果想在配置中添加一些簡單的邏輯以使程序有更大的靈活性,則更是一件煩上加煩的事情。

  MockServer的結構

  MockServer的設計思想在于將接口的操作和數據的操作分離,在實現樁程序時,只考慮對各種通信接口的包裝,而將[條件]和[結果數據]的構造交給使用者。這樣,同樣一個樁程序,只要是基于相同的通信協議,就可以模擬出任意的行為,就像mock對象可以模擬任意對象的行為一樣。

  比如一個基于socket的Mock Server的可以描述為:

  創建SOCKET,監聽所需的端口WHILE NOT STOP: 從socket中讀數據 執行[MOCK行為] END IFEND WHILE

  其中MOCK行為可能是這樣描述的:

  ON: recieve(‘HELLO‘)DO: sendback(‘WORLD‘) keep_alive()ON: recieve(‘QUIT‘)DO: close_link()

  可見,Mock Server的核心就是如果實現執行[MOCK行為]

原文轉自:http://www.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97