Uno sviluppatore dovrebbe anche fungere da tester? [chiuso]


60

Siamo un team di scrum composto da 3 sviluppatori, 1 designer, lo scrum master e il proprietario del prodotto. Tuttavia, non abbiamo tester ufficiali nel nostro team. Un problema che è sempre con noi è che testare l'applicazione e superare quei test e rimuovere i bug è stato definito come uno dei criteri per considerare un PBI (Product Backlog Item) come fatto.

Ma il problema è che, non importa quanto noi (3 sviluppatori e 1 designer) proviamo a testare l'applicazione e implementare casi d'uso, tuttavia alcuni bug non vengono visti e rovinano la nostra presentazione ( legge di Murphy ) agli stakeholder.

Come rimedio, abbiamo raccomandato alla società di assumere un nuovo tester. Qualcuno che il suo lavoro sarebbe testare e testare solo. Un tester professionale ufficiale.

Tuttavia, il problema è che, scrum master e le parti interessate ritengono che anche uno sviluppatore (o un designer) dovrebbe essere un tester.

Hanno ragione? Anche noi sviluppatori (anche designer) dovremmo essere tester?


1
Possibile duplicato di programmers.stackexchange.com/questions/100637/… , anche se quello è stato chiesto dal punto di vista opposto.
Adam Lear

Nel team di scrum in cui sono stato, tutti stavano testando l'app per smartphone o tablet e tutti sono stati di grande aiuto.
ott--

Gli scrittori hanno bisogno di un editore.
JeffO,

Risposte:


59

Ex ante: sembra esserci molta confusione su ciò che viene considerato testare ciò che non lo è. Certo, ogni sviluppatore deve testare il suo codice mentre lo crea, deve verificare che funzioni. Non può consegnarlo a un tester prima che pensi che sia fatto e abbastanza buono. Ma gli sviluppatori non vedono tutto. Potrebbero non riconoscere i bug. Questi bug possono essere trovati più avanti nel ciclo di sviluppo quando vengono condotti test approfonditi. La domanda è se gli sviluppatori debbano condurre questo tipo di test o meno e, a mio modesto parere, questo deve essere considerato dal punto di vista del project manager:

Gli sviluppatori possono essere tester, ma non dovrebbero essere tester . Gli sviluppatori tendono a evitare involontariamente / inconsciamente di utilizzare l'applicazione in un modo che potrebbe romperla. Questo perché l'hanno scritto e per lo più testato nel modo in cui dovrebbe essere usato.

Un buon tester, d'altra parte, cerca di torturare l'applicazione. La sua intenzione principale è di romperlo. Spesso usano l'applicazione in modi che gli sviluppatori non avrebbero immaginato. Sono più vicini agli utenti rispetto allo sviluppatore e spesso i tempi hanno un approccio diverso per testare un flusso di lavoro.

Inoltre, l'utilizzo di sviluppatori come tester aumenta i costi di sviluppo e non avvantaggia la qualità del prodotto tanto quanto avere un tester dedicato. Non permetterei agli sviluppatori di mettere alla prova i loro lavori quando posso farli fare meglio da un tester a buon mercato. Solo se il ciclo di feedback tra sviluppatori e tester diventasse troppo costoso, gli sviluppatori farebbero il test reciproco del codice, ma nella mia esperienza questo è raramente il caso e dipende fortemente dal processo.

Ciò non significa che uno sviluppatore dovrebbe essere sciatto e lasciare tutto al tester. È necessario eseguire il backup del software mediante test unitari e gli errori tecnici devono essere ridotti al minimo prima di consegnare il software al tester. Tuttavia, a volte hai risolto qui, rompi i problemi o altri bug che nessuno sviluppatore potrebbe prevedere, va bene. Inoltre, i test di integrazione dovrebbero essere eseguiti principalmente dagli sviluppatori. L'obiettivo principale del tester è verificare che i requisiti siano soddisfatti.

