Test di un Bot IRC [chiuso]

0

Sto usando Autumn gem per creare un bot IRC Ruby per un gioco. Tuttavia, mi fa sentire piuttosto imbarazzato perché non so come testare questo tipo di programma ...

Penso che dovrei prendere in giro il processo di I / O per avere un controllo su di esso ma non riesco a vedere come in questo caso quando usi la gemma.

Qualcuno ha un'idea?

    
posta Cydonia7 28.01.2012 - 11:11
fonte

3 risposte

2

È molto, molto difficile testare le dipendenze esterne in modo ripetibile automatizzato. Almeno senza creare più framework per falsificare la dipendenza esterna di quanto tu abbia il codice sotto test. E spesso quel genere di cose è comunque molto fragile, portando a molti fallimenti di test falsi.

Non sono un rubyist in nessuna misura, il seguente consiglio sarà un agnostico piuttosto linguistico. Quello che vorrei fare qui è:

  • Avvolge la dipendenza esterna nella mia interfaccia. Tutto il mio codice dovrebbe parlare a questa interfaccia. e non patch direttamente alla libreria. A seconda della complessità di ciò che erano i dati di ritorno, prenderei in considerazione la possibilità di creare anche i miei oggetti DTO.
  • Prova il mio codice contro versioni derise o con stub di questa interfaccia per assicurarmi che il mio capo del mondo si comporti correttamente con gli input corretti.
  • Infine, prova a trovare un modo per testare la mia interfaccia pass-through al servizio esterno. Ma alla fine della giornata questa classe tende ad essere così semplice da non meritare lo sforzo.

Ma provare a testare i servizi esterni in un senso convenzionale può essere esasperante e orribilmente non efficace.

PS: dovrei aggiungere Ho appena scritto un bot IRC nell'ultimo fine settimana. Ho usato in gran parte TDD in C #, e di certo non ho testato l'angolo di connessione IRC al di fuori dell'uso di nUnit come imbracatura per alzare il codice sperimentale di cui avevo bisogno per capire come funziona la libreria.

    
risposta data 06.05.2012 - 16:00
fonte
3

Perché non si esegue un server IRC locale? Limita l'accesso alla rete locale, o anche solo a localhost, e puoi facilmente testare il tuo bot usando il tuo client IRC preferito.

    
risposta data 28.01.2012 - 14:06
fonte
0

Un bot dovrebbe essere quasi interamente guidato dagli eventi. In tal caso, molto probabilmente avrai un gestore di eventi. Nel caso di un bot IRC, il gestore di eventi leggerà semplicemente un flusso di input TCP, rilevando quale evento sta accadendo e quindi chiamando il gestore di eventi. Se i tuoi eventi sono costruiti su un'interfaccia, puoi facilmente falsificare gli eventi nei tuoi test automatici.

Tutto dipende da come funziona l'autunno. Non mi è familiare quindi potrebbe fare la propria gestione degli eventi, nel qual caso le cose potrebbero risultare un po 'più complicate.

    
risposta data 06.05.2012 - 23:24
fonte

Leggi altre domande sui tag