Devo scrivere test di integrazione per testare il mio codice con i server di rete reali, prima di iniziare a scrivere il mio codice?

1

Sto provando a scrivere test di integrazione per un'app client-server. L'app client viene eseguita sul computer dell'utente e si connette all'app del server in esecuzione su uno specifico server Windows, network-serverA . L'app del server accede anche ai file su un server di rete diverso, network-serverB .

In questo post , l'autore afferma che i test di integrazione sono più importanti della scrittura dei test unitari. Inoltre, nel libro Code Complete 2, Steve McConnel afferma che è meglio scrivere i test in anticipo piuttosto che dopo.

Nel mio caso, per ottenere veri test di integrazione, dovrei avviare due server di rete in VM o semplicemente simularlo in qualche modo. Per quanto riguarda ciò ho fatto qualche ricerca per capire come implementarlo, e queste sono le poche opzioni si avvicinò per simulare i server di rete:

  1. Utilizza la condivisione file Windows predefinita ( link ). Il vantaggio di questo metodo è che è molto facile da configurare per me. Lo svantaggio di questo metodo è che dovrei fare questi passaggi in uno script automatico.

    Passi:

    a. cambia il nome del computer dell'utente in "FileServerName", in modo che il programma possa accedervi tramite \FileServerName

    b. condividi una cartella nella directory corrente

    c. cambia il nome del computer dell'utente allo stato precedente.

  2. Usa FreeNAS installato come VM su VirtualBox e mappalo su una determinata unità nome per abbinare il file server di produzione attuale: link

    Passi:

    a. imposta FreeNAS come file server sotto virtualBox

    b. cambia il nome di FreeNAS in modo tale che i file siano accessibili tramite \FilServerName

    c. avvia FreeNAS come file server e distribuisci file da \FileServerName

    d. spegnere FreeNAS VM

  3. Esegui un contenitore Docker sia per network-serverA che network-serverB . In network-serverA esegui un file server che serve i file come \ FileNameServer e in network-serverB esegue un'istanza ipython. La sfida in questa configurazione è che è versatile, ma richiede anche più conoscenze di quelle disponibili a questo punto.

  4. Utilizzando Python, crea un'interfaccia di rete virtuale, crea un nome per tale interfaccia di rete virtuale in modo che sia accessibile a \FileServerName e accedici normalmente.

Tutte queste opzioni richiedono alcuni costi iniziali e compromessi. L'avvio di un server FreeNAS o di un contenitore Docker probabilmente simula meglio i veri test di integrazione, ma ha anche costi di installazione più elevati, nel senso che dovrei passare un settimana o giù di lì per capire. D'altra parte, usare solo la condivisione di file di Windows è più economico da configurare, ma se arriva qualcun altro domani e vuole testarlo, non è facilmente trasferibile a quello sviluppatore.

Quando si avvia un progetto e si utilizzano i framework TDD, PseudoCoding (da Code Complete 2), in genere si scrivono i test di integrazione (impostazione dell'accesso al database / file server) prima di scrivere un singolo pezzo di codice?

O dovrei dimenticare per ora i test di integrazione, scrivere le classi di alto livello, le funzioni per implementare i requisiti e scrivere test unitari per queste funzioni, creare funzioni che possono essere testate? Una volta eseguiti i test delle unità, posso tornare e scrivere i test di integrazione?

    
posta alpha_989 25.02.2018 - 01:30
fonte

2 risposte

1

Hai bisogno di uno sviluppo o di un ambiente di test che abbia queste impostazioni configurate come nel tuo ambiente live.

Certo, ci vuole tempo e forse per il tuo caso gli angoli di taglio vanno bene. Ma in generale hai bisogno di qualcosa che corrisponda alla tua configurazione dal vivo se hai fiducia nei test di integrazione.

Quando arriveremo al test di integrazione, dovremmo averlo già compilato, testato manualmente sulla nostra macchina di sviluppo locale, eseguito test di unità ecc.

I nostri test di integrazione servono a catturare bug più sottili con la configurazione e l'implementazione dell'ambiente. "Funziona sul campo?"

Non vuoi che questi passino sulla tua condivisione di file Windows solo per scoprire che falliscono contro il live unix.

    
risposta data 25.02.2018 - 12:41
fonte
0

Inizia con quello che è il frutto più basso e lavora da lì.

Detto questo, ho il sospetto che i test di integrazione siano più utili, quindi dedica un po 'di tempo e prototipa come farai. Ricorda solo, ciò che funziona per un grpup potrebbe non funzionare per un altro.

    
risposta data 25.02.2018 - 01:44
fonte

Leggi altre domande sui tag