Recentemente ho chiesto a una domanda sui test nello sviluppo del gioco - questo è il modo in cui sapevo di questo. Le risposte là hanno indicato alcuni svantaggi specifici e curiosi:
-
È costoso fare quando il codice dovrebbe essere altamente accoppiato .
-
È difficile da fare quando devi essere a conoscenza delle varie piattaforme hardware, quando devi analizzare l'output per l'utente e il codice il risultato ha senso solo in un contesto più ampio .
-
I test UI e UX sono molto difficili .
-
In particolare, i test automatici possono essere più costosi e meno efficaci di un gruppo di beta tester a basso costo (o gratuiti) .
Il 4 ° punto mi fa ricordare una mia esperienza. Ho lavorato in una società gestita da Scrum molto snella, orientata all'XP, dove i test unitari erano altamente raccomandati. Tuttavia, nel suo percorso verso uno stile più snello e meno burocratico, l'azienda ha semplicemente trascurato la costruzione di un team di controllo qualità: non avevamo tester. Molto spesso i clienti hanno trovato bug insignificanti utilizzando alcuni sistemi, anche con una copertura di test di > 95%. Quindi aggiungerei un altro punto:
- Test automatici possono farti sentire che il controllo qualità e i test non sono importanti.
Inoltre, stavo pensando a quei giorni sulla documentazione e ho cogitato un'ipotesi che potrebbe essere valida (in misura minore) ai test due. Ho appena sentito che il codice si evolve così rapidamente che è piuttosto difficile creare una documentazione che segua una tale velocità, quindi è più prezioso dedicare del tempo a rendere il codice leggibile piuttosto che scrivere documentazione pesante e obsoleta. (Naturalmente, questo non si applica alle API, ma solo all'implementazione interna.) Il test soffre un po 'dello stesso problema: potrebbe essere troppo lento per scrivere rispetto al codice testato. OTOH, è un problema minore perché i test avvertono che sono obsoleti, mentre la tua documentazione rimarrà silenziosa finché non la rileggierai molto, molto attentamente .
Infine, un problema che trovo a volte: i test automatici possono dipendere dagli strumenti e questi strumenti potrebbero essere scritti male. Ho iniziato un progetto usando XUL qualche tempo fa e, uomo, questo è solo doloroso scrivere test di unità per tale piattaforma. Ho iniziato un'altra applicazione usando Objective-C, Cocoa e Xcode 3 e il modello di test su di esso era fondamentalmente un mucchio di soluzioni alternative.
Ho altre esperienze sugli svantaggi dei test automatici, ma la maggior parte di essi sono elencati in altre risposte. Nondimeno, sono un sostenitore veemente dei test automatizzati. Ciò ha risparmiato un sacco di lavoro e mal di testa e lo raccomando sempre per impostazione predefinita. Giudico che questi svantaggi sono solo semplici dettagli rispetto ai benefici dei test automatici. (È importante sempre proclamare la tua fede dopo aver commentato le eresie per evitare l'auto da fé.)