2010-02-08 103 views
0

測試公共Web服務的客戶端客戶端的方法是什麼?測試公共Web服務的客戶端

今天有很多提供API的在線服務。有一些使用這些API的小應用程序的繁榮。示例:用於社交網絡和博客平臺的桌面/移動客戶端,文檔存儲和處理中心,雲數據庫,實時數據流,GIS數據等。

問題是,這樣的應用程序中的非平凡部分通常是與在線服務通信(處理錯誤,編碼/解碼數據,處理配額,調整API更新等),但客戶端的開發人員不控制服務。所以人們無法直接看到測試的效果,也不能總是將服務的狀態回滾到原始狀態。

  • 你如何設計你的客戶端測試是可重複的?
  • 你測試了什麼行爲?
  • 你如何測試破壞性或重載行爲? (針對公開服務)
  • 您是否自動運行此類測試(例如,作爲預提交鉤子)?
  • 您如何測試特殊情況(從服務超越配額,到狀態不一致,服務行爲突然改變)?
+0

偉大的問題!因爲我正在整合多個服務並研究最佳實踐來整合IOC容器和依賴注入來將我的應用程序與遠程服務分離,並使我能夠編寫更好的單元測試,所以我一直在監視此問題直到它得到解答。 – 2010-02-08 21:41:47

回答

1

非常清楚你正在測試什麼。您是否測試過您的代碼在接收到服務響應時所做的工作?正常和非常?然後嘲笑這項服務,以便您可以隨時鍛鍊這些路徑。

是的,我會設計可重複測試,並在一些框架下運行它們,讓我自動運行它們,理想情況下也是構建/提交的一部分。

但是如何測試服務本身。一些測試只是從驗證您的解決方案中出現。例如重負荷。那麼,雖然重要的是不要反社會,並且公共服務飽和是不合理的,但如果有公開的SLA,那麼我認爲對此進行測試是合理的。因此,如果您的應用預計每秒發出n次請求,那麼我們當然應該至少測試一下。測試我們的整體解決方案達到所需的吞吐量。

要破壞?也許太反社會了。不過,我認爲,發送有效請求和無效請求並檢查預期的響應發生可能是有效和有價值的,如果只是作爲您正在使用的服務的健全性檢查。所以我會至少有一個公共服務的迴歸套件,以便我可以很容易地驗證它的行爲與記錄一致。

+0

軟件示例我的意思是:博客客戶端,在線數據庫的查詢工具,在線存儲管理工具。但我正在尋找客戶端測試的一般準則。問題在於服務不是我的,嘲笑它比寫客戶端更費時間,我不確定嘲笑版本是否可靠地與真實版本相似。 – sastanin 2010-02-09 10:15:13

+0

重負荷我的意思不是服務本身的壓力測試,而是我希望客戶端正確執行的操作,但是可能會在服務上產生沉重的負載(想想通過API或收集統計信息更改所有博客文章中的單詞)。通過破壞操作,我的意思是操作會不可逆轉地改變服務的狀態(如刪除一個帳戶或一些數據),從而阻礙進一步的測試(所以它不會中斷服務本身!) – sastanin 2010-02-09 10:18:30

+0

使用嘲諷框架寫入模擬是沒有你想象的那麼多的工作。作爲一般模式,單元測試客戶端使用Mocks而不是集成測試來反映真實情況往往是一種非常有用的技術。模擬可以讓您輕鬆檢查客戶的行爲以便難以重現響應。 – djna 2010-02-09 12:20:24