
va bene grazie per essere venuti a parlare
sui test unitari quanti di voi scrivono
unit test un tastic e quanti di voi
esegui la tua suite di test prima di effettuare il check-in
fantastico perfetto quindi questo si sentirà
familiare che è esattamente dove siamo
iniziando così stiamo andando a eseguire i nostri test
abbiamo appena apportato alcune modifiche carine
semplice cambiamento e otteniamo questo è
purtroppo troppo familiare per molto
di noi abbiamo fallimenti e questi sono i nostri
i fallimenti non preoccupano molto del testo
sulla diapositiva che stiamo per scavare
questo molto non hai bisogno di leggere tutto
adesso ma quello che abbiamo qui è due
fallimenti uno per un metodo di dichiarazione uno
per un metodo di istruzione HTML sia in
classe di test cliente che non abbiamo nemmeno
tempo di scavare nella dichiarazione HTML
fallimento ma stiamo andando a scavare nel
dichiarazione di fallimento quindi il problema qui è
siamo in una terribile posizione terribile noi
avere il codice che vogliamo solo controllare
abbiamo eseguito i test che pensavamo di essere
rilevante per il nostro codice e ne abbiamo due
fallimenti non abbiamo idea del perché abbiamo pensato
Abbiamo fatto tutto bene e abbiamo
nessuna scelta intendo davvero le nostre scelte sono
risolto questo problema o andare a pranzo noi
davvero non posso fare altro questo è
bob bob ha cattivi test il problema è
che Bob è il nostro compagno di squadra e anche a
un nostro amico Bob è un bravo ragazzo che vuole
scrivere buoni test che vuole tutti
sulla squadra per essere felice che vuole
scrivere codice gestibile non solo dominio
codice con il codice di prova che sta cercando di
aiutare tutti fuori vuole fare il giusto
tutto è fantastico tranne lui
non scrive test mantenibili lui
scrive test terribili. Bob ti ha lasciato questo
test fallito questa è la dichiarazione
metodo questo test non è molto lungo non lo faccio
conosco una mezza dozzina di righe di codice e ancora
c’è molto da fare qui
in particolare, Bob ha deciso che abbiamo bisogno di fare un ciclo
nei nostri test quanti di voi usano i loop
e i tuoi test avvengono che stai mentendo
Anche a Bob Bob piacciono i loop in questo test
e dobbiamo capire quando lo faresti
capire cosa c’è di sbagliato in questo test
quindi abbiamo bisogno di capire cosa termina
questo ciclo abbastanza semplice ma ma
cosa sono i clienti e nemmeno nella lattina
trovi ciò che i clienti sono
se questo è il tuo schermo da nessuna parte sul tuo
schermo puoi trovare trovare ciò che i clienti
è se sei fortunato con cui stai lavorando
un IDE che ti aiuta ad arrivare ma ma
Pensaci per un minuto tu
bisogno di un IDE per aiutarvi ad ottenere lì per
la prima riga di codice per un errore
prova che non hai scritto non è un
ottima situazione va bene perché noi
avere un ID così andiamo alla definizione
e ci porta qui test cliente
classe non è un grosso problema abbiamo alcuni campi
ottima risposta fantastica ai clienti giusta
è solo un array di clienti Java
istanze intendo qual è il problema
problema è che non sappiamo ancora cosa sia
andando avanti con questi clienti così abbiamo
per andare o utilizzare l’ID di nuovo per portarci
qui e ora abbiamo questa configurazione magica
metodo che tutti conosciamo
modello di metodo modello magicamente fatto
nel nostro framework di unità X e mai
è andato via così trovare usi ci porta qui
non abbiamo nemmeno il tempo di scavare
in qualcosa per cui la madre oggetto
questo supponiamo solo che da alcuni
magia sappiamo già esattamente cosa è
andando avanti con il nostro oggetto madre e yay
abbiamo clienti che ci hanno preso tutti questi
passi solo per leggere nemmeno il tutto
prima riga di codice che non è eccezionale
torniamo al test fallimentare che stiamo eseguendo
attraverso alcune istanze dei clienti e noi
sai cosa è la prossima cosa che tu
guarda quando guardi un test che guardi
si guarda al valore atteso che
dovrebbe essere abbastanza facile da capire
tranne che non è invece abbiamo un
valore atteso restituito da a
chiamata di metodo quindi dobbiamo guardare il
argomenti passo uno capire cosa
gli argomenti sono in questo caso come tutti noi
sappiamo che dobbiamo guardare fino all’ultimo
dovrebbe essere ancora una volta l’informazione di noleggio argomento
semplice ma non è perché
dobbiamo andare a un’altra definizione e
informazioni di noleggio è un metodo di supporto da prendere
stringhe e noleggi e restituisce una stringa
finalmente arriviamo a qualcosa che possiamo
capire che ci sono voluti tre minuti e 45
secondi per arrivare a qualsiasi cosa ragionevole
per qualche valore ragionevole non importa
la legge della violazione di Demetra che noi
cambierebbero tutti, naturalmente, eccetto che lo fossero
tre minuti e 55 secondi nel giusto
cercando di fare il check-in, quindi presentiamo e
che questo problema non è lì e noi
continua sul noleggio informazioni loop sul
affitti e restituisce la stringa
descrivendo
noleggio abbastanza semplice credo
torna al metodo dell’istruzione e cosa c’è
prossimo bene dobbiamo capire cosa
l’argomento successivo è che abbiamo un cliente
non ho idea di quale cliente conosciamo di avere
quattro clienti non sappiamo quale
sta causando il problema in effetti che abbiamo
nessun modo per capire cosa falliamo
il test è senza una dichiarazione di stampa o
eseguendo il nostro test in debug e mettendo a
breakpoint in là, quindi questo non lo è
esattamente un ottimo test abbiamo un problema
e non può nemmeno guardare il test
e capire cosa sta succedendo senza
scrivere finalmente un certo tipo di codice
qualcosa di semplice un tipo di stringa
letterale anche se è passato a
un altro metodo ma ma almeno non lo è
qualcosa a cui dobbiamo usare l’IDE
capisci quindi prendiamo tutti quelli
cose e andiamo alla dichiarazione di aspettativa
e cosa non fa per niente
non merita il proprio metodo ma
qualcuno ha applicato aggressivamente Bob come asciutto
sappiamo Bob pensa provare vale sempre
e così Bob si è asciugato e ha questo
aspetto una dichiarazione e tutto ciò che siamo veramente
fare è un formato punto stringa qui
non è degno del proprio metodo, quindi se
stiamo andando a risolvere questo test questo è
quello con cui dobbiamo lavorare siamo forzati
per digerire tutto questo codice siamo costretti
guardare le cose per circa cinque
minuti e ho familiarità con esso così sono
andando un po ‘veloce immagina che tu sia
dover passare attraverso tutto questo codice
tutto il codice che è sullo schermo
perché hai fatto un cambiamento nel film
oggetto di dominio penso a quello
oggetto del dominio del film che non hai
visto il film che non hai
visto perché sei nel cliente che hai creato
un cambiamento nel film hai aggiunto un nuovo
caratteristica è tutto fantastico e tu hai
fallimenti in alcuni altri test che hai
ho passato troppo tempo a guardare in I
penso che questo sia un po ‘un problema, non lo faccio
davvero chiamiamo mantenibile e allora
tutto dovrei dire su questo codice finora mi
direi che segue i test comuni
Penso che ci siano probabilmente molte cose
di persone qui che sono come te
ok, certo sembra abbastanza standard
ci sono probabilmente alcune persone che trovano
questo codice non troppo impressionante ma al
Allo stesso tempo è solo una specie di standard
non è questo è questo è ciò che i test unitari
sembra che in questi giorni le persone usino il setup
perché è lì e loro non lo sanno
qualsiasi persona migliore usa la madre oggetto
perché è un modello che è
stabilito e
Non conosco un’alternativa migliore e
le persone usano asciutto perché asciutto è come il
regola d’oro della programmazione, se lo fai
nient’altro non ripete quelli
personaggi sì , non lo so non lo so
non pensare che sia un ottimo modo per
test ma ma questo è il tipo di dove siamo
dove penso che fallisca e dove io
penso che dovremmo spendere molto di più del nostro
il tempo è che non possiamo capire nulla di tutto ciò
rapidamente tutto quello che vogliamo fare è il check-in siamo
Davvero non dovrei passare attraverso tutto
questo problema basta controllare il nostro codice
quindi rivediamo tutto di nuovo
abbiamo guardato dovevamo trovare il
test delle dichiarazioni abbiamo dovuto trovare il
definizione della matrice clienti che
stiamo iterando abbiamo dovuto trovare il
assegnazione ai clienti che dovevamo digerire
impostare il compito di ogni cliente in
il loro nome associato dovevamo trovare il
classe madre oggetto che abbiamo saltato
perché non abbiamo nemmeno il tempo
determinare come sono le istanze del cliente
creato quindi dobbiamo digerire ciascuno di
la diversa creazione di istanze del cliente
metodi all’interno dell’oggetto madre a questo
punto capiamo la prima riga di
il test poi digeriamo il previsto
valore che viene creato chiamando a
metodo con una stringa un cliente e il
risultato di chiamare informazioni di noleggio con due
istanze di stringa e noleggi di clienti
trova il noleggio fino al metodo di informazione e
determinare il valore a cui sta tornando
aspettarsi che le informazioni di affitto di digest di dichiarazione siano
creando una stringa iterando e
formattazione dati di noleggio e ora hai
mentalmente risolto gli archi di aspettarsi
affermazione trovi il metodo e digerisci
e a questo punto ti hanno preso dieci
passi per comprendere semplicemente l’atteso
valore della vostra non di prova di un carattere
che tu abbia digerito, mai correrai dentro
produzione a cui non hai fornito alcun valore
il tuo cliente o il tuo business o
chiunque tu abbia scritto il codice per altri
che prevenire la regressione intendo a
almeno questi test ci hanno detto qualcosa
cambiato e qualcosa doveva essere
guardato ma a parte questo nessun valore
nessun cliente userà mai questo
codice che hai appena guardato e
è praticamente impossibile come ho detto
risolvere questo problema senza mettere a
breakpoint in o mettendo un po ‘di tipo
stampare la fodera quindi questo è male questo è il
stato del mondo questa è la media
stato del mondo in questo momento e noi solo
andare a scrivere questi test e non
chiedendoci davvero perché stiamo facendo
questo perché stiamo applicando questi modelli
che funzionano molto bene nel nostro dominio
modelli perché li stiamo applicando ai test
ciecamente senza chiederci è
c’è un modo migliore per scrivere questi test
c’è un modo diverso di codificarlo
creerà effettivamente più mantenibili
test scriviamo test di cui non abbiamo bisogno
tempo non dobbiamo soddisfare le persone che abbiamo
non mi piace cosa succederebbe se facessimo un passo indietro
credo che ci sia un modo migliore di farlo
credo che possiamo scrivere davvero bene
test spero che abbiamo iniziato a realizzare il
le cose sono andate storte davvero guardando
attraverso queste prove le cose hanno
ovviamente andato male, è tempo di guardare
al collaudo unitario con un nuovo punto di
visualizzare josh graham succintamente fornito
quello che credo sia il miglior livello alto
obiettivo per i test unitari puoi avere il tuo
proprio obiettivo di alto livello, ma questo è il mio massimo
obiettivo di livello questo è quello che mi piace pensare
di creare un piccolo universo dove
il software esiste per fare una cosa e fare
bene una cosa e l’universo sono i
i pezzi più importanti qui voglio il mio
test per concentrarsi su una singola cosa ha a
unica responsabilità se tu e io
voglio un piccolo universo di cui non ho bisogno
clienti se sto testando un cliente I
bisogno di un cliente così prima ancora di arrivare
in quali cambiamenti potremmo fare noi
bisogno di pensare a motivatori cosa
ci motiva a scrivere test nel primo
sono probabilmente molto
motivatori direi che sono carini
motivatori ragionevoli questi sono i
motivatori che penso lo farebbero
guida Bob se io e Bob stiamo lavorando
insieme per scrivere alcuni test, quindi facciamolo
dire che il Bob usa questi motivatori per
scrivi i suoi test come ci sentiamo
Bob sta facendo questi motivatori
direbbe che Bob sta davvero facendo carina
bene con autorevole refactoring ho un
test fallito che significa che posso refactoring i
avere una certa sicurezza fantastica immediata
feedback sì funziona abbastanza bene eseguire il
suite di test vedo le cose sono rotte
bob fantastico non ha idea di come fare
in che modo risolvere questo problema
pezzi più piccoli che Bob mi ha dato per i clienti
che non hanno niente a che fare l’ uno con l’altro
sono tutti nella stessa prova ma loro
non interagire tra loro in alcuno
in qualunque modo non c’è davvero alcuna ragione
hanno bisogno di stare insieme eccetto Bob
voleva consolidare i personaggi di Bob
applicato ciecamente asciutto così ancora una volta c’è un
modo migliore asciutto non ripetere te stesso
speriamo che tutti lo sappiano
ampiamente accettato come la regola d’oro di
programmazione o almeno questo è quello che io
Mi piace chiamarlo probabilmente quando sono
mettendolo giù ma non si applica
tutto il tempo penso che si applica
contestualmente non dogmaticamente il test
abbiamo guardato o asciutto non penso nessuno
possiamo sostenere che i test sono asciutti che usiamo
i metodi di loop e helper che abbiamo ripetuto
il minor numero possibile di caratteri, ma noi
non smettere mai di chiedere se quella domanda di
asciutto aiuterebbe a correggere errori futuri
qualcuno qui si sente come il
l’applicazione di secco li aiuta a capire
questo test ovviamente non è il modo in cui Bob
ha scritto questo test è che ha scritto forse quattro
test per iniziare e poi ha messo il
intera cosa in un ciclo perché ha applicato
asciutto e non ci ha davvero pensato
futuro manutentore, così ha pensato
guarda quanto è asciutto il mio codice, guarda quanti
personaggi che ho salvato fantastico
il risparmio non ti fa nulla che ti prosciuga
un codice del genere toglie
leggibilità quindi ci sono tre livelli in
che puoi applicare asciutto intendo che non lo è
tutto il male non è come dovremmo solo
butta via asciutto ma pensa a come
stai applicando a secco la maggior parte delle persone si applicano
asciugare al livello dolce e ai livelli di prova
quindi specificamente qui sto parlando
essere dolce globale probabilmente se siamo dentro
metodi statici globali java che è quello
un dispositivo di posto fisso abbastanza decente è
i metodi e i campi di una classe di test
questo è così comune che si applicano così tante persone
secco lì e davvero non capisco
perché e ho intenzione di farlo
in un secondo, ma il test è fantastico
posto per applicare asciutto non si vuole
ripeti le tue cose con il metodo di prova
stesso ma tu vuoi passare a questo
penso che lo porterei via da questo
parlo sono qui per suggerire fortemente questo
si cambia il tuo approccio vi consiglio
applicare asciutto a livello di suite che è
fantastico tu vuoi creare clienti
potrebbe utilizzare un costruttore cliente che si desidera
crea film usa un costruttore di filmati
desidera creare affitti utilizzare un noleggio
costruttore applica il modello Builder
globalmente e qualsiasi oggetto di dominio che tu
voglio creare all’interno dei tuoi test utilizzare
quello stesso costruttore è una giornata fantastica
uno sul lavoro si guarda i test e
tu dici oh ho bisogno di un cliente sto usando un
interessante costruttore di clienti lasciami guardare
in quel giorno guardi il film
costruttore in quel punto ora lo sai
tutti usano i costruttori per creare
oggetti del dominio So dove sono i miei costruttori
sono definiti così ora posso creare ovunque
nell’intera suite di test posso creare un
cliente o un noleggio o un film ed è
tutto creato allo stesso modo condiviso
conoscenza stessa cosa a livello di test
ovviamente questo è fantastico da rimuovere
secco significa che non lo fai o per applicare a secco te
non voglio la duplicazione all’interno del test
ma il dispositivo è davvero il tutto
ti asciughi e un dispositivo non può essere riutilizzato
questo è il problema che ho con esso è
è riutilizzato all’interno della singola classe ma
ogni volta che apri un test da quello
classe che stai arrivando fresca che hai no
idea di questi metodi di supporto e cosa
sono lì per così hai 10 test
e diversi metodi di supporto che aiutano
i metodi vanno con quali test non so
soprattutto se uno di loro si installa e
è solo usato magicamente e poi di
Ovviamente il problema di tutto ciò che è
creato nel setup non è usato in tutti
test quindi abbiamo molti problemi
questo ma è una risposta piuttosto semplice
basta smettere di disegnare le cose sul dispositivo
livello in modo specifico test diversi
i clienti allo stesso tempo è una cattiva idea
smettere di provare su concetti correlati no
creare dati non correlati se non lo sei
andando a usarlo basta creare quello che tu
bisogno e non estrarre metodi per a
valore di ritorno a stringa singola o altro
sciocco come quello non c’è
spesso non ha molto valore nell’estrarre a
metodo all’interno di un test perché tu sei
costringendo c’è sempre concettuale
in testa di andare da qualche altra parte sempre
ogni volta quindi pensaci come
se stavi tornando a quel test fresco
vorresti davvero il concettuale?
in alto solo per ridurre un altro paio
personaggi quindi sappiamo di alcune cose
quello potrebbe essere migliorato ma tu sai che è
tutto un po ‘ astratto in questo momento lo facciamo
avere esempi concreti di esattamente come noi
può fare tutto questo così la prima cosa
è semplice, stiamo andando a sostituire
il ciclo con test individuali non quello
difficile solo rompere tutto fuori pausa
tutto in quattro prove ci sono
molti più personaggi qui ma puoi
leggi esattamente cosa sta succedendo per
il cliente che esegue questi test produce
l’output seguente è molto di più
chiaro che cercare di capire cosa sia
andando avanti con il ciclo questo è invece
del singolo fallimento per la dichiarazione
questo è
tre fallimenti e possiamo vedere che facciamo
vedi qui John ha fallito il padrino e
Steve fa anche e Pat fa anche come
a tale proposito abbiamo un modello che noi
non ho potuto vedere ogni volta che abbiamo avuto un ciclo ora
abbiamo qualche tipo di schema che possiamo
scavare e capire quale sia il problema
è così di nuovo qui che possiamo vedere quello
John interessante ha ottenuto affitti così noi
non ho così tante informazioni qui o fare
non sappiamo esattamente cosa John abbia
ma almeno le cose sono scoppiate così noi
sapere quali test stanno fallendo ed è
solo dopo aver duplicato tutto
che siamo liberi di asciugare qualsiasi cosa sia
va bene se la duplicazione ti disturba
questo punto stiamo abbattendo tutto
stiamo facendo a pezzi il loop auto del nostro
codice stiamo andando a duplicare tutto
e poi torneremo indietro e guarderemo cosa
possiamo asciugarci più tardi ma lo faremo
a livello di suite non al dispositivo
livello così la prossima cosa che stiamo andando
si aspetta che i letterali qui siano come
i test sembrano ora lo stiamo ancora chiamando
funzione di aiuto che in realtà non lo è
fornendoci qualsiasi valore diverso da alcuni
applicazione dogmatica di asciutto quindi perché chiamare
un metodo parametrizzato una volta che lo fa
niente di più che restituire una stringa tu
sapere qual è la migliore rappresentazione di a
string è una stringa letterale ogni singolo
tempo e questo è quello che danno questi test
si stringono valori letterali per i valori previsti
quindi non c’è più da guardarsi intorno
i test sono significativamente più facili da digerire
a questo punto sono abbastanza sicuro di tutti
sa esattamente cosa sta succedendo in questi
test e l’ultima cosa il problema
allevato prima ancora non lo sapevi
che cosa erano quei tre test falliti
cosa erano cosa cosa cuz che tipo
di cliente è che qui non abbiamo
idea che tipo di cliente abbiamo noi
ho Pat e abbiamo John, abbiamo Steve
ma non è abbastanza chiaro ma
qui mettiamo la madre oggetto dritto
in linea ci liberiamo del metodo di installazione
e quello che finiamo con i nostri test
sono facili da leggere, quindi sappiamo in pratica
quello che sappiamo è quello in cima
Ho lasciato i lavori a cui potrei tornare
i test falliscono ma non voglio sprecare il tuo
tempo in cui quello in alto a sinistra funziona e
tutto il resto fallisce quindi è carino
sicuro di dire guardando l’oggetto madre
definizioni di metodi statici def che possiamo vedere
che se abbiamo 12 oh scusate 11 nuove
pubblicazione
o nuova versione e un normale ecc ecc
improvvisamente possiamo vedere cosa sta succedendo da
leggere il test non è carino
quello che è ancora meglio è che possiamo eliminare
il metodo di installazione e possiamo eliminare il
campi cliente, quindi stiamo eliminando il codice
e stiamo creando test migliori ma
l’installazione è intelligente, è un bel test di bob
sono molto intelligenti, il problema è
intelligente è meno manutenibile in questo caso
l’applicazione aggressiva di asciutto fatto
queste cose sono più difficili da capire
un vero problema per me è reale
problema per me ogni volta che i miei compagni di squadra sono
scrivere test più difficili
capisco ed è anche peggio quando sono
scrivere prove che è difficile per me
compagni di squadra con cui lavoro voglio dire che è un
abbastanza sicuro indizio di fuoco ogni volta che qualcuno
viene a voi e dice che non riesco a capire
esattamente quello che sta succedendo con il tuo test
puoi venire a darmi una mano?
ci sarà un qualche tipo di
estrazione perché se i tuoi test sembrano
così non dovrebbero aver bisogno del tuo aiuto
quindi sai cos’altro è interessante
riguardo tutto questo, a mio avviso, l’ho detto
stavamo per espanderci
tutto fuori e poi torneremmo e
guarda a guidare la cosa è anche dopo di noi
duplicato tutto questo codice anche dopo
ogni cambiamento abbiamo fatto il numero complessivo
di linee è a malapena cambiata non ha
cambiato ma la gente asciuga le cose così
aggressivamente che non guardano nemmeno
al reale impatto sul codice, quindi sono
praticare questa presentazione di fronte a
mia moglie e lei dice che sei così arrabbiato
mi rallegri un po ‘ e io
questi test non possono uccidermi come?
molte persone qui sono consulenti quindi io
ho consultato per un po ‘ e così
sarebbe molto comune imbattersi in test
sembra esattamente come questo ed è così
frustrante vuoi entrare e
fornire valore commerciale che si desidera aiutare
un cliente e hanno qualcuno sul
sito del cliente che puoi solo dire gentilmente
c’è un modo migliore per sapere che possiamo fare
meglio e mi ha semplicemente fatto impazzire
l’ha fatto davvero uccide il tuo
la produttività uccide la squadra
prestazioni e ce ne sono così tante
regole che vengono applicate dogmaticamente
davvero solo non si applicano a test e
siamo solo a metà strada che c’è
ancora molti altri cambiamenti che possiamo apportare
ma prima siamo solo andando a parlare di
motivatori perché le persone non lo fanno nemmeno
fare un passo indietro e chiedersi perché
stiamo anche scrivendo test intendo lì
sono molte ottime ragioni per scrivere
test, ma è probabile che ci sta andando
be non conosco sei cose diverse su
la mia lista e non tutte le sei si applicano a
ogni persona qui dentro, infatti
combinazioni probabilmente tutti qui
avrà tre su sei che si applicano a
loro e saranno diversi e questo è
okay devi solo fare un passo indietro
anche se e capire perché stai scrivendo
il test in primo luogo e poi
fai in modo che i tuoi test corrispondano a quelli tuoi
i motivatori sono specificamente io
motivato a scrivere test ogni volta che voglio
per convalidare il sistema noto anche come
ottenere feedback o prevenzione
regressione questo è un codice piuttosto standard
copertura molto standard per un codice while
la copertura è stata una motivazione principale per
test di scrittura credevano molte persone
in cento percento di copertura del codice
erano soliti fare consulenze
che nei loro accordi ci impegniamo a
darti una copertura del codice al cento per cento
e poi hanno capito che terribile
idea che fosse e smettila di farlo ma
è ancora là fuori c’è ancora tonnellate
di test là fuori che sono stati scritti
solo per consentire la copertura del codice
refactoring uno dei miei motivi preferiti
scrivere prove abbastanza auto-esplicative
documentando il sistema qualcosa io
non posso riferire a qualcosa che non ho mai
fatto ma ho lavorato con dei geniali
persone che adorano documentare il
sistema scrivendo prove quando arrivano
a un nuovo codice base, prima cosa che fanno
viene letto un sacco di test che proprio non lo fanno
lavoro per me è così noioso mi mette
dormi ma ma le persone possono usare così è
fantastico se lavorassi in una squadra con
altre tre persone e tutte loro
preferito documentare il sistema tramite
test avrò più test che conosci
il test deve solo avere un positivo
ritorno sull’investimento per me un test che
serve solo per documentare il sistema
non aiuta non ho intenzione di leggere
è più che probabile, ma se il 75% del mio
squadra l’ottanta percento della mia squadra lo farà
è un grande motivatore il tuo manager
ti ho detto che non sarei sorpreso se
ci sono persone qui che odiano l’unità
prova sinceramente l’unit test che ho
visto che li odio anche a volte forse
hai dato su di esso un sacco di gente
ho e non biasimo te e il tuo
manager ti dice che devi ancora
scrivili comunque ora che sei in un
posizione difficile proprio non sei un
credente pensi che sia uno spreco completo
di tempo e il tuo manager fa lo si fa
Sono sicuro che il motivatore si applica ad alcuni
persone in fase di sviluppo test driven qui
il motivatore più comune non penso
c’è molto da dire anche conosciuto come
rompendo il problema o migliorato
design è un grande motivatore per
scrivere test mentre ero un consulente I
una volta aveva un cliente che voleva solo
accettare nuove funzionalità nel sistema quando
la suite di test unitario era verde
il cliente non ha potuto leggere il test ha avuto no
idea quello che stava succedendo nei test ma
se fossero verdi le cose andavano bene e
se fossero rossi non ci saremmo spostati così
questo è un motivatore interessante, solo
suggerire che tutti si chiedano
cosa motiva la loro squadra e cosa
ti motiva personalmente potrebbe non farlo
in realtà è lo stesso di ciò che motiva
la squadra e poi ne hai davvero due
scelte che dovresti o rispettare o te
dovrebbe probabilmente andare a cercare un’altra squadra
onestamente devi fare ciò che è giusto per
il team si scrive un test per voi il
prima volta che leggi il test ma se tu
lascia un test che hai scritto per te
stai facendo un cattivo servizio alla squadra
devi davvero pensare a cosa
la squadra vuole ciò di cui ha bisogno la squadra e
è altrettanto importante per la scrittura
prova come è per l’eliminazione di test voi
mantenere ogni riga di codice se
c’è solo una cosa che ricordi
per favore ricorda che qualsiasi pazzo può scrivere a
test che li aiuta oggi bene
i programmatori scrivono test che aiutano il
tutta la squadra in futuro è davvero
non su di te, riguarda la squadra
cos’altro possiamo fare cos’altro possiamo fare
non solo per aiutare noi stessi, ma per aiutare
la nostra squadra vale la prima cosa
considerando che questa è la tua carriera e
sta finendo una suite di test eseguita a
ora chi ha una suite di test ora nessuno
risponderà a chi ha una suite di test
che corre in più di 10 minuti lì
vai gente coraggiosa, grazie
stai facendo quei dieci minuti di navigazione
il web Twitter Non guardo le e-mail
non stai lavorando sul codice e lo è
rompere il flusso che esegue quel test
suite per 10 minuti e non è davvero
così difficile da rendere le cose migliori
verrà eseguita una semplice regola nella suite di test
molto meglio non incrociare mai il
i confini non vanno al file system
non andare in rete non andare al
database che è semplicemente non fare nessuno dei
quelle cose
derubare quelle risorse a me non importa se
usi il setter dell’iniezione del costruttore
iniezione o qualcosa di magico
non mi importa come lo fai ma
solo non fare quelle cose e
la tua suite di test salirà immediatamente
100x mila X qualcuno qui dentro
avere in elaborazione il calcolo è il
collo di bottiglia nella loro suite di test in esecuzione
è molto bello che devi lavorare in un
dominio cool e la percentuale è ancora
ottimo tutto il resto di voi tutto ciò che avete
fare è non andare al file system
rete del database e tu sei bravo
questo semplice cambiamento aiuterà da solo
la tua squadra in modo significativo ce n’è uno
altra semplice regola è semplice e
semplice ma questo è un po ‘
denso la classe sotto test dovrebbe essere la
solo una classe concreta trovata in una prova
l’ultima volta che ho dato questa presentazione
qualcuno ha detto cosa intendo per concreto
Intendo l’implementazione il reale
implementato qualsiasi classe con un
implementazione se riesci a farla franca
dovrebbe essere l’unica classe al suo interno
testare quindi il cliente di un film movie di prova
prova cliente di classe se riesci a scappare
con esso nessun film nei test dei clienti
per esempio questo test può essere un po ‘ a
problema il test che hai visto finora
incluso questo è una stringa conflating
verifica dell’edificio dei punti di somma
verifica delle spese di somma qui noi
avere un metodo di prova del metodo del cliente ma
i risultati dipendono sia dal noleggio che dal
sui film quindi ovviamente qualsiasi modifica a
noleggio o film può anche causare questo test
fallire anche se siamo nel
test del cliente abbiamo un implicito o
dipendenza esplicita a seconda di come
lo guardi è il test a destra
l’alternativa piuttosto che vivere con
la dipendenza implicita esiste davvero
soluzione semplice tutto ciò di cui hai bisogno è una finta
qui abbiamo una simulazione che è davvero giusta
comportandosi come un mozzicone che è praticamente
come uso sempre i miei voti per essere onesti
e questo è ora qualsiasi cambiamento al
noleggio o qualsiasi modifica al film che è
anche più in basso non avrà alcun impatto
questo test intendo diverso da un’API
cambiare ovviamente ma nessuna implementazione
all’interno di quelle classi causerà questo
prova per rompere
che è una grande nota rapida
avresti potuto notare no ne sono sicuro metà
la gente era offesa e l’altra
metà pensato Ho fatto un errore è nullo
solo una stringa magica qui proprio come
Padrino a sinistra è solo un
stringa magica qui se hai solo un
avversione a null quindi sub il metodo
ma io non vedo alcuna differenza tra
quelle stringhe magiche così in movimento che abbiamo
concatenazione di stringhe ora verificata qui
abbiamo test semplici che verificano anche
la carica totale e il punteggio totale
puoi introdurre questi test focalizzati
esclusivamente sulla somma così ora abbiamo
test ancora più piccoli abbiamo avuto ciò che noi
il pensiero sembrava un test piuttosto semplice
abbiamo pensato forse a una singola responsabilità
perché chiamiamo un metodo ma
risulta non tanto perché quello
il metodo stava chiamando altri metodi qui noi
basta testarli tutti in isolamento e noi
prendere in giro cose o mozziconi come preferisco e
e abbiamo anche test più piccoli con anche
meno responsabilità e ora stiamo bene
coperto fantastico è tutto fantastico
eccetto che noi conosciamo questo null e noi
avere zero punti e questo è un po ‘
interessante quindi ovviamente ne abbiamo bisogno di un altro
test che non è davvero un grosso problema
significa che questo test cinematografico è carino
semplice abbiamo film e noi
specificare il numero dei nostri che specifichiamo il
digita e poi specifichiamo i numeri in
ci sono giorni e riceviamo un costo per
i giorni e ancora prove semplici
venendo a questo test fresco vieni a questo
prova quando vuoi registrarti
dovrebbe essere in grado di capire cosa c’è
andando molto rapidamente che è
grande questo è l’obiettivo che vuoi essere
in grado di venire a un test per vedere cosa è andato
sbagliato e cambiarlo il più velocemente possibile
questo è un grande passo incrementale questi
i test rendono la vita molto meglio per il nostro
squadra in cui ora confidiamo
tutto perché è tutto proprio come
coperto com’era prima così fantastico noi
mantenere quella fiducia, ma abbiamo
isolamento ci sentiamo a nostro agio cambia
a una determinata classe creerà solo
fallimenti nel test per quella classe
prova di film cambia film o film scusa
le modifiche di classe ai test sul film falliscono i clienti
cambiare il test del cliente fallire ma sono
tutto isolato in un modo usando quegli stub
che le altre modifiche non causeranno
quei test per fallire non più a cascata
fallimenti uno dei grandi motivi per le persone
odiare i test unitari
va bene così le cose sono molto meglio nonostante
la mia felicità con le unit test ci sono
ancora un altro test che vorrei onestamente
giusto ogni volta i test ora
sono molto isolati e questo è bello ma
stiamo solo lavorando con i mock così abbiamo
nessuna verifica dell’integrazione, proprio noi
abbiamo una lacuna nei nostri test che non ha funzionato
esistere prima di questo è ovviamente il
problema che dovremmo affrontare intendo noi
non vogliamo trovare questo divario in
produzione quindi prendiamo questo test unitario
riunisce tutto e condivide no
l’integrazione sorprende e ci si sente molto
molto come mi sono contraddetto
perché ora abbiamo lezioni concrete e
quello che mi viene in realtà è che io
avere test diversi per quello che sono
cercando il tipo di feedback che
Sto cercando di farlo, non è così
ti confondo invece mi piace avere il mio
i test unitari servono a scopi specifici
test che hanno una singola classe concreta
sono progettati per testare i rami del codice
in logica tutti i test che hai visto
prima testato tutti i rami loro
testato per essere addebitato per i film
con un numero specifico di giorni
testato la concatenazione di stringhe in
isolamento ma qui abbiamo una cosa
questo porta tutto insieme quindi i test
che i mozziconi li chiamo solitari
mette alla prova i passaggi che portano tutto
insieme o i test che portano
tutto insieme come questo il
test di integrazione li chiamo socievoli
perché le classi parlano tra loro
e spezzo queste cose in realtà
avere spazi dei nomi separati in Java
progetti quindi tutti i test solitari
vivere in uno spazio e tutto il
test socievoli vivono in un altro spazio
in questo modo quando uno di loro fallisce, posso
guarda il fallimento e dì bene cosa
sto esattamente testando qui bene cosa sono
preoccupato se è socievole, sono solo io
preoccupato per l’integrazione se sto testando
rami di codice o casi d’angolo nel mio
test socievoli sto facendo la cosa sbagliata
Ho un test mancante lì ho un
Indizio che ho un test solitario mancante
nessun problema va bene il test solitario se
allora il fallimento è nel test solitario
forse ho un problema reale nel mio dominio
o ho solo bisogno di aggiornare il test ma io
fare di nuovo test che si stanno concentrando su a
unica responsabilità, quindi non solo
il test mette alla prova solo una cosa, ma è così
anche un tipo specifico di test che racconta
io dove devo andare basato sul
feedback e li separi per fare
è facile per te sapere dove andare
in base al feedback
in quale altro modo puoi migliorare le cose che sono
un paio di modi semplici questo è il film
prove che tutti abbiamo visto se il secondo se
la seconda asserzione non ha esito negativo
il codice sottostante verrà eseguito presumo
lo sanno tutti, ma tu hai mai
davvero pensato a questo quanto prezioso
è quel codice il codice sotto il secondo
affermazione se fallisce penso che sia facile
la risposta sarebbe che non ha alcun valore
perché non esegue quale valore
c’è nel codice che non funziona ma
è peggio davvero se ci pensi
non c’è valore nel codice che non lo è
corri ma è ancora seduto lì
ancora mantenendo quel codice quando questo
test fallisce bisogna andare a vedere la
prova e devi cercare di capire
cosa sta succedendo, quindi non solo a
affermazione fallita ma hai rumore
sotto di esso e non hai idea di cosa sia
sta succedendo con quel rumore se ne hai
questo fallimento non sai cosa sta succedendo
dopo averlo seguito in qualunque modo
sai che hai avuto una carica per
bambini e tu ti aspettavi 1.5 e tu
Ho ottenuto tre punti 0, quindi torniamo indietro e noi
possiamo vedere che ci aspettiamo 1.5 in
diversi posti quindi dobbiamo usare il
numero di linea in fondo e lo sappiamo
tutto sotto quella linea era senza valore
così che non è grande So di un
l’errore non è stato generato automaticamente
informazioni sui test rimanenti
dato un test con più asserzioni
quando stanno passando tutti loro
fornire valore è ovvio che è facile ma
quando fallisce, viene rimosso tutto il valore
dalle successive affermazioni e quando
di fronte a un test fallito con più
asserzioni che sei costretto a fare uno di
due scelte nessuna delle quali è buona
per essere onesti si legge tutto dentro
Indovina se funzionerà la prossima volta
e nessuno di noi lo farà perché
siamo pigri come dovremmo essere invece noi
verrà eseguito il test fisseremo la
l’asserzione eseguirà i test e lo faremo
correggi l’asserzione e noi eseguiremo il
prova e aggiusta ripetutamente l’asserzione
fino a quando tutto funziona probabilmente mai
fermandomi anche a pensare perché sto sprecando
il mio tempo lo fa perché è diventato
naturale per noi è solo quello che facciamo ora
o potremmo smettere di farlo e se noi
ha eseguito il test una volta e abbiamo ottenuto tutto il
feedback allo stesso tempo che sarebbe quello
sii gentile e non suona così pazzo
lo fa ma ne hai parlato un po ‘
quando dici di una affermazione per
prova e loro pensano che tu sia pazzo ma
questo è quello che sembra questo è il
stesso test solo due dei quattro perché
è una diapositiva ma improvvisamente i nostri test sono
facile può facilmente consumare di nuovo single
responsabilità e quindi ora abbiamo un test
la suite viene eseguita ogni volta che viene eseguita
di vedere un fallimento e non sapere
cos’altro sta succedendo vediamo tre
fallimenti vediamo che l’accusa per a
i tre giorni dei bambini sono previsti 1.5
e abbiamo avuto tre e quattro quattro giorni di noi
previsto tre punti oh e ottenuto 4,5 e
45 ci aspettavamo 4,5 e ne abbiamo sei così è
solo tre fallimenti rompendo le cose
su invece di avere un fallimento che abbiamo
tre ma la somma di questo è ovviamente
meglio non ci vuole un genio
capire che improvvisamente il modello ha
vieni fuori che qualsiasi cosa è più di due giorni
rotto ma è sempre spento di 1,5 quindi ora
puoi andare nel tuo dominio e capire
ciò che questo ha comportato ti ha rotto
il codice di dominio o ha fatto il business
in realtà basta dire che è il cambiamento
che vogliamo fare ma la somma del
gli errori sono migliori, quindi perché non dovresti
voglio quell’informazione così l’attesa
i valori di ritorno danno valore
informazioni per test come ho detto la somma
è meglio delle parti e di tutti
tempo scrivi più asserzioni
stai sopprimendo informazioni preziose
di nuovo non solo per te più importante
probabilmente per i tuoi compagni di squadra di venire qui
senza contesto, quindi avvolgendolo un po ‘
bit la seconda cosa che vorrei
te per andare via ricordando se se tu
disposto a darmi due cose
ricorda è il test che sei tu i test
che possiedi finisci per possederti
tanti esempi di questo e io amo tutti
di loro così da sopportare con me immagino che tu sia
lavorando per una compagnia di assicurazioni e tu
bisogno di guardare le persone dal loro sociale
numero di sicurezza o qualsiasi altra cosa
identificatore in realtà non si importa
voglio convalidarlo in qualche modo quando
qualcuno chiama e chiede del loro
politica che devi essere in grado di tirare su
il loro file ma cosa succede se i loro nomi jay
e invece era jay 1 sono ancora
Sarai un cliente che sei ancora
andando a cercarmi tutto è immobile
andando a lavorare fuori va bene la cosa peggiore
quello che succede è che forse ricevo posta
con il mio nome sopra e sembra un po ‘
un po ‘sbagliato ma è così che i test
quello convalida queste cose le prove
che convalida l’ID univoco di cui hanno bisogno
lavorare perché è necessario essere in grado di guardare
persone a gestire la tua attività, ma il
test che verifica che il mio nome sia
alfa non è necessario è buono a
sono sicuro che sia bello forse intendo adesso
ci sono nomi con alfa, quindi quanto è bello
è stato davvero quel test, ma forse è buono
avere forse non è in quel caso lo è
probabilmente è facile scrivere il test e tu
andare avanti, ma per quanto riguarda qualcosa come un
modulo web Voglio mettere uno sfondo rosso
ogni volta che qualcuno mette uno nel loro
il primo nome va bene la logica semplice e carina
giusto ma come stai andando al test unitario
quel selenio un qualche tipo di web runner
ciò richiede cinque minuti per eseguire 10
i minuti per eseguire è è davvero
vale la pena è davvero la pena di aggiungere al
la tua suite di test per convalidare che il
lo sfondo è diventato rosso puoi ancora fare
attività senza uno sfondo rosso
la tua pagina web penso che tu possa farne un’altra
esempio che non penso le persone
considerare è quello che ho detto prima, ma
questo è il più comune che vuoi
scrivere TDD è fantastico, io sono
tutti a bordo con TDD ma proprio così
ti aiuta a progettare il codice che ti aiuta
creare progetti mantenibili e aiuta
guidi verso il design che desideri
design evolutivo così tante cose grandiose
così tante parole d’ordine ma una volta che hai finito
una volta che hai un buon design che prova
forse non è necessariamente così prezioso
guarda quel test per cui hai creato
tdd e deciderà se aiuterà il
squadra in futuro se ti aiuta a ottenere
al design che hai ottenuto è fantastico
è servito al suo scopo nessuno sta andando
per dirti che non dovresti scrivere
quel test ma ciò non significa che tu abbia bisogno
per mantenere quel test per sempre e il tuo
la squadra deve mantenere questo test per sempre
quindi guarda un test e decidi se lo è
ne vale la pena al momento ma anche se lo sarà
continuare a valere la pena di mantenere fermata
pensando al test della tua persona
punto di vista pensa alla squadra I
significa che è decisamente il massimo
livello togliere da questa presentazione
i tuoi test non sono speciali, non lo sono
i fiocchi di neve belli o unici hanno il
lo stesso testo in decomposizione è ogni altro test
è tutto sulla tua squadra, in realtà no
su di te si tratta di fare il tutto
squadra più di successo e si tratta di
pensando al contesto che sei
e come puoi aiutare la tua squadra
giusto così sono alcune domande grandiose
ciò che è asciutto non ripeterlo
significa solo che significa molto diverso
le cose a persone diverse ci credo
è nato nel programmatore pragmatico
Sono sicuro che è venuto prima che quel libro fosse
rilasciato e in pratica dice solo
non ripetere lo stesso concetto alcuni
le persone interpretano ciò che non si ripete
gli stessi personaggi con cui non sono d’accordo
quella definizione, ma è molto comune
trovarlo ma direi il
essenza di esso è semplicemente non ripetere il
lo stesso concetto all’interno dei vostri sistemi va bene
grazie come prendi in giro le lezioni finali
trova un linguaggio migliore che fosse conosciuto da CC
cosa immagino ci sia se stai usando
alcuni se stai usando una classe finale
devi assolutamente usare che potresti
basta avvolgerlo in un nodo finale di classe e
allora e prendi in giro che è quello che vorrei
fare cosa se i dati rilevanti ci aiutano
scoprire falsi negativi e falsi
positivi finché hai un
motivatore che ti spinge a scrivere un test
scrivilo e scrivine più di tanto
come fornisce un valore che è grande ma
il takeaway dovrebbe essere questo test
fornendo valore non ho solo bisogno di
prova ciecamente perché limitare non disegnare
questi test saranno aggressivi
miglioramenti della leggibilità causano problemi
fuori dai test puoi ripetere il
la seconda metà mi dispiace ancora di non averlo capito
o sarà questa leggibilità
i miglioramenti causano problemi al di fuori di
prova ah presumo che la domanda è perché
limitarlo sarebbe meglio duplicare
inoltre, voglio dire che è fantastico
domanda perché è bello pensarci
codice in questo modo non posso dire di no
asciugare il codice mi faranno buttare fuori
la comunità ma ma pensando al
ritorno sull’investimento di ogni linea di
il codice è estremamente prezioso non non solo
per i test ovviamente abbiamo il tempo
per alcuni altri su cosa pensi
nominando mi manca il metodo di test descrittivo
nomi nei tuoi esempi Penso che se l’ unità X
era stato creato in un linguaggio che
effettivamente supportato e
funzioni onime che non avremmo
avevo nomi di test di default, penso
sono grandi quando sono grandi e
sono peggio che male in molte occasioni
perché hanno torto la prima versione
di questo libro aveva nomi di test che erano
sbagliato perché tu scrivi un test lo farai
scrivi il nome prima la maggior parte del tempo
e poi scrivi il test e il test
o ruota in quel momento e tu
dimentica di cambiarlo o qualcun altro
comporta il test in futuro e come
abbiamo detto nell’ultima presentazione il
codice di citazione famoso non mente che è
grande e vero, ma i commenti mentono e
prova nomi un commento non scherzare
te stesso un nome di prova è un commento è
nient’altro è un modo praticabile per BDD
migliorare la manutenibilità dei test o del tuo
pensieri su PDD in generale è una bellezza
molto supponente e se la squadra è attiva
consiglio di andare per questo fantastico e se il
la squadra non è a bordo è la peggiore idea
forse non il peggiore ma piuttosto terribile
si tratta di acquistare è estremamente
supponenti ci sono molti supponenti
quadri di prova là fuori e nessuno dei
loro sono la risposta giusta è tutta una questione
la squadra penso che questo sarà l’ultimo
domanda se stai facendo single
proteste di asserzione si finirebbe facilmente
su refactoring per asciugare se si copia
lo stesso setup per la moltitudine di
asserzioni sì non nel metodo di installazione
all’interno del test stesso assolutamente il
la chiave è avere quel piccolo universo che è
incredibilmente facile da digerire così quando vai
a un fallimento non devi andare
dovunque questo è il mondo perfetto
forse hai un costruttore e tu già
sapere cosa sta facendo il costruttore ma il
mondo perfetto sei arrivato lì
Builder crea l’oggetto dominio e
guardi cosa viene effettivamente testato
il valore atteso come perfetto letterale
guardi il metodo chiama a
chiamata di funzione al dominio ed è
estremamente chiaro cosa sta succedendo idealmente
non vuoi fare affidamento su alcun tipo di
L’IDE deve leggere un test che questo
mi sento solo in colpa
tu
sui test unitari quanti di voi scrivono
unit test un tastic e quanti di voi
esegui la tua suite di test prima di effettuare il check-in
fantastico perfetto quindi questo si sentirà
familiare che è esattamente dove siamo
iniziando così stiamo andando a eseguire i nostri test
abbiamo appena apportato alcune modifiche carine
semplice cambiamento e otteniamo questo è
purtroppo troppo familiare per molto
di noi abbiamo fallimenti e questi sono i nostri
i fallimenti non preoccupano molto del testo
sulla diapositiva che stiamo per scavare
questo molto non hai bisogno di leggere tutto
adesso ma quello che abbiamo qui è due
fallimenti uno per un metodo di dichiarazione uno
per un metodo di istruzione HTML sia in
classe di test cliente che non abbiamo nemmeno
tempo di scavare nella dichiarazione HTML
fallimento ma stiamo andando a scavare nel
dichiarazione di fallimento quindi il problema qui è
siamo in una terribile posizione terribile noi
avere il codice che vogliamo solo controllare
abbiamo eseguito i test che pensavamo di essere
rilevante per il nostro codice e ne abbiamo due
fallimenti non abbiamo idea del perché abbiamo pensato
Abbiamo fatto tutto bene e abbiamo
nessuna scelta intendo davvero le nostre scelte sono
risolto questo problema o andare a pranzo noi
davvero non posso fare altro questo è
bob bob ha cattivi test il problema è
che Bob è il nostro compagno di squadra e anche a
un nostro amico Bob è un bravo ragazzo che vuole
scrivere buoni test che vuole tutti
sulla squadra per essere felice che vuole
scrivere codice gestibile non solo dominio
codice con il codice di prova che sta cercando di
aiutare tutti fuori vuole fare il giusto
tutto è fantastico tranne lui
non scrive test mantenibili lui
scrive test terribili. Bob ti ha lasciato questo
test fallito questa è la dichiarazione
metodo questo test non è molto lungo non lo faccio
conosco una mezza dozzina di righe di codice e ancora
c’è molto da fare qui
in particolare, Bob ha deciso che abbiamo bisogno di fare un ciclo
nei nostri test quanti di voi usano i loop
e i tuoi test avvengono che stai mentendo
Anche a Bob Bob piacciono i loop in questo test
e dobbiamo capire quando lo faresti
capire cosa c’è di sbagliato in questo test
quindi abbiamo bisogno di capire cosa termina
questo ciclo abbastanza semplice ma ma
cosa sono i clienti e nemmeno nella lattina
trovi ciò che i clienti sono
se questo è il tuo schermo da nessuna parte sul tuo
schermo puoi trovare trovare ciò che i clienti
è se sei fortunato con cui stai lavorando
un IDE che ti aiuta ad arrivare ma ma
Pensaci per un minuto tu
bisogno di un IDE per aiutarvi ad ottenere lì per
la prima riga di codice per un errore
prova che non hai scritto non è un
ottima situazione va bene perché noi
avere un ID così andiamo alla definizione
e ci porta qui test cliente
classe non è un grosso problema abbiamo alcuni campi
ottima risposta fantastica ai clienti giusta
è solo un array di clienti Java
istanze intendo qual è il problema
problema è che non sappiamo ancora cosa sia
andando avanti con questi clienti così abbiamo
per andare o utilizzare l’ID di nuovo per portarci
qui e ora abbiamo questa configurazione magica
metodo che tutti conosciamo
modello di metodo modello magicamente fatto
nel nostro framework di unità X e mai
è andato via così trovare usi ci porta qui
non abbiamo nemmeno il tempo di scavare
in qualcosa per cui la madre oggetto
questo supponiamo solo che da alcuni
magia sappiamo già esattamente cosa è
andando avanti con il nostro oggetto madre e yay
abbiamo clienti che ci hanno preso tutti questi
passi solo per leggere nemmeno il tutto
prima riga di codice che non è eccezionale
torniamo al test fallimentare che stiamo eseguendo
attraverso alcune istanze dei clienti e noi
sai cosa è la prossima cosa che tu
guarda quando guardi un test che guardi
si guarda al valore atteso che
dovrebbe essere abbastanza facile da capire
tranne che non è invece abbiamo un
valore atteso restituito da a
chiamata di metodo quindi dobbiamo guardare il
argomenti passo uno capire cosa
gli argomenti sono in questo caso come tutti noi
sappiamo che dobbiamo guardare fino all’ultimo
dovrebbe essere ancora una volta l’informazione di noleggio argomento
semplice ma non è perché
dobbiamo andare a un’altra definizione e
informazioni di noleggio è un metodo di supporto da prendere
stringhe e noleggi e restituisce una stringa
finalmente arriviamo a qualcosa che possiamo
capire che ci sono voluti tre minuti e 45
secondi per arrivare a qualsiasi cosa ragionevole
per qualche valore ragionevole non importa
la legge della violazione di Demetra che noi
cambierebbero tutti, naturalmente, eccetto che lo fossero
tre minuti e 55 secondi nel giusto
cercando di fare il check-in, quindi presentiamo e
che questo problema non è lì e noi
continua sul noleggio informazioni loop sul
affitti e restituisce la stringa
descrivendo
noleggio abbastanza semplice credo
torna al metodo dell’istruzione e cosa c’è
prossimo bene dobbiamo capire cosa
l’argomento successivo è che abbiamo un cliente
non ho idea di quale cliente conosciamo di avere
quattro clienti non sappiamo quale
sta causando il problema in effetti che abbiamo
nessun modo per capire cosa falliamo
il test è senza una dichiarazione di stampa o
eseguendo il nostro test in debug e mettendo a
breakpoint in là, quindi questo non lo è
esattamente un ottimo test abbiamo un problema
e non può nemmeno guardare il test
e capire cosa sta succedendo senza
scrivere finalmente un certo tipo di codice
qualcosa di semplice un tipo di stringa
letterale anche se è passato a
un altro metodo ma ma almeno non lo è
qualcosa a cui dobbiamo usare l’IDE
capisci quindi prendiamo tutti quelli
cose e andiamo alla dichiarazione di aspettativa
e cosa non fa per niente
non merita il proprio metodo ma
qualcuno ha applicato aggressivamente Bob come asciutto
sappiamo Bob pensa provare vale sempre
e così Bob si è asciugato e ha questo
aspetto una dichiarazione e tutto ciò che siamo veramente
fare è un formato punto stringa qui
non è degno del proprio metodo, quindi se
stiamo andando a risolvere questo test questo è
quello con cui dobbiamo lavorare siamo forzati
per digerire tutto questo codice siamo costretti
guardare le cose per circa cinque
minuti e ho familiarità con esso così sono
andando un po ‘veloce immagina che tu sia
dover passare attraverso tutto questo codice
tutto il codice che è sullo schermo
perché hai fatto un cambiamento nel film
oggetto di dominio penso a quello
oggetto del dominio del film che non hai
visto il film che non hai
visto perché sei nel cliente che hai creato
un cambiamento nel film hai aggiunto un nuovo
caratteristica è tutto fantastico e tu hai
fallimenti in alcuni altri test che hai
ho passato troppo tempo a guardare in I
penso che questo sia un po ‘un problema, non lo faccio
davvero chiamiamo mantenibile e allora
tutto dovrei dire su questo codice finora mi
direi che segue i test comuni
Penso che ci siano probabilmente molte cose
di persone qui che sono come te
ok, certo sembra abbastanza standard
ci sono probabilmente alcune persone che trovano
questo codice non troppo impressionante ma al
Allo stesso tempo è solo una specie di standard
non è questo è questo è ciò che i test unitari
sembra che in questi giorni le persone usino il setup
perché è lì e loro non lo sanno
qualsiasi persona migliore usa la madre oggetto
perché è un modello che è
stabilito e
Non conosco un’alternativa migliore e
le persone usano asciutto perché asciutto è come il
regola d’oro della programmazione, se lo fai
nient’altro non ripete quelli
personaggi sì , non lo so non lo so
non pensare che sia un ottimo modo per
test ma ma questo è il tipo di dove siamo
dove penso che fallisca e dove io
penso che dovremmo spendere molto di più del nostro
il tempo è che non possiamo capire nulla di tutto ciò
rapidamente tutto quello che vogliamo fare è il check-in siamo
Davvero non dovrei passare attraverso tutto
questo problema basta controllare il nostro codice
quindi rivediamo tutto di nuovo
abbiamo guardato dovevamo trovare il
test delle dichiarazioni abbiamo dovuto trovare il
definizione della matrice clienti che
stiamo iterando abbiamo dovuto trovare il
assegnazione ai clienti che dovevamo digerire
impostare il compito di ogni cliente in
il loro nome associato dovevamo trovare il
classe madre oggetto che abbiamo saltato
perché non abbiamo nemmeno il tempo
determinare come sono le istanze del cliente
creato quindi dobbiamo digerire ciascuno di
la diversa creazione di istanze del cliente
metodi all’interno dell’oggetto madre a questo
punto capiamo la prima riga di
il test poi digeriamo il previsto
valore che viene creato chiamando a
metodo con una stringa un cliente e il
risultato di chiamare informazioni di noleggio con due
istanze di stringa e noleggi di clienti
trova il noleggio fino al metodo di informazione e
determinare il valore a cui sta tornando
aspettarsi che le informazioni di affitto di digest di dichiarazione siano
creando una stringa iterando e
formattazione dati di noleggio e ora hai
mentalmente risolto gli archi di aspettarsi
affermazione trovi il metodo e digerisci
e a questo punto ti hanno preso dieci
passi per comprendere semplicemente l’atteso
valore della vostra non di prova di un carattere
che tu abbia digerito, mai correrai dentro
produzione a cui non hai fornito alcun valore
il tuo cliente o il tuo business o
chiunque tu abbia scritto il codice per altri
che prevenire la regressione intendo a
almeno questi test ci hanno detto qualcosa
cambiato e qualcosa doveva essere
guardato ma a parte questo nessun valore
nessun cliente userà mai questo
codice che hai appena guardato e
è praticamente impossibile come ho detto
risolvere questo problema senza mettere a
breakpoint in o mettendo un po ‘di tipo
stampare la fodera quindi questo è male questo è il
stato del mondo questa è la media
stato del mondo in questo momento e noi solo
andare a scrivere questi test e non
chiedendoci davvero perché stiamo facendo
questo perché stiamo applicando questi modelli
che funzionano molto bene nel nostro dominio
modelli perché li stiamo applicando ai test
ciecamente senza chiederci è
c’è un modo migliore per scrivere questi test
c’è un modo diverso di codificarlo
creerà effettivamente più mantenibili
test scriviamo test di cui non abbiamo bisogno
tempo non dobbiamo soddisfare le persone che abbiamo
non mi piace cosa succederebbe se facessimo un passo indietro
credo che ci sia un modo migliore di farlo
credo che possiamo scrivere davvero bene
test spero che abbiamo iniziato a realizzare il
le cose sono andate storte davvero guardando
attraverso queste prove le cose hanno
ovviamente andato male, è tempo di guardare
al collaudo unitario con un nuovo punto di
visualizzare josh graham succintamente fornito
quello che credo sia il miglior livello alto
obiettivo per i test unitari puoi avere il tuo
proprio obiettivo di alto livello, ma questo è il mio massimo
obiettivo di livello questo è quello che mi piace pensare
di creare un piccolo universo dove
il software esiste per fare una cosa e fare
bene una cosa e l’universo sono i
i pezzi più importanti qui voglio il mio
test per concentrarsi su una singola cosa ha a
unica responsabilità se tu e io
voglio un piccolo universo di cui non ho bisogno
clienti se sto testando un cliente I
bisogno di un cliente così prima ancora di arrivare
in quali cambiamenti potremmo fare noi
bisogno di pensare a motivatori cosa
ci motiva a scrivere test nel primo
sono probabilmente molto
motivatori direi che sono carini
motivatori ragionevoli questi sono i
motivatori che penso lo farebbero
guida Bob se io e Bob stiamo lavorando
insieme per scrivere alcuni test, quindi facciamolo
dire che il Bob usa questi motivatori per
scrivi i suoi test come ci sentiamo
Bob sta facendo questi motivatori
direbbe che Bob sta davvero facendo carina
bene con autorevole refactoring ho un
test fallito che significa che posso refactoring i
avere una certa sicurezza fantastica immediata
feedback sì funziona abbastanza bene eseguire il
suite di test vedo le cose sono rotte
bob fantastico non ha idea di come fare
in che modo risolvere questo problema
pezzi più piccoli che Bob mi ha dato per i clienti
che non hanno niente a che fare l’ uno con l’altro
sono tutti nella stessa prova ma loro
non interagire tra loro in alcuno
in qualunque modo non c’è davvero alcuna ragione
hanno bisogno di stare insieme eccetto Bob
voleva consolidare i personaggi di Bob
applicato ciecamente asciutto così ancora una volta c’è un
modo migliore asciutto non ripetere te stesso
speriamo che tutti lo sappiano
ampiamente accettato come la regola d’oro di
programmazione o almeno questo è quello che io
Mi piace chiamarlo probabilmente quando sono
mettendolo giù ma non si applica
tutto il tempo penso che si applica
contestualmente non dogmaticamente il test
abbiamo guardato o asciutto non penso nessuno
possiamo sostenere che i test sono asciutti che usiamo
i metodi di loop e helper che abbiamo ripetuto
il minor numero possibile di caratteri, ma noi
non smettere mai di chiedere se quella domanda di
asciutto aiuterebbe a correggere errori futuri
qualcuno qui si sente come il
l’applicazione di secco li aiuta a capire
questo test ovviamente non è il modo in cui Bob
ha scritto questo test è che ha scritto forse quattro
test per iniziare e poi ha messo il
intera cosa in un ciclo perché ha applicato
asciutto e non ci ha davvero pensato
futuro manutentore, così ha pensato
guarda quanto è asciutto il mio codice, guarda quanti
personaggi che ho salvato fantastico
il risparmio non ti fa nulla che ti prosciuga
un codice del genere toglie
leggibilità quindi ci sono tre livelli in
che puoi applicare asciutto intendo che non lo è
tutto il male non è come dovremmo solo
butta via asciutto ma pensa a come
stai applicando a secco la maggior parte delle persone si applicano
asciugare al livello dolce e ai livelli di prova
quindi specificamente qui sto parlando
essere dolce globale probabilmente se siamo dentro
metodi statici globali java che è quello
un dispositivo di posto fisso abbastanza decente è
i metodi e i campi di una classe di test
questo è così comune che si applicano così tante persone
secco lì e davvero non capisco
perché e ho intenzione di farlo
in un secondo, ma il test è fantastico
posto per applicare asciutto non si vuole
ripeti le tue cose con il metodo di prova
stesso ma tu vuoi passare a questo
penso che lo porterei via da questo
parlo sono qui per suggerire fortemente questo
si cambia il tuo approccio vi consiglio
applicare asciutto a livello di suite che è
fantastico tu vuoi creare clienti
potrebbe utilizzare un costruttore cliente che si desidera
crea film usa un costruttore di filmati
desidera creare affitti utilizzare un noleggio
costruttore applica il modello Builder
globalmente e qualsiasi oggetto di dominio che tu
voglio creare all’interno dei tuoi test utilizzare
quello stesso costruttore è una giornata fantastica
uno sul lavoro si guarda i test e
tu dici oh ho bisogno di un cliente sto usando un
interessante costruttore di clienti lasciami guardare
in quel giorno guardi il film
costruttore in quel punto ora lo sai
tutti usano i costruttori per creare
oggetti del dominio So dove sono i miei costruttori
sono definiti così ora posso creare ovunque
nell’intera suite di test posso creare un
cliente o un noleggio o un film ed è
tutto creato allo stesso modo condiviso
conoscenza stessa cosa a livello di test
ovviamente questo è fantastico da rimuovere
secco significa che non lo fai o per applicare a secco te
non voglio la duplicazione all’interno del test
ma il dispositivo è davvero il tutto
ti asciughi e un dispositivo non può essere riutilizzato
questo è il problema che ho con esso è
è riutilizzato all’interno della singola classe ma
ogni volta che apri un test da quello
classe che stai arrivando fresca che hai no
idea di questi metodi di supporto e cosa
sono lì per così hai 10 test
e diversi metodi di supporto che aiutano
i metodi vanno con quali test non so
soprattutto se uno di loro si installa e
è solo usato magicamente e poi di
Ovviamente il problema di tutto ciò che è
creato nel setup non è usato in tutti
test quindi abbiamo molti problemi
questo ma è una risposta piuttosto semplice
basta smettere di disegnare le cose sul dispositivo
livello in modo specifico test diversi
i clienti allo stesso tempo è una cattiva idea
smettere di provare su concetti correlati no
creare dati non correlati se non lo sei
andando a usarlo basta creare quello che tu
bisogno e non estrarre metodi per a
valore di ritorno a stringa singola o altro
sciocco come quello non c’è
spesso non ha molto valore nell’estrarre a
metodo all’interno di un test perché tu sei
costringendo c’è sempre concettuale
in testa di andare da qualche altra parte sempre
ogni volta quindi pensaci come
se stavi tornando a quel test fresco
vorresti davvero il concettuale?
in alto solo per ridurre un altro paio
personaggi quindi sappiamo di alcune cose
quello potrebbe essere migliorato ma tu sai che è
tutto un po ‘ astratto in questo momento lo facciamo
avere esempi concreti di esattamente come noi
può fare tutto questo così la prima cosa
è semplice, stiamo andando a sostituire
il ciclo con test individuali non quello
difficile solo rompere tutto fuori pausa
tutto in quattro prove ci sono
molti più personaggi qui ma puoi
leggi esattamente cosa sta succedendo per
il cliente che esegue questi test produce
l’output seguente è molto di più
chiaro che cercare di capire cosa sia
andando avanti con il ciclo questo è invece
del singolo fallimento per la dichiarazione
questo è
tre fallimenti e possiamo vedere che facciamo
vedi qui John ha fallito il padrino e
Steve fa anche e Pat fa anche come
a tale proposito abbiamo un modello che noi
non ho potuto vedere ogni volta che abbiamo avuto un ciclo ora
abbiamo qualche tipo di schema che possiamo
scavare e capire quale sia il problema
è così di nuovo qui che possiamo vedere quello
John interessante ha ottenuto affitti così noi
non ho così tante informazioni qui o fare
non sappiamo esattamente cosa John abbia
ma almeno le cose sono scoppiate così noi
sapere quali test stanno fallendo ed è
solo dopo aver duplicato tutto
che siamo liberi di asciugare qualsiasi cosa sia
va bene se la duplicazione ti disturba
questo punto stiamo abbattendo tutto
stiamo facendo a pezzi il loop auto del nostro
codice stiamo andando a duplicare tutto
e poi torneremo indietro e guarderemo cosa
possiamo asciugarci più tardi ma lo faremo
a livello di suite non al dispositivo
livello così la prossima cosa che stiamo andando
si aspetta che i letterali qui siano come
i test sembrano ora lo stiamo ancora chiamando
funzione di aiuto che in realtà non lo è
fornendoci qualsiasi valore diverso da alcuni
applicazione dogmatica di asciutto quindi perché chiamare
un metodo parametrizzato una volta che lo fa
niente di più che restituire una stringa tu
sapere qual è la migliore rappresentazione di a
string è una stringa letterale ogni singolo
tempo e questo è quello che danno questi test
si stringono valori letterali per i valori previsti
quindi non c’è più da guardarsi intorno
i test sono significativamente più facili da digerire
a questo punto sono abbastanza sicuro di tutti
sa esattamente cosa sta succedendo in questi
test e l’ultima cosa il problema
allevato prima ancora non lo sapevi
che cosa erano quei tre test falliti
cosa erano cosa cosa cuz che tipo
di cliente è che qui non abbiamo
idea che tipo di cliente abbiamo noi
ho Pat e abbiamo John, abbiamo Steve
ma non è abbastanza chiaro ma
qui mettiamo la madre oggetto dritto
in linea ci liberiamo del metodo di installazione
e quello che finiamo con i nostri test
sono facili da leggere, quindi sappiamo in pratica
quello che sappiamo è quello in cima
Ho lasciato i lavori a cui potrei tornare
i test falliscono ma non voglio sprecare il tuo
tempo in cui quello in alto a sinistra funziona e
tutto il resto fallisce quindi è carino
sicuro di dire guardando l’oggetto madre
definizioni di metodi statici def che possiamo vedere
che se abbiamo 12 oh scusate 11 nuove
pubblicazione
o nuova versione e un normale ecc ecc
improvvisamente possiamo vedere cosa sta succedendo da
leggere il test non è carino
quello che è ancora meglio è che possiamo eliminare
il metodo di installazione e possiamo eliminare il
campi cliente, quindi stiamo eliminando il codice
e stiamo creando test migliori ma
l’installazione è intelligente, è un bel test di bob
sono molto intelligenti, il problema è
intelligente è meno manutenibile in questo caso
l’applicazione aggressiva di asciutto fatto
queste cose sono più difficili da capire
un vero problema per me è reale
problema per me ogni volta che i miei compagni di squadra sono
scrivere test più difficili
capisco ed è anche peggio quando sono
scrivere prove che è difficile per me
compagni di squadra con cui lavoro voglio dire che è un
abbastanza sicuro indizio di fuoco ogni volta che qualcuno
viene a voi e dice che non riesco a capire
esattamente quello che sta succedendo con il tuo test
puoi venire a darmi una mano?
ci sarà un qualche tipo di
estrazione perché se i tuoi test sembrano
così non dovrebbero aver bisogno del tuo aiuto
quindi sai cos’altro è interessante
riguardo tutto questo, a mio avviso, l’ho detto
stavamo per espanderci
tutto fuori e poi torneremmo e
guarda a guidare la cosa è anche dopo di noi
duplicato tutto questo codice anche dopo
ogni cambiamento abbiamo fatto il numero complessivo
di linee è a malapena cambiata non ha
cambiato ma la gente asciuga le cose così
aggressivamente che non guardano nemmeno
al reale impatto sul codice, quindi sono
praticare questa presentazione di fronte a
mia moglie e lei dice che sei così arrabbiato
mi rallegri un po ‘ e io
questi test non possono uccidermi come?
molte persone qui sono consulenti quindi io
ho consultato per un po ‘ e così
sarebbe molto comune imbattersi in test
sembra esattamente come questo ed è così
frustrante vuoi entrare e
fornire valore commerciale che si desidera aiutare
un cliente e hanno qualcuno sul
sito del cliente che puoi solo dire gentilmente
c’è un modo migliore per sapere che possiamo fare
meglio e mi ha semplicemente fatto impazzire
l’ha fatto davvero uccide il tuo
la produttività uccide la squadra
prestazioni e ce ne sono così tante
regole che vengono applicate dogmaticamente
davvero solo non si applicano a test e
siamo solo a metà strada che c’è
ancora molti altri cambiamenti che possiamo apportare
ma prima siamo solo andando a parlare di
motivatori perché le persone non lo fanno nemmeno
fare un passo indietro e chiedersi perché
stiamo anche scrivendo test intendo lì
sono molte ottime ragioni per scrivere
test, ma è probabile che ci sta andando
be non conosco sei cose diverse su
la mia lista e non tutte le sei si applicano a
ogni persona qui dentro, infatti
combinazioni probabilmente tutti qui
avrà tre su sei che si applicano a
loro e saranno diversi e questo è
okay devi solo fare un passo indietro
anche se e capire perché stai scrivendo
il test in primo luogo e poi
fai in modo che i tuoi test corrispondano a quelli tuoi
i motivatori sono specificamente io
motivato a scrivere test ogni volta che voglio
per convalidare il sistema noto anche come
ottenere feedback o prevenzione
regressione questo è un codice piuttosto standard
copertura molto standard per un codice while
la copertura è stata una motivazione principale per
test di scrittura credevano molte persone
in cento percento di copertura del codice
erano soliti fare consulenze
che nei loro accordi ci impegniamo a
darti una copertura del codice al cento per cento
e poi hanno capito che terribile
idea che fosse e smettila di farlo ma
è ancora là fuori c’è ancora tonnellate
di test là fuori che sono stati scritti
solo per consentire la copertura del codice
refactoring uno dei miei motivi preferiti
scrivere prove abbastanza auto-esplicative
documentando il sistema qualcosa io
non posso riferire a qualcosa che non ho mai
fatto ma ho lavorato con dei geniali
persone che adorano documentare il
sistema scrivendo prove quando arrivano
a un nuovo codice base, prima cosa che fanno
viene letto un sacco di test che proprio non lo fanno
lavoro per me è così noioso mi mette
dormi ma ma le persone possono usare così è
fantastico se lavorassi in una squadra con
altre tre persone e tutte loro
preferito documentare il sistema tramite
test avrò più test che conosci
il test deve solo avere un positivo
ritorno sull’investimento per me un test che
serve solo per documentare il sistema
non aiuta non ho intenzione di leggere
è più che probabile, ma se il 75% del mio
squadra l’ottanta percento della mia squadra lo farà
è un grande motivatore il tuo manager
ti ho detto che non sarei sorpreso se
ci sono persone qui che odiano l’unità
prova sinceramente l’unit test che ho
visto che li odio anche a volte forse
hai dato su di esso un sacco di gente
ho e non biasimo te e il tuo
manager ti dice che devi ancora
scrivili comunque ora che sei in un
posizione difficile proprio non sei un
credente pensi che sia uno spreco completo
di tempo e il tuo manager fa lo si fa
Sono sicuro che il motivatore si applica ad alcuni
persone in fase di sviluppo test driven qui
il motivatore più comune non penso
c’è molto da dire anche conosciuto come
rompendo il problema o migliorato
design è un grande motivatore per
scrivere test mentre ero un consulente I
una volta aveva un cliente che voleva solo
accettare nuove funzionalità nel sistema quando
la suite di test unitario era verde
il cliente non ha potuto leggere il test ha avuto no
idea quello che stava succedendo nei test ma
se fossero verdi le cose andavano bene e
se fossero rossi non ci saremmo spostati così
questo è un motivatore interessante, solo
suggerire che tutti si chiedano
cosa motiva la loro squadra e cosa
ti motiva personalmente potrebbe non farlo
in realtà è lo stesso di ciò che motiva
la squadra e poi ne hai davvero due
scelte che dovresti o rispettare o te
dovrebbe probabilmente andare a cercare un’altra squadra
onestamente devi fare ciò che è giusto per
il team si scrive un test per voi il
prima volta che leggi il test ma se tu
lascia un test che hai scritto per te
stai facendo un cattivo servizio alla squadra
devi davvero pensare a cosa
la squadra vuole ciò di cui ha bisogno la squadra e
è altrettanto importante per la scrittura
prova come è per l’eliminazione di test voi
mantenere ogni riga di codice se
c’è solo una cosa che ricordi
per favore ricorda che qualsiasi pazzo può scrivere a
test che li aiuta oggi bene
i programmatori scrivono test che aiutano il
tutta la squadra in futuro è davvero
non su di te, riguarda la squadra
cos’altro possiamo fare cos’altro possiamo fare
non solo per aiutare noi stessi, ma per aiutare
la nostra squadra vale la prima cosa
considerando che questa è la tua carriera e
sta finendo una suite di test eseguita a
ora chi ha una suite di test ora nessuno
risponderà a chi ha una suite di test
che corre in più di 10 minuti lì
vai gente coraggiosa, grazie
stai facendo quei dieci minuti di navigazione
il web Twitter Non guardo le e-mail
non stai lavorando sul codice e lo è
rompere il flusso che esegue quel test
suite per 10 minuti e non è davvero
così difficile da rendere le cose migliori
verrà eseguita una semplice regola nella suite di test
molto meglio non incrociare mai il
i confini non vanno al file system
non andare in rete non andare al
database che è semplicemente non fare nessuno dei
quelle cose
derubare quelle risorse a me non importa se
usi il setter dell’iniezione del costruttore
iniezione o qualcosa di magico
non mi importa come lo fai ma
solo non fare quelle cose e
la tua suite di test salirà immediatamente
100x mila X qualcuno qui dentro
avere in elaborazione il calcolo è il
collo di bottiglia nella loro suite di test in esecuzione
è molto bello che devi lavorare in un
dominio cool e la percentuale è ancora
ottimo tutto il resto di voi tutto ciò che avete
fare è non andare al file system
rete del database e tu sei bravo
questo semplice cambiamento aiuterà da solo
la tua squadra in modo significativo ce n’è uno
altra semplice regola è semplice e
semplice ma questo è un po ‘
denso la classe sotto test dovrebbe essere la
solo una classe concreta trovata in una prova
l’ultima volta che ho dato questa presentazione
qualcuno ha detto cosa intendo per concreto
Intendo l’implementazione il reale
implementato qualsiasi classe con un
implementazione se riesci a farla franca
dovrebbe essere l’unica classe al suo interno
testare quindi il cliente di un film movie di prova
prova cliente di classe se riesci a scappare
con esso nessun film nei test dei clienti
per esempio questo test può essere un po ‘ a
problema il test che hai visto finora
incluso questo è una stringa conflating
verifica dell’edificio dei punti di somma
verifica delle spese di somma qui noi
avere un metodo di prova del metodo del cliente ma
i risultati dipendono sia dal noleggio che dal
sui film quindi ovviamente qualsiasi modifica a
noleggio o film può anche causare questo test
fallire anche se siamo nel
test del cliente abbiamo un implicito o
dipendenza esplicita a seconda di come
lo guardi è il test a destra
l’alternativa piuttosto che vivere con
la dipendenza implicita esiste davvero
soluzione semplice tutto ciò di cui hai bisogno è una finta
qui abbiamo una simulazione che è davvero giusta
comportandosi come un mozzicone che è praticamente
come uso sempre i miei voti per essere onesti
e questo è ora qualsiasi cambiamento al
noleggio o qualsiasi modifica al film che è
anche più in basso non avrà alcun impatto
questo test intendo diverso da un’API
cambiare ovviamente ma nessuna implementazione
all’interno di quelle classi causerà questo
prova per rompere
che è una grande nota rapida
avresti potuto notare no ne sono sicuro metà
la gente era offesa e l’altra
metà pensato Ho fatto un errore è nullo
solo una stringa magica qui proprio come
Padrino a sinistra è solo un
stringa magica qui se hai solo un
avversione a null quindi sub il metodo
ma io non vedo alcuna differenza tra
quelle stringhe magiche così in movimento che abbiamo
concatenazione di stringhe ora verificata qui
abbiamo test semplici che verificano anche
la carica totale e il punteggio totale
puoi introdurre questi test focalizzati
esclusivamente sulla somma così ora abbiamo
test ancora più piccoli abbiamo avuto ciò che noi
il pensiero sembrava un test piuttosto semplice
abbiamo pensato forse a una singola responsabilità
perché chiamiamo un metodo ma
risulta non tanto perché quello
il metodo stava chiamando altri metodi qui noi
basta testarli tutti in isolamento e noi
prendere in giro cose o mozziconi come preferisco e
e abbiamo anche test più piccoli con anche
meno responsabilità e ora stiamo bene
coperto fantastico è tutto fantastico
eccetto che noi conosciamo questo null e noi
avere zero punti e questo è un po ‘
interessante quindi ovviamente ne abbiamo bisogno di un altro
test che non è davvero un grosso problema
significa che questo test cinematografico è carino
semplice abbiamo film e noi
specificare il numero dei nostri che specifichiamo il
digita e poi specifichiamo i numeri in
ci sono giorni e riceviamo un costo per
i giorni e ancora prove semplici
venendo a questo test fresco vieni a questo
prova quando vuoi registrarti
dovrebbe essere in grado di capire cosa c’è
andando molto rapidamente che è
grande questo è l’obiettivo che vuoi essere
in grado di venire a un test per vedere cosa è andato
sbagliato e cambiarlo il più velocemente possibile
questo è un grande passo incrementale questi
i test rendono la vita molto meglio per il nostro
squadra in cui ora confidiamo
tutto perché è tutto proprio come
coperto com’era prima così fantastico noi
mantenere quella fiducia, ma abbiamo
isolamento ci sentiamo a nostro agio cambia
a una determinata classe creerà solo
fallimenti nel test per quella classe
prova di film cambia film o film scusa
le modifiche di classe ai test sul film falliscono i clienti
cambiare il test del cliente fallire ma sono
tutto isolato in un modo usando quegli stub
che le altre modifiche non causeranno
quei test per fallire non più a cascata
fallimenti uno dei grandi motivi per le persone
odiare i test unitari
va bene così le cose sono molto meglio nonostante
la mia felicità con le unit test ci sono
ancora un altro test che vorrei onestamente
giusto ogni volta i test ora
sono molto isolati e questo è bello ma
stiamo solo lavorando con i mock così abbiamo
nessuna verifica dell’integrazione, proprio noi
abbiamo una lacuna nei nostri test che non ha funzionato
esistere prima di questo è ovviamente il
problema che dovremmo affrontare intendo noi
non vogliamo trovare questo divario in
produzione quindi prendiamo questo test unitario
riunisce tutto e condivide no
l’integrazione sorprende e ci si sente molto
molto come mi sono contraddetto
perché ora abbiamo lezioni concrete e
quello che mi viene in realtà è che io
avere test diversi per quello che sono
cercando il tipo di feedback che
Sto cercando di farlo, non è così
ti confondo invece mi piace avere il mio
i test unitari servono a scopi specifici
test che hanno una singola classe concreta
sono progettati per testare i rami del codice
in logica tutti i test che hai visto
prima testato tutti i rami loro
testato per essere addebitato per i film
con un numero specifico di giorni
testato la concatenazione di stringhe in
isolamento ma qui abbiamo una cosa
questo porta tutto insieme quindi i test
che i mozziconi li chiamo solitari
mette alla prova i passaggi che portano tutto
insieme o i test che portano
tutto insieme come questo il
test di integrazione li chiamo socievoli
perché le classi parlano tra loro
e spezzo queste cose in realtà
avere spazi dei nomi separati in Java
progetti quindi tutti i test solitari
vivere in uno spazio e tutto il
test socievoli vivono in un altro spazio
in questo modo quando uno di loro fallisce, posso
guarda il fallimento e dì bene cosa
sto esattamente testando qui bene cosa sono
preoccupato se è socievole, sono solo io
preoccupato per l’integrazione se sto testando
rami di codice o casi d’angolo nel mio
test socievoli sto facendo la cosa sbagliata
Ho un test mancante lì ho un
Indizio che ho un test solitario mancante
nessun problema va bene il test solitario se
allora il fallimento è nel test solitario
forse ho un problema reale nel mio dominio
o ho solo bisogno di aggiornare il test ma io
fare di nuovo test che si stanno concentrando su a
unica responsabilità, quindi non solo
il test mette alla prova solo una cosa, ma è così
anche un tipo specifico di test che racconta
io dove devo andare basato sul
feedback e li separi per fare
è facile per te sapere dove andare
in base al feedback
in quale altro modo puoi migliorare le cose che sono
un paio di modi semplici questo è il film
prove che tutti abbiamo visto se il secondo se
la seconda asserzione non ha esito negativo
il codice sottostante verrà eseguito presumo
lo sanno tutti, ma tu hai mai
davvero pensato a questo quanto prezioso
è quel codice il codice sotto il secondo
affermazione se fallisce penso che sia facile
la risposta sarebbe che non ha alcun valore
perché non esegue quale valore
c’è nel codice che non funziona ma
è peggio davvero se ci pensi
non c’è valore nel codice che non lo è
corri ma è ancora seduto lì
ancora mantenendo quel codice quando questo
test fallisce bisogna andare a vedere la
prova e devi cercare di capire
cosa sta succedendo, quindi non solo a
affermazione fallita ma hai rumore
sotto di esso e non hai idea di cosa sia
sta succedendo con quel rumore se ne hai
questo fallimento non sai cosa sta succedendo
dopo averlo seguito in qualunque modo
sai che hai avuto una carica per
bambini e tu ti aspettavi 1.5 e tu
Ho ottenuto tre punti 0, quindi torniamo indietro e noi
possiamo vedere che ci aspettiamo 1.5 in
diversi posti quindi dobbiamo usare il
numero di linea in fondo e lo sappiamo
tutto sotto quella linea era senza valore
così che non è grande So di un
l’errore non è stato generato automaticamente
informazioni sui test rimanenti
dato un test con più asserzioni
quando stanno passando tutti loro
fornire valore è ovvio che è facile ma
quando fallisce, viene rimosso tutto il valore
dalle successive affermazioni e quando
di fronte a un test fallito con più
asserzioni che sei costretto a fare uno di
due scelte nessuna delle quali è buona
per essere onesti si legge tutto dentro
Indovina se funzionerà la prossima volta
e nessuno di noi lo farà perché
siamo pigri come dovremmo essere invece noi
verrà eseguito il test fisseremo la
l’asserzione eseguirà i test e lo faremo
correggi l’asserzione e noi eseguiremo il
prova e aggiusta ripetutamente l’asserzione
fino a quando tutto funziona probabilmente mai
fermandomi anche a pensare perché sto sprecando
il mio tempo lo fa perché è diventato
naturale per noi è solo quello che facciamo ora
o potremmo smettere di farlo e se noi
ha eseguito il test una volta e abbiamo ottenuto tutto il
feedback allo stesso tempo che sarebbe quello
sii gentile e non suona così pazzo
lo fa ma ne hai parlato un po ‘
quando dici di una affermazione per
prova e loro pensano che tu sia pazzo ma
questo è quello che sembra questo è il
stesso test solo due dei quattro perché
è una diapositiva ma improvvisamente i nostri test sono
facile può facilmente consumare di nuovo single
responsabilità e quindi ora abbiamo un test
la suite viene eseguita ogni volta che viene eseguita
di vedere un fallimento e non sapere
cos’altro sta succedendo vediamo tre
fallimenti vediamo che l’accusa per a
i tre giorni dei bambini sono previsti 1.5
e abbiamo avuto tre e quattro quattro giorni di noi
previsto tre punti oh e ottenuto 4,5 e
45 ci aspettavamo 4,5 e ne abbiamo sei così è
solo tre fallimenti rompendo le cose
su invece di avere un fallimento che abbiamo
tre ma la somma di questo è ovviamente
meglio non ci vuole un genio
capire che improvvisamente il modello ha
vieni fuori che qualsiasi cosa è più di due giorni
rotto ma è sempre spento di 1,5 quindi ora
puoi andare nel tuo dominio e capire
ciò che questo ha comportato ti ha rotto
il codice di dominio o ha fatto il business
in realtà basta dire che è il cambiamento
che vogliamo fare ma la somma del
gli errori sono migliori, quindi perché non dovresti
voglio quell’informazione così l’attesa
i valori di ritorno danno valore
informazioni per test come ho detto la somma
è meglio delle parti e di tutti
tempo scrivi più asserzioni
stai sopprimendo informazioni preziose
di nuovo non solo per te più importante
probabilmente per i tuoi compagni di squadra di venire qui
senza contesto, quindi avvolgendolo un po ‘
bit la seconda cosa che vorrei
te per andare via ricordando se se tu
disposto a darmi due cose
ricorda è il test che sei tu i test
che possiedi finisci per possederti
tanti esempi di questo e io amo tutti
di loro così da sopportare con me immagino che tu sia
lavorando per una compagnia di assicurazioni e tu
bisogno di guardare le persone dal loro sociale
numero di sicurezza o qualsiasi altra cosa
identificatore in realtà non si importa
voglio convalidarlo in qualche modo quando
qualcuno chiama e chiede del loro
politica che devi essere in grado di tirare su
il loro file ma cosa succede se i loro nomi jay
e invece era jay 1 sono ancora
Sarai un cliente che sei ancora
andando a cercarmi tutto è immobile
andando a lavorare fuori va bene la cosa peggiore
quello che succede è che forse ricevo posta
con il mio nome sopra e sembra un po ‘
un po ‘sbagliato ma è così che i test
quello convalida queste cose le prove
che convalida l’ID univoco di cui hanno bisogno
lavorare perché è necessario essere in grado di guardare
persone a gestire la tua attività, ma il
test che verifica che il mio nome sia
alfa non è necessario è buono a
sono sicuro che sia bello forse intendo adesso
ci sono nomi con alfa, quindi quanto è bello
è stato davvero quel test, ma forse è buono
avere forse non è in quel caso lo è
probabilmente è facile scrivere il test e tu
andare avanti, ma per quanto riguarda qualcosa come un
modulo web Voglio mettere uno sfondo rosso
ogni volta che qualcuno mette uno nel loro
il primo nome va bene la logica semplice e carina
giusto ma come stai andando al test unitario
quel selenio un qualche tipo di web runner
ciò richiede cinque minuti per eseguire 10
i minuti per eseguire è è davvero
vale la pena è davvero la pena di aggiungere al
la tua suite di test per convalidare che il
lo sfondo è diventato rosso puoi ancora fare
attività senza uno sfondo rosso
la tua pagina web penso che tu possa farne un’altra
esempio che non penso le persone
considerare è quello che ho detto prima, ma
questo è il più comune che vuoi
scrivere TDD è fantastico, io sono
tutti a bordo con TDD ma proprio così
ti aiuta a progettare il codice che ti aiuta
creare progetti mantenibili e aiuta
guidi verso il design che desideri
design evolutivo così tante cose grandiose
così tante parole d’ordine ma una volta che hai finito
una volta che hai un buon design che prova
forse non è necessariamente così prezioso
guarda quel test per cui hai creato
tdd e deciderà se aiuterà il
squadra in futuro se ti aiuta a ottenere
al design che hai ottenuto è fantastico
è servito al suo scopo nessuno sta andando
per dirti che non dovresti scrivere
quel test ma ciò non significa che tu abbia bisogno
per mantenere quel test per sempre e il tuo
la squadra deve mantenere questo test per sempre
quindi guarda un test e decidi se lo è
ne vale la pena al momento ma anche se lo sarà
continuare a valere la pena di mantenere fermata
pensando al test della tua persona
punto di vista pensa alla squadra I
significa che è decisamente il massimo
livello togliere da questa presentazione
i tuoi test non sono speciali, non lo sono
i fiocchi di neve belli o unici hanno il
lo stesso testo in decomposizione è ogni altro test
è tutto sulla tua squadra, in realtà no
su di te si tratta di fare il tutto
squadra più di successo e si tratta di
pensando al contesto che sei
e come puoi aiutare la tua squadra
giusto così sono alcune domande grandiose
ciò che è asciutto non ripeterlo
significa solo che significa molto diverso
le cose a persone diverse ci credo
è nato nel programmatore pragmatico
Sono sicuro che è venuto prima che quel libro fosse
rilasciato e in pratica dice solo
non ripetere lo stesso concetto alcuni
le persone interpretano ciò che non si ripete
gli stessi personaggi con cui non sono d’accordo
quella definizione, ma è molto comune
trovarlo ma direi il
essenza di esso è semplicemente non ripetere il
lo stesso concetto all’interno dei vostri sistemi va bene
grazie come prendi in giro le lezioni finali
trova un linguaggio migliore che fosse conosciuto da CC
cosa immagino ci sia se stai usando
alcuni se stai usando una classe finale
devi assolutamente usare che potresti
basta avvolgerlo in un nodo finale di classe e
allora e prendi in giro che è quello che vorrei
fare cosa se i dati rilevanti ci aiutano
scoprire falsi negativi e falsi
positivi finché hai un
motivatore che ti spinge a scrivere un test
scrivilo e scrivine più di tanto
come fornisce un valore che è grande ma
il takeaway dovrebbe essere questo test
fornendo valore non ho solo bisogno di
prova ciecamente perché limitare non disegnare
questi test saranno aggressivi
miglioramenti della leggibilità causano problemi
fuori dai test puoi ripetere il
la seconda metà mi dispiace ancora di non averlo capito
o sarà questa leggibilità
i miglioramenti causano problemi al di fuori di
prova ah presumo che la domanda è perché
limitarlo sarebbe meglio duplicare
inoltre, voglio dire che è fantastico
domanda perché è bello pensarci
codice in questo modo non posso dire di no
asciugare il codice mi faranno buttare fuori
la comunità ma ma pensando al
ritorno sull’investimento di ogni linea di
il codice è estremamente prezioso non non solo
per i test ovviamente abbiamo il tempo
per alcuni altri su cosa pensi
nominando mi manca il metodo di test descrittivo
nomi nei tuoi esempi Penso che se l’ unità X
era stato creato in un linguaggio che
effettivamente supportato e
funzioni onime che non avremmo
avevo nomi di test di default, penso
sono grandi quando sono grandi e
sono peggio che male in molte occasioni
perché hanno torto la prima versione
di questo libro aveva nomi di test che erano
sbagliato perché tu scrivi un test lo farai
scrivi il nome prima la maggior parte del tempo
e poi scrivi il test e il test
o ruota in quel momento e tu
dimentica di cambiarlo o qualcun altro
comporta il test in futuro e come
abbiamo detto nell’ultima presentazione il
codice di citazione famoso non mente che è
grande e vero, ma i commenti mentono e
prova nomi un commento non scherzare
te stesso un nome di prova è un commento è
nient’altro è un modo praticabile per BDD
migliorare la manutenibilità dei test o del tuo
pensieri su PDD in generale è una bellezza
molto supponente e se la squadra è attiva
consiglio di andare per questo fantastico e se il
la squadra non è a bordo è la peggiore idea
forse non il peggiore ma piuttosto terribile
si tratta di acquistare è estremamente
supponenti ci sono molti supponenti
quadri di prova là fuori e nessuno dei
loro sono la risposta giusta è tutta una questione
la squadra penso che questo sarà l’ultimo
domanda se stai facendo single
proteste di asserzione si finirebbe facilmente
su refactoring per asciugare se si copia
lo stesso setup per la moltitudine di
asserzioni sì non nel metodo di installazione
all’interno del test stesso assolutamente il
la chiave è avere quel piccolo universo che è
incredibilmente facile da digerire così quando vai
a un fallimento non devi andare
dovunque questo è il mondo perfetto
forse hai un costruttore e tu già
sapere cosa sta facendo il costruttore ma il
mondo perfetto sei arrivato lì
Builder crea l’oggetto dominio e
guardi cosa viene effettivamente testato
il valore atteso come perfetto letterale
guardi il metodo chiama a
chiamata di funzione al dominio ed è
estremamente chiaro cosa sta succedendo idealmente
non vuoi fare affidamento su alcun tipo di
L’IDE deve leggere un test che questo
mi sento solo in colpa
tu
Please follow and like us: