Personalmente tendo a credere che si possano ottenere molti dei benefici del TDD (senza aderire effettivamente al TDD), di:
- Scrittura del chiamante e del codice callee intorno allo stesso tempo (sicuramente non più di 24 ore di distanza).
- E usalo per influenzare il design dell'interfaccia (oggetti, chiamate di metodo e parametri).
- Per un componente che richiede un algoritmo / codice complicato, considera innanzitutto l'implementazione in un algoritmo più semplice ma corretto, anche se è meno efficiente (o stupido, o funziona solo in una situazione più ristretta).
- Un metodo di test molto semplice sarebbe eseguire entrambi gli algoritmi e confrontare i loro risultati.
- Una volta che un bug è stato scoperto (con qualsiasi mezzo) in una parte del codice, quella parte di codice merita di essere testata in modo molto più aggressivo. Questo significa fare test più sofisticati di quelli richiesti da TDD. (basato sul ragionamento che i bug si verificano nei cluster )
TDD sembra richiedere di avere una chiara comprensione di quale funzione pianifichi di implementare, o quali requisiti pianifichi di soddisfare implementando il codice. In alcune situazioni, c'è semplicemente troppa poca comprensione del problema. Ciò avrebbe richiesto una soluzione Spike . Nell'ambito di questa soluzione di Spike, TDD può essere applicato perché il problema è stato ridotto a un livello gestibile. Dopo aver completato alcuni Picchi, ognuno dei quali copre alcuni aspetti del problema originale, è possibile iniziare a lavorare sulla soluzione completa e applicare TDD a quel punto potrebbe essere fattibile a causa della migliore comprensione.
Modificato:
Dopo aver letto la pagina con più attenzione,
While it should be possible to test
most kernel functions in a "testbed"
test driver, the really "juicy" stuff
like interrupt handling, process
dispatching or memory management are
probably not unit-testable.
--- from http://wiki.osdev.org/Unit_Testing
Dicono chiaramente che la maggior parte delle parti sono testabili e che alcune parti richiedono un diverso tipo di test: Stress Test .