最近,我和我的同事一直在爲Java項目編寫集成測試。大多數這些集成測試需要至少一個SOAP Web服務調用,LDAP查詢或依賴於我們不必控制的端點的其他內容。這些SOAP/LDAP調用中的一些使用也在開發中的庫。使用實時端點與在集成測試中使用模擬端點
這是什麼最終的意思是,當一臺機器發生故障,一個lib改變,或終點改變了我們的集成測試有時會在構建過程中失敗。在做了一些研究之後,我發現人們在集成測試中使用實時端點似乎很常見,但我也發現了有關使用實時端點可能有害的原因的文章(http://martinfowler.com/articles/nonDeterminism.html#RemoteServices)。
我想知道,當創建集成測試什麼更有意義:嘲諷所有端點,或使用活的?似乎使用實時端點,特別是在不可靠時,會使測試不確定。然而,嘲笑似乎他們只會帶你到目前爲止,你將無法測試在類似生產環境中發生的事情。集成測試由純粹的模擬組成,對驗證除了迴歸之外的任何東西是否有價值?
感謝您的回覆。我明白你在說什麼,但是不是因爲多種原因(lib變更,機器停機,端點改變等)而不能確定的測試嗎?如果我不得不在某個時候忽略它,這是一個好的測試嗎?我覺得這是一個滑坡,導致我不能依賴的測試。 – 2013-03-07 03:35:09
會有一些非確定性的行爲,但這將真正代表您的生產系統。如果您無法控制這些服務,那麼您可以在那裏做的不多,但如果我對真正的服務進行測試,我會感覺更加自信。你總是可以爲你的一些測試寫一個模擬器,但是這會增加很大的維護責任。無論你是否在某個層面上模擬服務,我肯定會有一些測試打擊真實的東西。 – 2013-03-07 03:54:54
有道理。在做了更多的閱讀之後,我發現了另一篇來自Martin Fowler的文章 - http://martinfowler.com/bliki/IntegrationContractTest。html 由於我的終端有點不可靠,我認爲這可能有所幫助 – 2013-03-07 04:01:21