Attualmente lavoro con un team di sviluppo di ~ 30 persone che rilascia frequentemente una basebase molto ampia di notevole complessità, quindi alcune delle nostre esperienze potrebbero essere di interesse.
Quando è arrivato il momento di impostare il nostro approccio di test, inizialmente abbiamo diviso un team di 4 persone per impostare il "cablaggio", la struttura principale del codice che supporta l'automazione dei nostri test. Tutti i test sono scritti in Cetriolo , e le definizioni dei passi sono relativamente leggere, principalmente facendo un paio di chiamate nell'imbrago che fa il vero lavoro.
Una volta che l'imbracatura era al punto che il team era in grado di scrivere test, circa la metà dell'intero gruppo passava ai test di scrittura. L'esatto equilibrio dipende in anticipo dal livello di test necessario per il proprio progetto. Alcune cose che abbiamo imparato all'inizio:
- Crea un paio di test e quindi esegui il loopback e armonizzali. Inizia a costruire uno standard in modo che i nuovi test corrispondano allo stile di ciò che è già in atto. Abbiamo finito per farlo più tardi e abbiamo dovuto tornare indietro e standardizzare ciò che era stato scritto finora.
- File delle funzioni di revisione del codice. Cerca in modo aggressivo la duplicazione della definizione dei passi, quando le persone vanno a testa bassa scrivendo queste cose iniziano a mancare che qualcuno abbia già scritto esattamente la stessa cosa.
- Assicurati di testare la cosa giusta. Ad esempio, se l'invio di un modulo deve eseguire X, assicurarsi che il test riguardi l'invio del modulo e non il clic su "Invia". La definizione del passo può fare clic sul pulsante, ma il file della funzione non deve essere modificato se il nome di un pulsante lo fa.
- Se è probabile che un test cambi a causa di un cambiamento nell'implementazione senza un cambiamento di funzionalità, il test probabilmente andrà a rotoli. Questo vale principalmente per 3.
Siamo arrivati al punto che eseguire tutti i nostri test dall'inizio alla fine ha richiesto un tempo osceno. Se pensi di poter arrivare allo stesso punto, pensa presto all'automazione dell'impostazione dell'ambiente di test in modo da poter eseguire facilmente test su più macchine. Siamo in grado di distribuire l'intero sistema di produzione a un host pulito in meno di un minuto, il che ci consente di aumentare facilmente i test in burst.
Ogni volta che ci prepariamo a fare un rilascio, tagliamo una build e poi la eseguiamo attraverso questi test. Esaminiamo eventuali guasti e stabiliamo se devono essere corretti prima della consegna. Se lo fanno, correggi e ripeti. L'intero processo dalla prima generazione alla consegna di solito dura meno di una settimana.
Recentemente siamo arrivati al punto di integrare i nostri team Dev e QA. Ora, qualsiasi funzione che svilupperemo ha un file di funzionalità scritto prima di ogni altra cosa. Quindi sviluppiamo il codice per la funzione. E subito dopo viene eseguito il file delle caratteristiche. Questo diventa possibile solo quando hai abbastanza persone nella tua squadra che capiscono che la BDD / la tua imbracatura può aiutare il resto del team a produrre buoni test.