In un team così piccolo (e anche in base alla dimensione dell'applicazione), posso anche vedere il tester in un ruolo ibrido, scrivere test unitari e test UI. Dovresti assolutamente assumerne uno .

Ma più importanti del tester sono i blocchi / rami regolari. Non presentare nulla che non sia stato testato correttamente. Quando hai aggiunto una funzione o modificato qualcosa, tutto ciò che lo circonda deve essere verificato di nuovo. Avrai una cattiva reputazione solo se la tua azienda no. Non rilasciare qualcosa di instabile. Quando il cliente desidera avere il software entro una certa data, smettere di svilupparlo abbastanza presto e testarlo correttamente, in modo da avere abbastanza tempo per la correzione dei bug. Spesso è meglio rifiutare le richieste di funzionalità dell'ultimo minuto piuttosto che implementarle male o rilasciarle senza test adeguati.


9
Fortemente e con veemenza in disaccordo ... Gli sviluppatori possono essere tester altamente efficaci, ma lo sviluppatore di una funzionalità NON dovrebbe essere anche il tester della stessa funzionalità. Molti piccoli team svolgono entrambi i ruoli, da tre persone che lavorano su tre diverse funzionalità, quindi distribuiscono i test a uno degli altri tre sviluppatori. Funziona molto bene quando una squadra non ha un tester di qualità.
maple_shaft

5
@maple_shaft: Imho non ci sono scuse per non avere un tester. Ogni progetto offrirà una qualità superiore con un tester dedicato e gli sviluppatori potranno concentrarsi, sviluppandosi bene se ce n'è uno. Avere sviluppatori che si testano a vicenda codice è una soluzione improvvisata, anche per imho di piccoli team. Dovresti leggere anche l'articolo di Joel .
Falcon,

3
Gli sviluppatori possono essere tester - e un buon sviluppatore in realtà conosce molti luoghi in cui il codice può essere debole e soggetto a rotture. Non fare mai testare il codice che le persone hanno progettato o scritto: è inutile. Il codice di altre persone potrebbe essere ok.
StasM,

4
@deadalnix: mi confonde davvero il motivo per cui le persone effettuano il downgrade senza nemmeno leggere e comprendere la mia risposta. Per citare me stesso: "Il software dovrebbe essere supportato da test unitari e gli errori tecnici dovrebbero essere ridotti al minimo prima di consegnare il software al tester."
Falcon,

2
"Un buon tester, d'altra parte, cerca di torturare l'applicazione. La sua intenzione principale è quella di romperla." - Completamente in disaccordo. Ho un tester che cerca continuamente di schiacciare la tastiera o di traboccare i campi. Certo, questi sono bug, ma una fattura da $ 1 trilione di miliardi che genera un errore è così bassa nella mia lista di cose da fare da non registrarmi. Un GRANDE tester verifica tutti gli scenari in cui i vari utenti utilizzerebbero l'app. Un buon sviluppatore garantisce che tutti i percorsi del codice siano stati testati e che l'app funzioni quando utilizzata come previsto.
Paul,

42

Gli sviluppatori possono essere tester - del codice di altri sviluppatori.

Ma testare il proprio codice non è una buona mossa - gli sviluppatori tendono ad avere blocchi mentali sul proprio codice e quindi hanno difficoltà a progettare test completi o appropriati.

Ci saranno sempre sviluppatori che pensano di farlo bene, ma di solito non lo fanno (e sono sicuro di avere molti punti ciechi).

Se REALMENTE CANT assumi un tester, fai in modo che gli sviluppatori eseguano il test incrociato a vicenda, ovvero se A scrive il codice e fa test unitari, fai in modo che B controlli questi test unitari e vedi se ci sono altre cose che potrebbero essere aggiunte . E ottenere B per provare e testare il codice (come utente) e segnalare i difetti.

Questo non è perfetto, ma è meglio di un singolo sviluppatore che cerca di fare tutto.

A volte i tuoi colleghi possono essere davvero bravi a rompere il tuo software, perché ne traggono piacere e non gliene frega molto, perché non è il LORO codice.


2
Oh si certo. Sono completamente d'accordo. È solo che quando non riesci a ottenere il 100% di ciò che desideri, potresti doverti accontentare di meno. Sai che meno non è così buono ma è meglio di niente.
quick_now

4
Sono generalmente d'accordo con i test incrociati, ma su alcuni team che introdurranno conflitti. Ad alcune persone piace incolpare gli altri ("le mie cose funzionano, le tue no, lol, sono molto meglio di te") e questo è inaccettabile. L'ho visto numerose volte. Il test incrociato dovrebbe essere fatto solo tra colleghi che si rispettano l'un l'altro. Nel mio team ho introdotto lo sviluppatore senza nome che è accusato di ogni errore per evitare che qualcuno perda la sua faccia. Gli insetti sono senza nome, accadono.
Falcon,

5
+1 è impossibile testare correttamente il proprio codice. È sorprendente quali trucchi la mente può giocare su di te: sarai sicuro al 100% di aver codificato e testato alcune funzioni e ci vorrà qualcun altro per mostrarti che in realtà non funziona se non in un caso molto stretto e essere ovvio per te una volta mostrato, ma non lo vedresti mai da solo. La mente usa scorciatoie cognitive e nel testarle è impossibile per la persona che ha progettato e sviluppato il codice testarlo correttamente.
StasM,

2
@StasM - d'accordo, con una piccola qualifica: ho scoperto che tornando al mio codice mesi dopo, posso vedere i difetti e posso fare un lavoro migliore per testarlo obiettivamente. Ma metterti alla prova dopo aver scritto è davvero molto difficile.
quick_now

1
@Ben Aston: uno sviluppatore dovrebbe ancora eseguire unit test, test di integrazione, ecc. Non solo. I punti ciechi non spariranno solo perché li vuoi.
quick_now

11

Il giornalista dovrebbe tendere a scrivere correttamente? Voglio dire, è compito dei correttori e degli editori trovare tutti gli errori grammaticali.

Tuttavia, i giornalisti forniscono un controllo ortografico da soli. Tuttavia, il correttore è una professione separata e importante.

Lo stesso per sviluppatori e tester, tranne per il fatto che il QA è una parte ancora più importante dello sviluppo. Anche se sei un buon sviluppatore, non hai tempo per testare accuratamente tutti i casi di test, per coprire tutti gli ambienti, i browser, i sistemi operativi supportati dal tuo prodotto.

Se uno, oltre allo sviluppo, svolge costantemente anche quel lavoro, significa semplicemente un fatto: è un tester part-time.


10

non importa quanto noi (3 sviluppatori e 1 designer) proviamo a testare l'applicazione e implementare casi d'uso, tuttavia alcuni bug non vengono visti e rovinano la nostra presentazione ... agli stakeholder.

Prendi in considerazione l'esecuzione di una "corsa controllata" per uno o due sprint, monitorando gli sviluppi e le attività di test separatamente. Al termine di tale esecuzione, analizza i dati raccolti per scoprire quanto impegno dedichi ai test.

Se scopri che il test richiede molto sforzo, passa i dati al management: sarà una prova convincente a supporto della tua richiesta (molto più convincente di quello che hai ora).

Altrimenti (se ritieni che il test richieda poco tempo), considera di investire ulteriori sforzi per farlo meglio (o imparare come farlo). Negoziare lo sforzo aggiuntivo che si pianifica con il proprio management, perché potrebbero preferire assumere un tester. :)


