Non esiste una ricetta generale, ma alcune regole empiriche
( supponendo un linguaggio tipizzato staticamente ma ciò non dovrebbe davvero avere importanza):
1) Dai un'occhiata alla firma del metodo. Ti dice cosa va in e spero che venga out . Dallo stato generale di questo dio -class, suppongo che questo sia un primo punto di dolore . Suppongo che venga usato più di un parametro.
2) Usa la funzione di ricerca del tuo editor / EDI per determinare Exit-Points (di solito viene usata una return statement_)
Da quello che sai, quale funzione richiede per testing e cosa ti aspetti in return .
Quindi un semplice primo test sarebbe chiamando la funzione con i parametri necessari e si aspetta che il risultato sia non-null . Non è molto, ma un punto di partenza.
Da ciò potresti inserire un cerchio ermeneutico (un termine coniato da H.G. Gadamer - un filosofo tedesco). Il punto è: ora avete una comprensione rudimentale della classe e aggiornate questa comprensione con nuove conoscenze dettagliate e una nuova comprensione dell'intera classe.
Questo combinato con il metodo scientifico : fai supposizioni e guarda se tengono.
3) prendi un parametro e guarda, dove nella classe è in qualche modo trasformato:
es. stai facendo Java come me, di solito ci sono getter e setter per i quali puoi guardare. Searchpattern $objectname
. (o $objectname\.(get|set)
se stai facendo Java)
Ora potresti fare ulteriori ipotesi su cosa fa il metodo.
Traccia solo i parametri di input ( prima ) ciascuno attraverso il metodo. Se necessario, crea alcuni diagrammi o tabelle , dove annoti ogni modifica a ciascuna delle variabili.
Da questo, puoi scrivere ulteriori test, descrivendo il comportamento del metodo.
Se hai una comprensione approssimativa di come ogni parametro di input è trasformato lungo il metodo, inizia a sperimentare : passa in null per un parametro o strani input . Fai ipotesi, controlla il risultato e varia input e ipotesi.
Se lo fai una volta, hai una "tonnellata" di test che descrivono il comportamento del tuo metodo.
4) In un prossimo passaggio cercherei le dipendenze : cosa deve fare il metodo oltre al suo input per funzionare correttamente ? Ci sono possibilità di ridurre o ristrutturare quelli?
Meno dipendenze hai, più chiaro vedi i punti, dove fare le prime divisioni.
5) Da lì puoi passare all'intero refactoring road con pattern di refactoring e refactoring ai pattern .
Ecco un bel Vid: GoGaRuCo 2014- Il metodo scientifico per la risoluzione dei problemi Riguarda la risoluzione dei problemi ma comunque utile per una metodologia generale di comprendere come qualcosa funziona .
Hai detto che la funzione chiamata ha nessun parametro di input : in questo caso speciale vorrei provare a identificare prima le dipendenze e il refactoring a parametri, in modo da poterli scambiare dentro e fuori a tuo piacimento.