正如標題說,你會如何測試一個客戶機/服務器應用程序,這是寫在C/C++,通過在網絡協議的會談?我有點困惑如何做到這一點。我曾考慮製作一些嘲諷,但我從未試過嘲笑,所以我不知道這是否是最好的方法。 我該怎麼做?我編寫了許多單元測試,但從未試圖測試通過網絡進行交互的東西。自動化的客戶端/服務器應用程序的測試
回答
我使用命令圖案在單元測試驅動器(客戶機)發送測試命令到服務器。這樣做的好處是測試在一個地方編碼。
用於測試請求超時實施例:
客戶端發送睡眠命令到服務器,然後該請求。請求超時並通過測試用例。
我不知道我是否明白這一點,但你說你有一個單元測試,它發送消息到服務器,然後看看它是否得到正確的答案嗎?這聽起來像是在我的項目中做事的一個很好的方式。 – mslot 2010-07-22 11:03:34
是的,更準確地說,單元測試向服務器發送兩種消息。第一種消息建立測試條件(例如睡眠以觸發超時),第二種消息是實際的測試請求。 – 2010-07-22 11:27:27
通常你想使用嘲笑來驗證從另一側需要消息每側反應(例如,當客戶端收到從它處理的是正確地響應所述服務器的響應)。
測試網絡功能本身,你可以測試在同一臺機器上都運行,並可以運行在虛擬機內一個(或兩個)。如果您有兩個網絡適配器,您甚至可以將每個適配器專用於虛擬機,以使網絡流量實際上從交換機/路由器中流出,並返回到另一個虛擬機中(當/如果要捕獲和驗證數據包時尤其有用)。
我沒想到虛擬機!感謝你提醒我, – mslot 2010-07-22 11:01:53
我有通過環回地址一些客戶機/服務器代碼,我單元測試。當我必須測試錯誤條件時,我使用了一些模擬。所以,當我需要觸發非常特定的條件時,我可以用真正的代碼進行測試,並在模擬時進行測試。
你說當你需要觸發特殊條件時你模擬。你能舉個例子嗎? – mslot 2010-07-22 11:00:53
最常見的原因是觸發錯誤條件。如果我想在服務器報告錯誤時測試我的客戶端代碼,那麼當服務器很難完成時,我會模擬返回錯誤代碼。此外,在回送中很難觸發套接字錯誤,所以當我想確保正確處理套接字錯誤時,我會模擬套接字連接。 – 2010-07-22 15:31:22
- 1. 客戶端/服務器Windows桌面應用程序的自動集成測試
- 2. 負載測試的Java客戶端/服務器應用程序
- 3. 測試遠程客戶端 - 服務器應用程序
- 4. 負載測試Java客戶端服務器應用程序
- 5. 測試客戶端 - 服務器應用程序
- 6. 服務器客戶端應用程序
- 7. 客戶端/服務器應用程序
- 8. 客戶端 - 服務器應用程序
- 9. 使用`make`自動測試服務器和客戶端?
- 10. C#服務器客戶端應用程序(一個服務器多客戶端)
- 11. 使用多個客戶端實例自動化XMPP服務器測試
- 12. 在Java中測試基於客戶端 - 服務器的應用程序
- 13. c#測試服務器和客戶端應用程序之間的帶寬
- 14. 如何測試Android客戶端服務器應用程序的加載
- 15. 負載測試基於客戶端 - 服務器的Windows應用程序
- 16. 客戶端(Android應用程序) - 服務器(Java應用程序)
- 17. 客戶端 - 服務器功能測試
- 18. Web應用程序客戶端DNS服務器檢測
- 19. 測試客戶端/服務器與應用引擎的交互
- 20. C客戶端在服務器客戶端應用程序中的進程ID
- 21. 爲客戶端/服務器程序編寫單元測試
- 22. 如何在ssh上測試客戶端和服務器程序?
- 23. 與C++服務器/客戶端應用程序的端口
- 24. Flex構建客戶端和服務器端的應用程序
- 25. 服務器端VS客戶端MVC的Web應用程序
- 26. 自定義Web服務來測試Android客戶端應用程序
- 27. 服務器的客戶端應用程序的Android客戶端VS僅
- 28. SQL的桌面應用程序Vs的SQL的客戶端服務器應用程序[IBM ProveIt測試]
- 29. 客戶端應用程序服務 - 來自WPF客戶端的身份驗證
- 30. Web服務客戶端應用程序
也許我可以打破單元測試下來,所以對系統的唯一未知的是網絡? – mslot 2010-07-21 17:53:26