... abbiamo raccomandato alla compagnia di assumere un nuovo tester. Qualcuno che il suo lavoro sarebbe testare e testare solo. Un tester professionale ufficiale.

Tuttavia, il problema è che, scrum master e le parti interessate ritengono che anche uno sviluppatore (o un designer) dovrebbe essere un tester.

Devo ammetterlo, la gestione della tua azienda mi sembra piuttosto zoppa. Voglio dire - ok, potrebbe essere davvero difficile scoprire quanti tester sarebbero i migliori per il progetto, va bene.

Ma avere almeno un tester è solo una scommessa sicura - davvero divertente che esitino a provarlo, mentre si dichiarano mischia / agile .


9

Bene, abbiamo avuto due sviluppatori cross test dopo che il primo ha apportato alcune modifiche alla schermata di inserimento. Questo era quando il nostro tester regolare era spento in congedo di maternità.

Ha sostanzialmente cambiato una schermata di elenco delle fatture utilizzata dagli utenti per selezionare le fatture prima di eseguire lo zoom per eseguire alcune modifiche tramite un pulsante "Modifica". L'elenco originale è stato eliminato e è stata inserita una nuova visualizzazione griglia, con filtri, raggruppamenti, ordinamenti e ogni sorta di funzionalità interessante.

Il test è andato benissimo e hanno caricato le modifiche al cliente il giorno successivo. Due settimane dopo, il cliente chiama e dice "Ci piace molto la nuova cosa che hai inserito, ora possiamo vedere ogni sorta di informazione. Ma ... ehm ... dove andiamo a modificare le fatture ora? ??"

