Dove dovrebbe un QC all'interno della squadra eseguire i test in uno scenario di ramificazione delle funzionalità?

3

Ho cercato e ho trovato alcune domande che parlavano di test in relazione al branching delle funzionalità. La mia domanda è un po 'diversa.

Siamo un team di scrum * composto da 4 a 5 sviluppatori con un controllo di qualità dedicato all'interno della squadra. Facciamo lo sviluppo attivo su una famiglia di applicazioni con grandi quantità di codice legacy. La famiglia di applicazioni include un portale Web e anche applicazioni lato server che eseguono lavori, ecc.

Negli ultimi due anni abbiamo migliorato lentamente il prodotto con nuove funzionalità, architettura e pratiche migliorate. Cose come il codice che non è mai stato scritto con test unitari in mente o nella pratica, spostando webform in mvc / webapi, winforms in wpf e così via.

Durante quel periodo il CQ ha sviluppato una suite di test automatizzata per il sito Web, quindi, quando abbiamo terminato un ciclo di sprint e abbiamo preparato una versione per un gruppo QA separato per i test della scatola nera, non abbiamo dovuto prendere un paio di giorni con un foglio di calcolo per testare tutti i browser supportati per i difetti prima della nostra caduta al QA. I test automatici vengono eseguiti su ogni modifica al ramo del trunk e i passaggi / gli errori vengono visualizzati sul monitor per consentire al nostro team di vedere, le email TFS vengono inviate al team anche in caso di errore.

Usiamo la funzionalità di branching con il test QC e la correzione / lo sviluppo di nuovi test automatizzati nel ramo delle funzionalità sul loro computer locale, simile agli sviluppatori che scrivono il codice e testano il proprio lavoro. Quindi la funzionalità viene unita al nostro trunk una volta che il nostro QC accetta la nuova funzione.

Da quando abbiamo adottato la funzionalità branching e abbiamo mantenuto il trunk come codice rilasciabile, abbiamo assistito a una drastica riduzione dei bug restituiti dal QA o dalla produzione.

Ora il nostro manager diretto vuole cambiare il nostro processo per essere coerente con altri team di sviluppo. (che hanno più alti tassi di errori di QA e problemi di produzione che devo dire)

Il gestore vuole che il QC on-team non esegua più test e correzioni sulla propria macchina locale, ma piuttosto, una volta che lo sviluppatore ha completato il proprio lavoro e viene revisionato dal codice da un peer, verrà unito al trunk dove il eseguire test nell'ambiente di integrazione, correggere i test automatici o sviluppare nuovi test automatici per nuove funzionalità.

Dato che questo è stato menzionato dal manager, ho cercato di fare ricerche per vedere come i team di sviluppo esterni alla nostra azienda si avvicinano ai test. La mia opinione sull'argomento è stata che il controllo qualità dovrebbe essere testato e sviluppato nelle sezioni di funzionalità, quindi lasciare che i test automatizzati e i test unitari garantiscano che non si verifichino regressioni quando i rami di funzionalità vengono uniti nel ramo del tronco.

* Uso il termine 'mischia' con qualche esitazione dovuta ai cambiamenti nella compagnia, lentamente e silenziosamente, che si allontana dalla mischia e dalle pratiche agili, ma questa è una discussione per un altro giorno e thread.

    
posta Brian 20.12.2017 - 05:42
fonte

1 risposta

2

Fare test manuali e fissare test automatizzati nel bagagliaio ha un grosso svantaggio, forse hai un ramo principale rotto o un sacco di test non funzionanti. Ora non puoi usare questo come base per un nuovo ramo di funzionalità. Penso che il ramo principale dovrebbe essere sempre verde al 100%. A seconda della velocità con cui puoi correggere o ripristinare questa unione, potrebbe bloccare per un po 'altre funzioni / team.

Come Tester, mi piace davvero scrivere tutti i test nel settore delle funzionalità. I nostri team utilizzano i rami delle funzionalità, in cui sviluppiamo e aggiorniamo anche tutti i test (ad esempio unità, integrazione e funzionalità end-to-end). Questo rende la funzionalità completa e test non un ripensamento.

Eseguiamo test esplorativi su un ramo di stadiazione. Tiriamo il tronco / master e la funzione che vogliamo testare in questo ramo. Distribuilo in un ambiente di staging, esegui tutti i test automatici ed esegui una sessione di test esplorativi timeboxed. Se questo ha successo, uniamo il ramo della funzione nel ramo principale ed eseguiamo di nuovo tutti i test automatici prima che vengano distribuiti.

Non cadere nella trappola di mini -waterfalls . Swarm caratteristiche e test in parallelo del codice di scrittura.

Se hai meno perdite di difetti rispetto ad altri team, penso che i tuoi punti luminosi dovrebbero essere duplicati in altri team invece del contrario.

    
risposta data 20.12.2017 - 10:54
fonte

Leggi altre domande sui tag