2010-07-21 97 views
2

正如標題說,你會如何測試一個客戶機/服務器應用程序,這是寫在C/C++,通過在網絡協議的會談?我有點困惑如何做到這一點。我曾考慮製作一些嘲諷,但我從未試過嘲笑,所以我不知道這是否是最好的方法。 我該怎麼做?我編寫了許多單元測試,但從未試圖測試通過網絡進行交互的東西。自動化的客戶端/服務器應用程序的測試

+0

也許我可以打破單元測試下來,所以對系統的唯一未知的是網絡? – mslot 2010-07-21 17:53:26

回答

0

我使用命令圖案在單元測試驅動器(客戶機)發送測試命令到服務器。這樣做的好處是測試在一個地方編碼。

用於測試請求超時

實施例:

客戶端發送睡眠命令到服務器,然後該請求。請求超時並通過測試用例。

+0

我不知道我是否明白這一點,但你說你有一個單元測試,它發送消息到服務器,然後看看它是否得到正確的答案嗎?這聽起來像是在我的項目中做事的一個很好的方式。 – mslot 2010-07-22 11:03:34

+0

是的,更準確地說,單元測試向服務器發送兩種消息。第一種消息建立測試條件(例如睡眠以觸發超時),第二種消息是實際的測試請求。 – 2010-07-22 11:27:27

0

通常你想使用嘲笑來驗證從另一側需要消息每側反應(例如,當客戶端收到從它處理的是正確地響應所述服務器的響應)。

測試網絡功能本身,你可以測試在同一臺機器上都運行,並可以運行在虛擬機內一個(或兩個)。如果您有兩個網絡適配器,您甚至可以將每個適配器專用於虛擬機,以使網絡流量實際上從交換機/路由器中流出,並返回到另一個虛擬機中(當/如果要捕獲和驗證數據包時尤其有用)。

+0

我沒想到虛擬機!感謝你提醒我, – mslot 2010-07-22 11:01:53

0

我有通過環回地址一些客戶機/服務器代碼,我單元測試。當我必須測試錯誤條件時,我使用了一些模擬。所以,當我需要觸發非常特定的條件時,我可以用真正的代碼進行測試,並在模擬時進行測試。

+0

你說當你需要觸發特殊條件時你模擬。你能舉個例子嗎? – mslot 2010-07-22 11:00:53

+0

最常見的原因是觸發錯誤條件。如果我想在服務器報告錯誤時測試我的客戶端代碼,那麼當服務器很難完成時,我會模擬返回錯誤代碼。此外,在回送中很難觸發套接字錯誤,所以當我想確保正確處理套接字錯誤時,我會模擬套接字連接。 – 2010-07-22 15:31:22

相關問題