Si scopre che lo sviluppatore ha rimosso la casella di controllo (per la selezione) e il pulsante di modifica e poiché gli sviluppatori hanno sempre fatto doppio clic per selezionare un elemento, nessuno di loro ha trovato nulla di sbagliato in esso ......

Gli sviluppatori e gli utenti vivono in mondi diversi, avere test incrociati è meglio che far testare il proprio lavoro allo sviluppatore, ma non è ancora la stessa cosa.


3
Non direi "vivono in mondi diversi", ma le persone hanno abitudini e il codice di uno sviluppatore funzionerà se verrà utilizzato da qualcuno con la stessa abitudine. Non riesco a contare con quale frequenza non riesca a riprodurre un bug trovato da un tester, si guardi alle spalle mentre riproduce il bug e dice "wow, non avrei mai fatto quello che hai appena fatto".
gnasher729,

4

Come altri hanno già detto, gli sviluppatori possono testare a vicenda il codice degli altri (test unitari o funzionali) e forse il tuo mischia e il proprietario del prodotto possono aiutare con i test di integrazione, ma per i test di accettazione degli utenti dovresti assicurarti di ottenere un sacco di feedback dai test dei clienti, il che significa distribuzioni frequenti con cui possono lavorare come fanno gli utenti reali e un canale di comunicazione davvero aperto .


2

Dovresti progettare pensando alla testabilità, ma se non hai un tester dedicato, alcune cose scivoleranno semplicemente attraverso le fessure perché non ci sono abbastanza ore al giorno per progettare, implementare e testare il software.


2

Il test del software è un lavoro professionale a tempo pieno. Ha bisogno di un buon cervello, talento e molta esperienza per diventare un buon tester. È ridicolo supporre che uno sviluppatore di software, per quanto intelligente, possa avvicinarsi a un tester professionista quando il test è solo un piccolo componente del suo lavoro quotidiano.

A ciò si aggiunge il problema che inconsciamente lo sviluppatore del software non vuole trovare bug.


1

Concordo con il loro punto sul fatto che gli sviluppatori / designer dovrebbero testare il loro codice, con il cavaet che il designer / sviluppatore che ha fatto una sezione di codice non sia l'unico set di "occhi" su quel codice prima di impegnarsi a vivere. Anche se questo non afferrerà tutto, almeno aiuterà ad evitare la cecità che si insinua nel testare e ripetere il test del proprio codice durante lo sviluppo.

Dalla menzione del caso d'uso supporrò che stai usando anche strumenti di copertura del codice? Altrimenti potrebbe aiutare a vedere quale codice potrebbe non essere testato e potrebbe apparire in bug imprevisti in determinate condizioni.

Detto questo, se c'è abbastanza lavoro o la tua organizzazione è di dimensioni decenti, sono d'accordo che è necessaria una persona di QA professionale, aiuterei a focalizzare un po 'di più i ruoli di tutti e potrebbero anche vedere se ci sono modelli su cosa manca, e soprattutto, come risolverlo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.