Come testare la gestione del programma TCP .NET di Windows in caso di errore di connessione [chiuso]

1

Ho scritto il mio modulo di comunicazione TCP C # (usando SocketAsyncEventArgs, sebbene sia presumibilmente irrilevante). Il mio modulo funziona a entrambe le estremità della connessione, client e server. Come parte della programmazione dovrebbe rilevare quando la connessione fallisce, e quindi provare automaticamente a ristabilire la connessione.

Mi piacerebbe avere un'idea di come testarlo. Una soluzione è quella di eseguirlo su due macchine fisiche e scollegare il cavo di rete per un po 'e quindi riconnettersi. Questo non è molto automatizzato.

Mi chiedo se esiste una sorta di programma di aggancio WinSock che può essere utilizzato per simulare guasti di connessione? O altri suggerimenti?

    
posta RenniePet 17.04.2015 - 14:53
fonte

3 risposte

2

In primo luogo, penso che questa sia una domanda perfettamente valida. È un'area interessante e non capisco perché è stato downvoted.

Non hai bisogno di winsock puoi disattivare la rete di un adattatore e modificarne le impostazioni a livello di codice ... ma i problemi di rete potrebbero essere molto complicati da simulare in questo modo ... link

Suppongo che questo sia un test di integrazione di qualche tipo ...

Quello che vorrei fare è far funzionare un piccolo componente come un proxy \ bridge. In modo che l'app testata parlerà con il ponte, e il "ponte" trasferirà il suo traffico verso qualsiasi destinazione. Quindi puoi utilizzare l'app "bridge" per simulare qualsiasi tipo di problema di rete che potresti avere, ad esempio latenza, jitter, pacchetti persi, disconnessioni ...

Ci sono strumenti per questo dovresti cercare prima di scrivere il tuo ...

link

link

    
risposta data 17.04.2015 - 16:24
fonte
1

Esegui il test suddividendo il client e il server e utilizzando l'indirizzo IP 127.0.0.1

A seconda del test che si sta eseguendo, potrebbe essere una semplice questione avere il mock-server semplicemente chiudendo la sua estremità della connessione dopo un po 'di tempo predefinito e poi verificando che il client si sia riconnesso entro il tempo specificato.

Potrebbe essere difficile testare alcune delle possibili condizioni di errore che potrebbero verificarsi sui livelli TCP e IP ma la maggior parte di quegli errori non ti interessa comunque, poiché la tua preoccupazione principale è la gestione degli errori segnalati dai livelli più alti interfaccia socket di livello. Quindi essere in grado di creare automaticamente uno qualsiasi di errori di basso livello simili sarà un test adeguato per il test dell'unità a livello di applicazione.

    
risposta data 17.04.2015 - 20:27
fonte
1

Oltre a prendere in giro l'interfaccia di rete, non hai bisogno di due macchine fisiche per un test di sistema:

  1. Disabilita / riattiva la scheda di rete usando script che eseguono ifconfig / ipconfig.
  2. usa una macchina virtuale per un capo del sistema e esegui script su / giù o attiva / disattiva il networking.

Avvicinarsi a WinSock è molto più di quanto devi fare qui.

    
risposta data 17.04.2015 - 23:47
fonte

Leggi altre domande sui tag