È troppo presto per iniziare a scrivere i test quando le specifiche non sono ancora state scritte. Una volta che hai le specifiche dovresti iniziare a scrivere i test in attesa che il codice sia troppo tardi e non ti raggiungerai mai.
Idealmente i tuoi programmatori dovrebbero scrivere un codice che possa essere testato per verificare che soddisfi i requisiti di progettazione non appena pensano di aver finito e prima di iniziare a pensare di passare ad altre cose.
In pratica finirai comunque con la modifica e l'integrazione dei test durante la codifica, ma avrai qualcosa su cui lavorare.
Leggi su Test Driven Development ma gli stessi principi si applicano a quasi tutti gli altri flussi di lavoro.
Per chiarire - è del tutto possibile che gli autori delle specifiche, i codificatori e gli ampli; gli scrittori di test possono essere le stesse persone o anche la stessa singola persona, (come indicato da Doc Brown ma:
- Se non disponi di una specifica fissa, emessa , non sai dove stai andando, quando sei arrivato lì o anche se ci sei arrivato - scrivendo o persino finalizzando la specifica dopo che il progetto è documentazione non specifica.
- Senza una specifica chiara si è inclini alla funzionalità creep.
- Ovviamente durante il corso di quasi tutti i progetti le specifiche cambieranno ma se hai una buona tracciabilità tra specifiche e test, intendi tu non conosci quale requisito questo test è per & quali test dimostrano che questo requisito è soddisfatto , quindi sai quali test devono essere aggiornati, lo stesso vale per il codice - hai anche un chiaro percorso per indicare la gestione quando il dithering delle specifiche e i cambiamenti tardivi stanno costando soldi (grazie a Bart van Ingen Schenau per averlo menzionato) e dovrebbe essere lasciato alla versione 2,3 ...
- L'altro argomento per una buona tracciabilità è che quando una parte del codice non funziona, come dimostrato dai tuoi test, tu conosci quali caratteristiche saranno mancante se lo si disabilita semplicemente per questa versione.
- Un auditor una volta mi ha detto che ogni volta che veniva presentata la specifica ed era al numero 1, sapevano che il progetto sarebbe stato un incubo.
- Con il controllo delle modifiche sulle specifiche si ha una chiara registrazione di quali requisiti sono stati modificati, quando, da chi e si spera perché e con quanto impatto sulla codifica e test - quando il progetto supera o spende questo può essere lo sviluppatore e migliore amico dei tester.
Come risultato di tutto ciò, personalmente penso che sia una buona idea avere una specifica anche per progetti solisti e certamente per qualcosa di abbastanza complesso da richiedere test formali.
L'altra cosa che vorrei sottolineare, (in risposta a 太極 者 無極 而 生) è che se aspetti di formalizzare le specifiche e scrivi i test fino a che il codice non viene eseguito, allora la specifica potrebbe non essere mai eseguita, il test probabilmente non sarà mai fatto e qualsiasi problema trovato sarà possibilmente non vengono mai affrontati perché il budget e il periodo di tempo sono stati entrambi esauriti e ci sarà molta pressione per far uscire le cose. Parlo per esperienza come sono, non per la prima volta , dovendo riscrivere il codice di qualcun altro che è stato un incubo di manutenzione per anni perché:
- La specifica originale non è mai stata rilasciata, non è mai stata aggiornata, è diventata completamente fuori dal sistema consegnato, (al punto in cui il sistema fisico soddisfa solo le specifiche per le dimensioni esterne ma in nessun altro aspetto.
- Non sono mai stati sviluppati test formali per il software (dopotutto senza una specifica simile al sistema non c'era modo di scrivere test significativi).
- Il budget era esaurito, quindi alcuni test "sembra funzionare" sono stati eseguiti test e i sistemi sono stati spediti in modo che il cliente potesse essere fatturato.
- Il patching di un problema ha causato la visualizzazione di problemi vecchi o nuovi perché non erano disponibili test per verificare il corretto funzionamento del sistema.