Mi considero un ottimo tester tra gli sviluppatori . Sono molto severo sul modo in cui vengono scritti i test automatici, compresi i nomi dei test significativi per l'azienda o il dominio, non permettendo ai test di impigliarsi nei dettagli dell'implementazione, ecc. Nella mia azienda ho aiutato (insieme a un tester) a introdurre Tecniche BDD e test di accettazione utilizzando per la prima volta il linguaggio Gherkin.
In altre parole, mi interessa molto dei test del software, per uno sviluppatore . Ho passato molto tempo a leggere James Bach, Google Testing, Adam Goucher, Ben Simo, ecc. - probabilmente più di un sacco di testers veri leggono. E non mi dispiace dirti che il mio team (uno tra i tanti) ha pubblicato costantemente rilasci con i più bassi bug e meno gravi bug.
Ma non sono un tester . Sarei inorridito se il project manager venisse da me un giorno e mi informasse che avrei assunto tutte le mansioni di test. Qui ci sono solo i problemi più gravi con questo approccio:
-
Non provo come . La maggior parte degli sviluppatori non ama testare. E quando le persone continuano a dover fare qualcosa che non vogliono fare, bruciano. Di solito cito la mancanza di un vero team di QA come uno dei motivi principali per cui ho lasciato la mia precedente azienda.
-
I test esplorativi (anziché scrivere il codice di test automatizzato, che gli sviluppatori dovrebbero fare o almeno riesaminare) sono un'attività molto manuale. È inefficiente semplicemente perché la programmazione a livello di esperti / esperti ha un ROI molto maggiore rispetto ai test a qualsiasi livello. Abbiamo un team interfunzionale con un tester 2: 3: il rapporto di sviluppo e tuttavia i tester spesso riescono a malapena a tenere il passo perché hanno altri compiti (gestione del rilascio, regressioni, ecc.). Semplicemente non ha senso per gli sviluppatori testare.
-
Gli sviluppatori e i tester hanno una mentalità completamente diversa. È difficile da spiegare a meno che / non abbiate avuto la possibilità di lavorare al loro fianco. I buoni tester tenteranno di fare cose che non sono descritte da nessuna parte nelle specifiche, cose che gli sviluppatori non avrebbero mai pensato in un milione di anni, in genere sulla base del fatto che sembra stupido agli sviluppatori. Ma i tester stanno testando l'utente , non lo sviluppatore, il che significa che devono provare intenzionalmente a fare cose stupide, testare tutto in contrasto con un insieme ben noto di percorsi felici e tristi. È molto interessante avere uno sviluppatore, un tester e un BA / product manager nella stessa stanza e parlare di un bug controverso; otterrai una prospettiva totalmente diversa da ciascuna.
-
Gli sviluppatori sanno troppo . Poiché hanno costruito (o contribuito a costruire) una caratteristica particolare, sanno esattamente quali condizioni iniziali dovrebbero essere messe in atto per farlo funzionare e quasi sempre prendono scorciatoie nei loro test, come modificare direttamente i database o modificare temporaneamente la configurazione File. Anche se non fanno nessuna di queste cose, sanno ancora esattamente quali passi prendere e in quale ordine. I tester - o davvero, chiunque sia non uno sviluppatore - mancherà di queste conoscenze e / o della capacità di prendere quelle scorciatoie e testerà letteralmente il sistema da un capo all'altro, e l'"integrazione" è precisamente dove il maggior numero di bug di solito tende a materializzarsi.
Il modo migliore che riesco a pensare per riassumerlo in meno parole è:
- Gli sviluppatori si concentrano sul design
- I tester sono focalizzati su attività
- I project manager sono focalizzati su funzionalità
- Il resto dell'azienda si preoccupa del prodotto
Se non si ottiene un feedback adeguato da tutti questi gruppi diversi, la qualità del prodotto e l'efficacia complessiva del team ne risentiranno. Notevolmente.
Gli sviluppatori dovrebbero non essere responsabili per i test. Se ti viene chiesto di gestire tutti i compiti di prova, corri per le colline. È un lavoro a tempo pieno che richiede un set di abilità molto diverso dalla programmazione.
P.S. Se dovessi indovinare perché gli sviluppatori quasi universalmente detestano i test, direi che probabilmente è perché non produce nulla nel senso che fa la codifica. Creare scenari di test è più una disciplina analitica che una vera e propria creatività, e la sandbox creativa è una ragione importante per cui sviluppatori come programming . Non è coding che mi piace, di per sé; sta vedendo i frutti delle mie fatiche.
L'obiettivo finale di un tester è quello di produrre esattamente ciò che gli sviluppatori non vogliono conoscere: un elenco di motivi per cui devono smettere di lavorare su quella nuova e interessante funzionalità e tornare a aggiustando qualcosa che pensavano fosse già stato fatto. Non è un'attività divertente, per uno sviluppatore.