
va bene ragazzi, ascoltatemi in
torna tutto bello così come qualcuno
già detto simili al
la presentazione sarà Fight Club a tema
se non hai mai visto Fight Club che è
okay, non è davvero così importante
ho cercato di esprimere tutto ciò che c’è dentro
tipo di un modo che ha reso un po ‘
divertente ma anche mi aspetto probabilmente metà
la stanza forse non l’ha mai vista, quindi è così
non è un prerequisito che senti ancora sentire
libero di andartene se odi Fight Club
adesso ma non è un prerequisito
Salterò la slide delle credenziali I
Supponi che voi ragazzi potete cercarmi se voi
voglio presumere che a nessuno importa davvero
dove ho lavorato o cosa ho fatto cosa
vuoi davvero sapere come puoi
creare alcuni test migliori così quando lo facciamo
esegui i nostri test che non conosco forse alcuni
le persone le gestiscono sempre con l’auto
prova forse alcune persone li eseguono solo in
costruire come e mai eseguirli ma a
il posto che spesso li gestiamo è dopo
abbiamo appena apportato alcune modifiche ed è
circa il tempo di fare il check-in, ecco cosa
stiamo per fare stiamo per controllare
in qualche codice e vediamo che i nostri test
stanno correndo e poi vediamo questa merda
e quello non è grande ma quello che noi
in realtà vedere è questa merda e il
problema di tutto questo è che con
test falliti parli solo usando
volgarità quindi quali sono i cambiamenti che io
fatto qui avevo un dominio di film
oggetto e poi ho un film test e
Ho cambiato il mio oggetto dominio del film e
poi ho cambiato il mio test cinematografico e ho corso
tutto e tutto è stato fantastico
i clienti dovrebbero essere felici di averne di nuovi
funzione pronta per metterlo in produzione
ma poi ho eseguito il test e qualcosa
fallito e aveva quello che pensavo fosse
niente a che fare con quello che stavo lavorando
quindi ora sono incazzato perché non ho
scelte questo punto ho zero scelte
voglio fare il check-in, ma devo guardare a
prova che non ho scritto che non l’ho fatto
correre che può o non può aiutarmi, ma io
non ho altra scelta che andare a lavorare così
questo è Bob e Bob ha test non validi
sfortunatamente, Bob è anche il tuo compagno di squadra
Bob vuole fare bene Bob vuole aiutare
scrivi un buon codice che Bob vuole scrivere
test che ti permetteranno di refactoring
il tuo codice base e mantieni il tuo codice
meglio, ma Bob non sa come fare
questo perché bob è in realtà un bel
buon programmatore è per questo che è passato
il tuo test di programmazione per unirti al tuo
organizzazione Bob sa scrivere bene
codice ma non sa come scrivere bene
prova e sfortunatamente pensa Bob
sono la stessa cosa che Bob ti ha lasciato questo
testare questo test non è poi così complicato
ma è molto più complicato
di quanto vorrei essere lasciato con
Tess sta fallendo , non è molto
lungo ma prima possiamo davvero anche ottenere
in esso dobbiamo già guardare a
loop che vuole guardare un ciclo e a
test bob ha deciso che stava per
asciuga il nostro codice con un ciclo nel suo test
quindi è quello che abbiamo e prima che possiamo
anche davvero guardare la carne del test
dobbiamo capire cosa stiamo collegando
attraverso così abbiamo clienti come è
non è così complicato sai che lo sappiamo
cosa significa o cosa intendiamo in questo
punto non abbiamo idea che abbiamo un
test fallito e sappiamo che abbiamo
i clienti non abbiamo capacità di guardare
il test fallimentare e capire cosa c’è
andando avanti dobbiamo fare affidamento sul nostro IDE
che ci dà abbastanza facile andare a
definizione e cool abbiamo clienti
inoltre non è così complicato che ci sia
niente qui è assolutamente terribile
ma abbiamo già fatto affidamento sull’IDE a
portaci da qualche parte per aiutarci a capire
cosa sta succedendo e ora dobbiamo fare affidamento
sull’IDE ci portiamo di nuovo da qualche altra parte
perché non sappiamo che cosa è un cliente
è in realtà inizializzato per te è
inizializzato in questo metodo magico dato
a noi dal nostro quadro di prova, se lo siamo
comodo con questo metodo magico allora
è grandioso
ma cosa succede se non siamo cosa se siamo
in coppia con qualcuno e stiamo mentoring
loro e loro dicono perché è questa magia
metodo get ‘eseguire perché non lo so
perché è così che abbiamo
ho scritto test per sempre e nessuno
mi sono fermato per dire perché così qui abbiamo un set
up metodo e stiamo inizializzazione del
cliente di David e cliente di John e
il cliente Patt e il cliente Steve
e poi li stiamo mettendo tutti sul
array di clienti che già conosci
questo è quello che useremo in ordine
per fare un giro in modo che non guarderemo
la madre oggetto perché cerchiamo di non
scava così in basso anche se è così
tipo del punto di questo perché abbiamo
scavare così in basso ma ne abbiamo solo 50
minuti quindi torna al test fallito
looping attraverso le istanze dei clienti noi
può finalmente arrivare al nostro valore atteso così
abbiamo un test fallito che abbiamo già avuto
per navigare in un campo Java e ad alcuni
metodo di supporto speciale solo per ottenere
attraverso il loop e ora siamo al nostro
valore atteso e ovviamente non possiamo
dire ciò che il nostro valore atteso è o
perché sta usando un altro metodo di supporto
quindi se andiamo ad un metodo di supporto
dobbiamo prima inizializzare gli argomenti
il primo passo è solo capire cosa
argomento è di nuovo che dobbiamo usare un altro
definizione go-to con cui non possiamo lavorare
questo test voglio dire spero che questo sia doloroso
per voi ragazzi guardando guardando così com’è
per me presentarlo per favore
così terribile II prova questo
è la presentazione di fronte a mia moglie
come puoi non darlo
la presentazione così arrabbiata è come quella di un bambino
recesso fammi arrabbiare così mi dispiace
probabilmente sarò arrabbiato per un po ‘
mentre abbiamo un altro metodo di supporto
dobbiamo entrare in questo metodo di supporto
non ha nemmeno fare nulla che
interessante
sta facendo un po ‘di formattazione è
prendendo alcune corde e oggetti di noleggio
e sta solo mettendo tutto
insieme e non abbiamo nemmeno il tempo di farlo
parlare della legge della violazione di Demetra
perché questi test sono così cattivi così noi
Voglio solo immaginare con cui stiamo lavorando
questi test vogliamo solo controllare nel nostro
il film cambia e siamo giù in due
metodi di aiuto guardando una legge di
La violazione di Demetra fondamentalmente pensando
come va bene potrei aver bisogno di cercare un
nuovo lavoro non posso lavorare in questo modo
è quello che penserei comunque
quindi lo ignoreremo per ora e
capiremo che i loop di informazioni di noleggio
sui noleggi restituisce una stringa descrittiva
un noleggio non è così male, credo di nuovo
alla dichiarazione cosa andremo di seguito
avere un oggetto cliente che siamo
passare attraverso okay non è poi così male
Intendo ignorare il fatto che non abbiamo
idea per Dave che scalpita Steve ma almeno
sappiamo cosa sia questo tipo di oggetto anche se
non sappiamo quale istanza sia e
finalmente possiamo arrivare a un concatenato
stringa che non è male
ish quindi entriamo nell’aspettativa
e cosa fa ci vuole il
il cliente prende alcune stringhe e questo
il formato è tutto insieme è così
tutto ciò che serve è tutto questo codice per noi
per capire cosa sta succedendo in questo
test abbiamo avuto un test negativo in particolare
la classe del film ha cambiato il test del film
anche cambiato tutto ha funzionato sapevamo
che il nostro codice funzionava, ma invece di
potendo effettuare il check- in dovevamo guardare
attraverso tutto questo codice che è per un
classe cliente fa nessuno qui dentro
penso che sia una cosa ragionevole noi
non dovrei fare tutto questo e
c’è un modo migliore ma prima di arrivare
nel modo migliore dobbiamo dire che lo faremo
va bene così Bob vuole aiutarci Bob
vuole che scriviamo test migliori Bob Bob
vuole scrivere test migliori per noi lui
vuole aiutarci a scrivere codice mantenibile
cosa possiamo dire di ciò che ha fatto Bob
beh, è stato approvato è comunemente approvato
nel nostro settore purtroppo ma non puoi
veramente incolpare Bob per quello che ha letto
che doveva asciugarsi il cappotto era pronto
e Bob asciugò la giacca e lui
ha usato la madre degli oggetti in modo che si nascondesse
di nuovo la sua creazione di oggetti da qualche parte
solo applicando a secco forse va bene
forse non è che non sono qui per davvero
dirti che è buono o non lo sono
qui per chiederti perché stai facendo questo
quindi lo applichi o lo stai solo alla cieca
c’è un modo migliore quindi direi dove
fallisce è che vorrei rapidamente
capisco questo test quindi mi sto verificando
Voglio capire rapidamente cos’è
forse continuando con questa prova fallimentare
quell’errore era davvero utile ma
passare attraverso tutti questi passaggi non lo era
utile in modo specifico, quindi ho dovuto trovare
la prova della dichiarazione per iniziare con poi io
dovevo trovare la definizione di clienti
che stavano iterando per poi trovare
l’incarico ai clienti dovette quindi
digerire il setup poi ho dovuto guardare
una madre oggetto che non ho nemmeno fatto
preoccuparsi di portarvi ragazzi attraverso poi io
ha dovuto digerire ogni cliente diverso
creazione di istanze all’interno dell’oggetto
madre dovevo fare tutto questo prima di me
capito la prima linea del fallimento
prova che è del tutto troppo
complessità per te da guardare
attraverso per capire la prima linea di
un test fallimentare quindi devi digerire
il valore atteso creato da
chiamare un metodo con una stringa a
cliente il risultato del noleggio di chiamata
informazioni per stringere istanze e blah blah
blah trovare il metodo di informazioni di noleggio
determinare quale sia il suo valore digerire il
metodo di informazioni di noleggio sta creando un
stringa e dati di ritorno e ora hai
mentalmente risolto l’ artista da aspettarsi
dichiarazione che dovevi fare tutto questo 10
passi 10 passi per capire semplicemente
cosa sta succedendo in questo test e 0
personaggi che hai letto finora
aiutarti nella produzione che è a valore zero
ai tuoi clienti zero valore per il tuo
affari non hai fatto altro che
risolvere il valore atteso di un test se
questo era Fight Club questo sarebbe il
punto in cui dice che voglio che tu colpisca
io più duro che puoi
nessun personaggio che hai digerito
correrà in produzione non colui che
trascorre tutto questo tempo erano otto minuti
nella presentazione non guardando uno
personaggio che sarebbe mai stato eseguito e
aiutare il business in alcun modo a parte
la regressione è anche praticamente
impossibile risolvere questo test senza alcuni
più codice più programmazione come fai tu
come fai a sapere cosa sta fallendo e
ciò che passa è anche utile
senza guardare il ciclo e e
o mettendo una dichiarazione di debug in
lì per sapere dove si rompono le cose o
senza mettere qualche console.writeline
lì si deve scrivere codice più o
affidati all’editor per darti un
punto di rottura o qualcosa del genere
non puoi nemmeno usare questo test per capire
cosa sta andando male, allora perché?
fai questo perché ci metti in contatto
questo noi eravamo soliti scrivere codice senza
test e poi qualcuno ha detto hey you do
sai che puoi scrivere questi test e lo faremo
darti fiducia e hai iniziato
andare a casa la sera non pensavo
tutto andrà in pezzi e
mi licenzieranno, iniziò a tornare a casa
con una certa sicurezza e questo è stato grandioso
ma applichiamo solo il tradizionale
schemi di programmazione per i nostri test e noi
mai fare un passo indietro e dire è questo codice
diverso ciò che è diverso sul
il codice è un test davvero la stessa cosa
come produzione dovremmo asciugarlo nel
allo stesso modo qual è la nostra motivazione per fare
tutte queste cose che scriviamo testiamo noi
non ne ho bisogno con il tempo che non dobbiamo
soddisfare le persone che non ci piacciono se noi
fatto un passo indietro questo è il posto felice
da un Fight Club cosa succede se facciamo un passo
di nuovo al nostro posto felice dove non avevamo
codice e questo è tutto il nostro posto felice
quando non abbiamo il codice di cui preoccuparci
un passo indietro e diciamo bene cosa può fare
scriviamo qui per aiutare effettivamente il
business ogni riga di codice ha un ROI a
ritorno sull’investimento che vogliamo davvero
prendersi cura delle cose che sono preziose
la roba che effettivamente porta il
business un certo tipo di valore porta il
squadra qualche tipo di valore, quindi cosa succede se noi
fatto un passo indietro e abbiamo detto che lo sai
forse asciugando tutto esattamente
lo stesso modo non è la soluzione appropriata
forse ho bisogno di guardare i miei test in a
modo completamente diverso così ancora
scende al motivo per cui ciò che ci motiva così
diciamo che per il bene del discorso che
ciò che motiva Bob è che vuole abilitare
il refactoring richiede un feedback immediato e
egli vuole rompere il problema fino in
pezzi più piccoli direi che Bob ci è riuscito
nel consentire il refactoring, Bob ci ha dato un po ‘
test che coprono il dominio e posso
cambiare le cose e verificarlo
tutto funziona
Ottengo il feedback immediato del
prove fantastiche Bob ha fallito assolutamente
terribilmente a rompere il problema in
pezzi più piccoli abbiamo così tante cose
legato insieme in questo test che ci è voluto
noi dieci passi per capire anche il
valore atteso è ridicolo
quantità di accoppiamento Josh Graham che puoi
lo so
il suo account su Twitter, una volta invio un hit
Una volta gli ho detto perché stai scrivendo
prova perché ti preoccupi di scrivere i test
e ha detto che mi piace ha detto che ho creato un
piccolo universo in cui il software esiste
fai una cosa e fallo bene, penso
questa è la mia spiegazione preferita del perché
scrivi test che vuoi un piccolo minuscolo
universo per lavorare dentro e tu vuoi
fiducia che qualunque cosa tu stia testando
funziona come ci si aspetterebbe
Intendo dire che i sistemi software sono grandi
sono complessi, non c’è modo che noi
può davvero ottenere la fiducia intorno al
tutto con una coppia diversa
test abbiamo bisogno di rompere le cose e
testarli individualmente così andremo
tienilo a mente e penseremo
su come possiamo ancora avere un piccolo
universo ma anche noi possiamo applicare asciutto è
non come se dovessimo semplicemente asciugare
la finestra è preziosa ma come funziona
applicare per testare forse non è la stessa cosa
come codice di produzione, quindi questi test erano
ovviamente usiamo il metodo helper
e abbiamo ripetuto come pochi personaggi come
possibile grazie a Dio perché i personaggi
non erano in vendita quindi abbiamo dovuto salvare come
molti come potevamo pensavate che il
album fa sentire chiunque che il
l’applicazione di DRI ti ha aiutato rapidamente
capisco il test fallito che tengo
aspettando che qualcuno dica di sì ogni volta
Ho fatto quella domanda, voglio dire che deve esserci
qualcuno ed è ok che è in realtà parte
di questo ci sono tre livelli che quello
puoi applicare asciutto e alcune persone vogliono
per applicarlo a tutti e tre e questo è
fantastico se ti chiedi perché sei
scrivere un test e perché lo stai asciugando
il modo in cui sei e se si arriva
forse con buone ragioni per tutto ciò
sei una squadra di due persone forse entrambe le cose
ti piacciono i test scritti in quel modo forse
non ti dispiace guardando attraverso tutti
quel codice prima di capire cosa c’è
andare su un test va bene fino a quando
coscientemente prendere questa decisione go
per questo penso che ci sia un modo migliore
personalmente ti consiglio vivamente di cambiare
il tuo approccio mi consiglia di applicare a secco
a livello di suite così globalmente diciamo
che desideri che un cliente utilizzi il test
builder pattern e crea il tuo
i clienti con i test builder diciamo
vuoi muoverti usa il test
modello di costruzione va bene grande ora nel mio
test dei clienti posso essere in grado di seguire questo
builder pattern è un riutilizzo globale
asciugato fantastico voglio un film stesso
cosa così ho questo comune
comprensione del codice che sta per essere
utilizzato in tutta la suite di test anziché
solo a livello di fixture il problema
con i test di Bob erano tutti suoi
applicazione
i conducenti al livello fisso che il noleggio
il metodo di informazione non li aiuterà mai
altrove la dichiarazione di aspettativa è
sicuramente non li aiuterò mai
altrove, quindi abbiamo tutti questi aiutanti
metodi che non sono veramente di aiuto
metodi sono solo un po ‘ come nascondersi
la tua merda nell’armadio sto andando
metti questi personaggi qui e
fai finta che tutto vada bene, ma è così
Non bene che hai fatto le cose peggiori per
la tua squadra ovviamente non penso
davvero bisogno di entrare in essiccazione perché
del livello di test che ha senso
vuoi asciugare le cose in un
test individuale e tu vuoi asciugarli
in tutta la suite ma forse
Non cerco di raggruppare i test insieme I
significa che Pat è un cliente Steve è un
cliente Jon è un cliente e ancora nessuno
di questi test ha collaborato in alcun modo
ma tutti questi test hanno portato il
sovraccarico concettuale di creare tutto
tre clienti quindi hai creato tutto
tre non li usarono mai in alcun modo
qualunque cosa, ma hai richiesto
manutentore per cercare di capirlo
verifica che non vengano mai usati è a
sprecare è un modo migliore secondo me
si avvicinerebbe agli stessi test direi
non testare diversi clienti allo stesso modo
tempo se non stai andando a testare diversi
i clienti quindi non li creano al
allo stesso tempo non estrarre singoli metodi
per un valore di ritorno a stringa singola fare
creare dati dove non è necessario parte
di un qualche metodo di framework speciale c’è
nessuna regola che dice che devi usare la configurazione
solo a mio avviso smettere di usare
completamente se ti piacciono gli acronimi e
ciò che il programmatore non ti penso
dovrebbe scrivere test che sono asciutti al
livello suite e asciutto nel test ma
concentrarsi sul test stesso essendo umido a
frase descrittiva e gestibile o a
procedura descrittiva e gestibile
qualunque cosa tu stia cercando, vuoi
qualcosa che puoi andare a questo test
sta fallendo okay idealmente tutto te
bisogno è proprio lì all’interno di quel test noi
non dobbiamo fare affidamento su un IDE che non abbiamo
devo saltare e andare da qualsiasi altra parte
tutto ciò che sta fallendo è proprio lì
il prossimo scenario migliore è tutto
quello che sta fallendo è qui eccetto che c’è un
accoppiare modelli globali qui
in questo potrebbe essere una fabbrica che crea tutto
dei nostri oggetti qualunque ne sia
tipo di modello globale che usi ma
è qualcosa che quando vai a questo è
è non del tutto sconosciuto
non estraneo è qualcosa che hai
visto prima è uno schema che tu
capisco già all’interno della suite di test
quindi come facciamo a fare questo per Bob
la prima cosa che facciamo è sostituire il
loop con il test individuale intendo
questo è ovvio come lo diventa noi
interrompere l’interruzione del ciclo
questi clienti fuori dal giro e noi
avere più personaggi qui va bene
ogni singolo test è ora diventato
semplificato ora quando le cose falliscono
in realtà hanno risultati che possiamo usare invece
di un ciclo con un fallimento che abbiamo
tre fallimenti e abbiamo un passaggio
test che ci dà anche alcuni
informazioni su dove sono finite le cose
sbagliato quindi sappiamo quali clienti
causato problemi sappiamo quali clienti
non stanno causando problemi nella creazione di tutti
questo è ciò che alcuni chiamerebbero duplicazione
Mi aspetto che ci siano molte persone nel
stanza che probabilmente si sente a disagio
con tutto questo è quello che le persone
prenderebbe in considerazione la duplicazione ma questo è
solo passo uno è solo dopo che avremo
duplicato tutto ciò che siamo liberi di fare
asciugare qualsiasi cosa così la prossima cosa che vuoi
fare è aspettarsi letterali i test delle cellule
guarda ora e devi chiedertelo
perché diavolo stiamo chiamando un aiutante
metodo per creare una stringa non lo faccio
capire perché qualcuno vorrebbe mai
chiamare un metodo parametrizzato una volta quello
non fa altro che restituire una stringa
sai qual è la migliore rappresentazione di
una stringa è una stringa letterale
è così non c’è niente di meglio
rappresentazione di una stringa, quindi una stringa
letterale quindi ovviamente mi dispiace, ovviamente
questo è quello che stai cercando per te
non è necessario chiamare il metodo helper
va bene che puoi spendere più personaggi
Sono qui per dirti che è assolutamente
va bene per spendere più personaggi se questo
prossimo rende i tuoi test più leggibili
cosa vuoi fare come ho detto è in linea
un setup quindi qui il test di nuovo e
stanno bene abbiamo salvato alcuni personaggi
spingendo tutto in start up e
istituito ma ci richiedono ancora di andare
per definizione e questo è un po ‘un dolore
Voglio dire, cosa abbiamo davvero salvato qui
avere un test più breve ma ci richiede
andare da qualche altra parte per capire
quello che sta succedendo che non è un buon mestiere
quindi questi sono gli stessi test ma
tutto è in linea creando istanze
di David John Pat e Stephen setup
sposta i personaggi fuori dall’individuo
Metodi di prova ma potrebbe anche anche
aumenta il nostro sovraccarico concettuale
non c’è davvero nessuna ragione valida da fare
così qui lo tiriamo fuori
indiretta e mettiamo tutto dove
appartiene e questo ci dà anche il
possibilità di eliminare completamente entrambi i
configurazione e tutti i campi cliente così
cancellando il codice sempre una buona cosa di meno
per l’uomo meno da mantenere e gestire
quindi l’ installazione è intelligente , i test di bob sono molto
intelligente sull’applicare asciutto e sono qui
chiedendo come è intelligente lavorare per te
ti senti aggressivo?
l’applicazione di dry sta facendo il test
più facile da capire o lo sta facendo
più complicato intendo che forse lo faremo
applica questo stesso identico modo di asciugare a
il nostro codice di produzione , ma se così non fosse
significa che dovrebbe essere solo ciecamente
applicato ai nostri test e l’interessante
La cosa è che, nonostante la sostituzione del secco
prova con i test umidi nel complesso
il numero delle linee è esattamente lo stesso
esattamente lo stesso numero di linee
non salire una volta che ci siamo asciugati da uno
area e spostato in un’altra area e noi
ha reso il nostro codice più chiaro si arriva a
cancella un mucchio di metodi di supporto
non ha cambiato il numero di linee è il
così possiamo creare test più chiari
senza nemmeno aumentare il nostro carattere
conta o il numero di linee che dobbiamo
leggere è ovviamente una buona cosa così noi
ha parlato in precedenza di motivatori
ci sono diverse motivazioni non tutte
sono buoni, quindi vogliamo convalidare il
sistema questo è probabilmente una buona cosa noi
voglio ottenere un feedback dal sistema noi
vogliono impedire la regressione questi sono tutti
tipo di sinonimi forse vogliamo codice
copertura alcune persone vogliono un centinaio
per cento direi che probabilmente non lo è
una grande idea ma potrebbe essere il
la motivazione sulla tua squadra forse vuoi
per consentire di reagire ovviamente al refactoring
un buon motivo per scrivere test
documentando il sistema che ho personalmente
mai scritto un test per documentare a
sistema ma alcune persone amano questo e
è fantastico se ti rende di più
efficace è un motivatore fantastico andare
perché come ho detto non tutti lo sono
buone ragioni ma voglio dire sono sicuro
qualcuno nel pubblico non lo fa nemmeno
credere davvero nei test unitari o ha
ha sofferto molto con i test unitari e
hanno quel manager che non lo lascerà
loro si allontanano da ciò che vogliono sapere
perché DHH e altre persone stanno dicendo
loro quei test unitari sono morti e test
dovrebbe andare via e hanno così tanto
dolore non sanno cosa fare e
il loro manager non li lascerà lasciare
va questa non è una grande situazione per
essere in ovviamente, ma ciò non significa
che dovresti semplicemente dire improvvisamente
beh, sto per ignorare i test unitari
o farò qualcosa di diverso
intorno ai test unitari o sto per scrivere male
i test unitari capiscono qual è il tuo
la motivazione è e poi come può
influire sui test dell’unità e quindi scrivere
loro in un modo migliore intendo
realisticamente se non credi in
test unitari ma il tuo manager ti richiede
prima di tutto se non sta mai controllando
il tuo codice
non sta mai controllando il tuo codice, allora tu
probabilmente non potrò mai nemmeno scrivere un
asserzione e poi tutto andiamo bene
passare e tutto va bene, giusto
e se stanno controllando, allora è dentro
i tuoi migliori interessi per scrivere di più
test di unità manutenibile possibile
giusto se stanno controllando il codice e
non ci credi e tu non ci credi mai
vuole guardare di nuovo a destra il più
test mantenibile è possibile in modo che esso
non fallisce mai e poi non hai mai veramente
doversi preoccupare è probabilmente TDD
il motivo più comune per scrivere unità
prova vuoi interrompere un problema o
migliorare il tuo design credo che lo siano
praticamente sinonimi di accettazione da parte dei clienti
Non consiglierei mai a nessuno di farlo
ma una volta ho lavorato a un progetto e noi
doveva avere una suite di test verde prima
il cliente firmerebbe una funzione
così ci piacerebbe andare al cliente e dire
vorremmo che a firmare questo
e lei direbbe che va bene testato manualmente
perfetto sembra buono ok fammi vedere il
schermo verde e tu hai appena aperto o tu
vai alla pagina web e dì
qui è verde va bene controllare fuori di esso
non ha alcun senso per me, ma è
è una motivazione a cui succederà
forse ad un certo punto in una carriera
quindi vale la pena capire bene
tal caso, così ora se queste cose vanno mai
rosso per ogni ragione sciocca che non capiamo
firmare e dobbiamo parlarne noi
voglio affrontare i nostri test in modo diverso
in tal caso suggerisco di parlare con
squadra tutti che vengono a una visione condivisa
del motivo per cui stai scrivendo i test, è possibile
essere scritto per molte ragioni diverse
supponendo che il test sia necessario non lo è
necessariamente la cosa giusta o giusta
TDD è una tecnica fantastica che non uso
sempre lo userò probabilmente il 20% di
il momento giusto per essere onesto sono di più
di un fan dell’uso di strumenti di tipo per
dove penso che saranno i più
utile quindi faccio molti esperimenti
con lo sviluppo guidato da repla in questi giorni
e molto meno TDD se fossi ancora
lavorando in Java tutto il tempo allora
probabilmente farebbe più TD ma applichi
queste cose in modi che ti aiutano ma
chiediti anche tu perché, ancora una volta , diciamo
Sto lavorando in Java e voglio ottenere
tutti i vantaggi di fare TDD in Java
e così facendo il mio TDD ho avuto un sacco
di test non si limitano a commetterlo e a camminare
via non ti stai chiedendo perché a
quel punto voglio dire perché li hai scritti
perché volevi fare TDD e questo
ti ha aiutato a migliorare il tuo design aiuta
scrivi un codice migliore e questo è grandioso
hai avuto quello che avevi
e perché ma perché ti ha aiutato a scrivere
il codice di dominio non significa che lo farà
aiutarti a mantenere il codice del dominio così
fare un passo indietro e guardare ogni test
e dì perché abbiamo questo test se questo
mi ha aiutato a progettare il codice che è ora
progettato e non hai altro motivatore
che l’unica scelta corretta è quella di
cancella quel codice che qualsiasi pazzo può scrivere
valutare che li aiuti oggi bene
i programmatori scrivono test che aiutano il
tutta la squadra in futuro se tu
ricorda qualcos’altro da questo
presentazione questo è ciò che vorrei
per portarlo via è così facile scrivere a
prova che ti aiuta in questo momento
il tuo problema attuale è un passo
più difficile pensare di aiutare te stesso
in futuro tornerai in tre
settimane tre mesi si guarda a quel test
di nuovo è scritto in un modo che è
ti aiuterò a mantenere il codice e se
la risposta è sì grande ora andare avanti
il secondo passaggio non si ferma, vai al secondo passaggio
e dire se non ho mai visto questo codice
prima e io vengo a questo sai messo
se stessi nelle scarpe dei tuoi compagni di squadra
vieni a questo test è utile non farlo
smettila finché non puoi anche dire di sì lo sai
e questo significa guardare al fallimento
non solo il passato guarda al fallimento
qual è il messaggio di errore dire se
Dice solo che sai che qualcosa si aspetta
era falso e non è molto utile
questo non dice a nessuno cosa sta succedendo
su forse la stringa che descrive il test
se hai un nome di prova forse è così
utile se non è di nuovo abbastanza utile
se se vieni completamente vuoto
come siamo arrivati a questi test al
inizio della presentazione, se lo è
non utile cambiala pensa al tuo
squadra quindi cosa possiamo fare in modo specifico
esempi concreti è praticamente cosa
questa presentazione riguarda è concreto
esempi di tutto questo questo è il tuo
carriera e sta finendo una suite di test
corri alla volta quanto è veloce il tuo test
suite che qui ha una suite di test
corre in meno di un secondo arriva davvero
okay non chiederò circa dieci secondi come
è lungo il tuo test per essere preso sì sì
è dove dovrebbe essere se il test
suite richiede più tempo di quella gente
non ce la farò, la gente non lo farà
eseguire la suite di test prima di effettuare il check- in
perché il loro equipaggio qui ne partecipa
Test Suite run in un momento che nessuno vuole
seduti lì Voglio dire quello che si chiama quella
tempo mentre la tua suite di test
è in esecuzione, lo chiamo spreco perchè sono acceso
Twitter o sono su email o da qualche parte
probabilmente peggio essere onesto, voglio dire che lo siamo
non funziona , stiamo perdendo il nostro tempo
guardando a chi sa cosa sul
internet quindi fai eseguire il test più velocemente
il modo più semplice che so come fare
questo è quello di creare test unitari solitari così
alcune persone chiamano questo test unitario
ma altre persone chiamano molte altre cose
unit test così quando stavo scrivendo un libro
su tutte queste cose ha detto Martin Fowler
smetti di provare a rubare la frase
test unitario
non ti lasceranno mai rubare il
il test delle unità di nome si presenta con qualcosa
è un test di unità nuovo e quindi solitario
piuttosto semplice non oltrepassare mai il confine
quindi le tue suite di test sono lente perché
stai colpendo il database che stai andando
sulla rete che stai andando al
il file system è davvero ciò che sta rallentando
tutto in basso non è come il
l’informatica interna sta rallentando tutto
giù nella maggior parte dei casi quindi smetti di farlo
test di unità solitarie giuste che mai
confini trasversali ma una cosa che è anche
molto fastidioso è il fallimento a cascata voi
cambiare il film applaudire al test del cliente
fallisce questo è fastidioso che non lo è
questo non mi aiuterà a superare
la mia giornata più veloce che non ha intenzione di
motivami ad essere entusiasta di essere su
questo fallimento a cascata della squadra porta via
la mia motivazione per essere un ingegnere del software
quindi la classe sotto test dovrebbe essere la
solo una classe concreta trovata in un test
questa è la definizione completa di
test unitario solitario e in realtà ho
nessun esempio di fermare qualcosa da
andare al file system o fermarsi
qualcosa sta andando per il database perché
Penso che sia abbastanza auto-esplicativo
puoi scrivere unit test solitari che
non costa nessun tipo di confine sì
da concreto qui intendo finta o stub
sì ne avremo alcuni ne ho alcuni
esempi concreti quindi abbiamo bisogno di qualche tipo
di altra frase, abbiamo solitario
test unitari abbiamo bisogno di qualcosa per dire cosa
gli altri test sono perché quelli sono
prezioso anche e quelli sono unità sociale
prova è così semplice
a partire da ora abbiamo notevolmente migliorato
test unitari socievoli ma ne abbiamo molteplici
quello che chiamavo lezioni concrete noi
fare testare il cliente parlando con
noleggio che parla del film qualsiasi
il passaggio al film sta per arrivare a cascata
tutte quelle altre classi così che noi
è meglio, ma siamo ancora del tutto
socievole
non abbiamo test unitari solitari a questo
punto e credo che un buon mix di entrambi
è davvero quello che stiamo cercando siamo
cercando un qualche tipo di realtà
tutta la copertura che possiamo ottenere dai nostri
test di unità solitarie perché sono veloci
perché non vanno oltre la rete
perché non sono traballanti perché loro
concentrarsi su un test unitario concreto o uno
una classe sotto test e alcuni mock o
mozziconi quindi questo è quello che abbiamo adesso
a mio parere questo test è già un
prova abbastanza solida questo è un grande test
questo test fallisce prima del check-in e io
so che ho un cliente con a
noleggio con un film che è un nuovo
rilascio e posso leggere un valore atteso
senza navigare da nessuna parte intendo che lo è
quasi il paradiso rispetto a quello che abbiamo guardato
all’inizio, quindi è fantastico ma
il problema è di nuovo se un film cambia
allora questo test potrebbe fallire e non vogliamo
questo test fallisce perché questo è
non dice classe di test cliente ma questo
è nella classe di test dei clienti, quindi noi
non voglio che le nostre modifiche ai film si interrompano
le cose quindi è questo è un concreto
esempio di utilizzo vorrei solo chiamare questo
uno stub per essere onesti ma sto lavorando con
mockito e loro lo chiamano un finto, io no
pensa che la semantica qui sia davvero
importante ma stiamo lavorando con non nostro
corso di noleggio con cui stiamo solo lavorando
finta e quindi qualsiasi cambiamento a questo punto
un noleggio o un film non scenderà a cascata
torna ai nostri test dei clienti e tu puoi
hai notato il null e potresti averlo
vomitato un po ‘nella tua bocca
per me questa è la stessa cosa di
Padrino, abbiamo una corda magica
in là che dice Padrino 4 e poi
abbiamo una stringa magica in là che
dice di sapere qual è la differenza tra
quei personaggi nel contesto di
questa stringa ma mi sento come se
programmatori abbiamo solo questo intestino
reazione, se piace oh, perché ha anche lui
lo so oh, dev’essere un errore, voglio dire che lo sono
certo ci sono persone in questa stanza chi
sicuramente l’ho visto quando l’ho messo
su e andò oh ha fatto un errore ha lasciato
un nulla dentro ma è solo una magia
stringa è una stringa magica su entrambi i lati
quindi qual è la differenza tra null
e padrino ma va bene sono ancora
saranno le persone a cui fare eccezione
quello e va bene perché tu hai un
stub e tu aggiungi solo un po ‘di valore
lì aggiungi il Padrino lì e vai avanti
Sto solo mettendo questo qui così gente
quindi le persone che si sentono a proprio agio con
null otterrà qualche convalida come
va bene così abbiamo anche un’unità solitaria
test che si concentrano esclusivamente sulla somma
questo vecchio test torniamo molto velocemente
questo primo test a sinistra ha
la costruzione di stringhe ha sommato ha a
molte cose diverse accadono questo
il test copre molte cose diverse
e tu non hai necessariamente bisogno di sentire
possiamo concentrarci esclusivamente sul sommare così
abbiamo un noleggio simulato che stava ambientando
la carica per a sinistra e abbiamo a
noleggio simulato che stiamo impostando il
carica o i punti per sulla destra
e poi abbiamo creato il nostro cliente e noi
basta validare il valore che sono
bellissimi test questi sono test che tu
può venire con mai averlo visto
prima che nessuno di voi abbia mai visto questo
prova prima e se questo ti sta fallendo
So esattamente quello che sta succedendo è
completamente dritto non lo fai
devo navigare ovunque intendo forse
devi passare al Builder se
questa è la tua prima settimana in squadra
il primo giorno della squadra forse non l’hai mai fatto
visto un costruttore ma usiamo questi costruttori
globalmente in tutte le prove così
anche se è il tuo primo giorno tu
vai al Builder per vedere cosa
stiamo andando a fare quello che stiamo facendo tutto ciò che siamo
creare alcune istanze non è un grosso problema
per la vita del progetto che ora conosci
quello che stiamo facendo quando stiamo creando in
test cittadino sai che stiamo usando
costruttori è possibile riapplicare questo valore anche
se dovessi passare quel tempo su questo
prima prova è ora possibile applicare che attraverso
l’intera suite di test quindi ne abbiamo persi alcuni
copertura sai che abbiamo avuto un nulla in là
e abbiamo rotto le nostre somme e noi
ho perso il test dell’angolo che eravamo
facendo al cinema ora ce la riprendiamo
beh, è bello così ora abbiamo
fiducia nel nostro cliente a grana fine
test e abbiamo fiducia nel nostro
test cinematografici e abbiamo tutto il
copertura che avevi precedentemente sembrano
la somma dei punti è testata sommando di
le accuse sono testate è la costruzione di stringhe
testato ma anche tutto il dominio
casi per la classe di film tutti testati così
abbiamo completa fiducia nelle nostre
sistema ma abbiamo anche ottenuto l’isolamento
qualcosa che non avevamo in nessuno
qualunque cosa non abbiamo più
fallimenti a cascata in particolare qualsiasi
cambiare il film non fallirà più
quel cliente prova estremamente prezioso
quando eseguiamo i nostri test, sappiamo qualcosa
quello che sta fallendo è in realtà fallendo
a causa di un cambiamento in quella classe di dominio
finché parliamo di a
prova solitaria questo dovrebbe essere fantastico
dovrebbe migliorare le nostre vite, ma lo siamo
manca l’integrazione giusta è quella
cosa che non abbiamo abbiamo grandi
isolamento un bastone abbiamo velocità
fantastico ma non abbiamo integrazione
ed è per questo che non dovresti mai scegliere
uno di questi approcci esclusivamente
scegli gli strumenti che ti rendono efficace
e questo significa una piccola somma qui
e una piccola somma qui significa
per me il 20% TDD in questi giorni sono ancora
usandolo non devo fare un
scelta esclusiva per TDD tutto o
nulla vale la stessa cosa qui
è un test di unità socievole che porta
tutto insieme così ora abbiamo il nostro
test che non falliscono a cascata
ogni test che non richiede molto tempo
per correre e quindi abbiamo questo porta
tutto insieme ha un cliente
chiamato Pat con un noleggio con un film
questa è una nuova versione e un altro noleggio
quello è Scarface, hai l’idea che abbiamo
multipli con cui abbiamo un cliente
più noleggi più film e noi
può legare tutto insieme e
non ci sono null per rendere chiunque
scomodo quindi come altro si può
migliorare l’asserzione di test suite per
prova so che ci saranno persone che
dibattere con questo sono qui per fare il mio
caso ma poi alla fine tocca a voi
su quello che pensi sia più appropriato così
questo è di nuovo il film test che noi
già visto diciamo il secondo
l’asserzione fallisce questo è quello che sei
gonna vedere Voglio dire Stavo per dire che cosa fare
tu pensi ma tu sai che tutti lo sanno
questo è ciò che vedrai uno
fallimento di
L’unico fallimento di Sion qual è il valore di
la terza quarta e quinta affermazione a
questo punto è zero è inutile
forse sta passando forse sta fallendo noi
non avere idea
il codice non è stato eseguito per cui ne conosci uno
fallimento e hai zero automaticamente
feedback generato dall’altra prova
dalle altre affermazioni viene fornito un test
con più affermazioni quando sono
tutto un percorso quando passano tutti
tutti forniscono valore intendo ovviamente
stanno passando tutti la vita fantastica è
bene
hai scritto quel test che hanno passato tutti e
hai pensato di andare avanti, ma poi quello
la prima asserzione fallisce e così è
completamente annullato il valore di ogni
altra affermazione sono semplicemente inutili
potrebbero anche non essere lì
sono forse peggio perché lo sono
rumore che ti fa capire il valore che sono
seduto lì e ti stanno dando
Niente
quindi, in effetti , il rumore è negativo
valore quando sei di fronte a un fallimento
test che ha più asserzioni tue
forza tra due situazioni di merda
la prima situazione è la lettura di tutto il
prova e poi legge tutto il dominio
e decidendo che va tutto bene
tu sai che l’ affermazione è fallita, io
significa capire cosa c’è che non va bene aggiustarlo
tutto bene ora tre quattro e cinque sono
Ecco quali sono le mie scelte leggere
tutto e assicurati che vada tutto bene
certo non perché siamo tutti pigri noi
basta fare clic su Esegui nuovamente e poi quattro fallisce
e cinque è senza valore e andiamo correzione
e poi si corre di nuovo e forse cinque
fallisce , passiamo attraverso questo triste ciclo
di fissaggio corrente e fissaggio
non deve essere così e se noi
ho ottenuto tutti i dati di cui avevamo bisogno
allo stesso tempo cosa succederebbe se tutto fallisse
quando si doveva e passato, quando si
doveva allo stesso tempo
non sarebbe più efficace il
il modo in cui devi farlo è solo una pausa
queste affermazioni a parte
semplicemente non usare più asserzioni è
non proprio così complicato ma parte di
questo è ovviamente bene io non voglio io
non voglio ripetere troppo codice okay
i costruttori di cool use usano un certo tipo di
applicazione globale per gli occhi che ti consente
per creare rapidamente i tuoi test, se tu
non è possibile creare rapidamente i tuoi test come
questo rompe le cose in un singolo
responsabilità c’è un altro problema
non si tratta di affermazioni multiple contro
una sola affermazione c’è un qualche tipo di
altro problema non puoi creare il tuo
classi di dominio abbastanza facilmente o
qualcosa hai qualche altro problema
non nasconderlo
problema utilizzando più asserzioni e
detto di fare così una volta che abbiamo questo ora noi
in realtà vediamo questo, quindi questo è molto meglio
ora abbiamo un qualche tipo di somma che abbiamo
informazioni aggiuntive lo stesso identico
asserzioni ma ora ne abbiamo altre
informazioni possiamo vedere che il primo fallimento
è per tre giorni il secondo fallimento è
per quattro giorni il terzo fallimento è per
cinque giorni possiamo anche vedere, cercando in
i valori attesi che tutto
ogni singolo atteso è un anno e mezzo
meno del reale così solo avere tutto
di quei dati allo stesso tempo sarebbe
meglio ma ora abbiamo anche un modello
che possiamo lavorare con un’asserzione per
il test ci consente di ottenere l’aspettativa
valori e i valori effettivi per ogni
test singolo che è chiaramente migliore
avere tutti questi dati allo stesso tempo
ma ora abbiamo un modello cosa facciamo
riconoscere da quei test falliti
qualsiasi cosa al di sopra di due giorni stava fallendo
tutto ciò che stava fallendo era fuori tempo
di una volta e mezza quindi la somma di quelli
i valori sono quelli che i fallimenti hanno avuto di più
valore delle parti in modo da rompere il test
in più affermazioni che avvolgono tutto
questo in sul test si possiede finire possedere
tu
è un’altra piccola e carina citazione da
Fight Club ma non potrebbe essere più vero
ogni riga di codice che scrivi ne ha
è anche il tipo di ritorno sull’investimento
positivo o negativo
forse è piatto ma più che probabile
è positivo o negativo si deve
possedere ogni singola riga di codice in
produzione, ma anche nei test in modo
guarda i tuoi test da un ROI
prospettiva diciamo per esempio voi
ha scritto del codice TD con un codice e
cambierà il colore di a
sfondo su un sito web questo non lo è
cruciale per la tua attività, ma tu hai fatto TDD
è fantastico che ti ha aiutato a creare il
buon design per cambiare questo colore
fantastico hai fatto tutto bene
ma allora diciamo che il test è un po ‘
traballante fallisce ora e poi forse
c’è una condizione di gara a causa del
quadro che stai usando qualcosa
così cancella quel test di cui sbarazzarsi
prova subito se quello sfondo
il colore non cambia correttamente
gli affari andranno su qualcuno lo farà
ti lamenti ad un certo punto e ti aggiusterai
il colore di sfondo e l’utente
l’esperienza sarà un po ‘ fuori per a
un po ‘di tempo sarà un po’
deludente ma gli affari vanno avanti ma
tutto il tempo che sprechi su quella sfoglia
test che sta solo facendo l’utente
esperienza che molto meglio è a
anche i rifiuti
a te alla tua squadra ai tuoi compagni di squadra
il business guarda il tuo test in termini
di ROI un altro esempio che io
piace tornare a è che hai un
compagnia di assicurazioni e l’assicurazione
l’azienda deve cercare tutti i suoi
i clienti per numero di sicurezza sociale voi
dovrebbe probabilmente avere una convalida su
quel numero di previdenza sociale che vuoi
ottenere quel SSN giusto è necessario essere in grado
per cercare qualcuno, ma questa persona ha un
nome e sai forse hai messo un
piccolo test in là per fare in modo che
è tutto l’alfa che passa attraverso
perché è bello che tu sia gentile con te
porta il nome del cliente giusto ma tu
non è necessario che il nome del cliente sia
perfetto per costruirli non hai bisogno del
i nomi dei clienti sono perfetti da contattare
li sai che puoi cercarli
qualcuno chiama il call center se ottengo
il tuo nome è sbagliato e tu chiami il
call center andrà tutto bene
se c’è uno in più in là o
qualcosa del genere quindi se sai scrivere
questo test facilmente e mantenerlo facilmente
poi fallo ma se questo è di nuovo un disastro
test o un test problematico qual è il
valore reale per il business intendo davvero
tenendolo fuori da qualcuno per primo
nome qual è il vero valore per il
affari non è molto alto
pensando al tuo test dal
punto di vista individuale smettere di pensare
su di loro va bene mi piace TDD io sono
scriverò questo test e basta
questa è la fine di ciò che ha bisogno
per essere commesso non è abbastanza buono
inizia a pensarci dal tuo team
punto di vista sai che l’hai scritto
prova e ti ha aiutato ad avere un bell’aspetto
codice e questo è bello ma non è un
ragione sufficiente per lui per vivere
quello che devi fare è guardarlo e
dire okay, sono arrivato a questo con un nuovo
mente capisco esattamente cosa sta succedendo
qui qui mi aiuterà a mantenere questo
codice che è un buon test da tenere
i tuoi test non sono speciali, non lo sono
i fiocchi di neve belli o unici uguali
testo decadente come ogni altro test Combattere
Il club pensa ancora alla squadra che è
è quello che voglio che tu lasci qui
con immagino più che altro
pensare alla squadra non pensare
quello che stai facendo nel momento pensa
sul valore a lungo termine di quel codice
pensa di mantenere quel codice un anno
da ora quindi è davvero il tipo di
portando tutto il parlare insieme anche io
Sono chiaramente appassionato se non arrabbiato come
puoi dirmi delle cattive prove, così l’ho fatto
scrivere un libro su di esso, benvenuti per controllarlo
fuori e
Ho anche provato a finire presto così noi
tutti potrebbero arrivare a pranzo presto
tutti gli altri ma ne abbiamo almeno dieci
minuti per domande
torna tutto bello così come qualcuno
già detto simili al
la presentazione sarà Fight Club a tema
se non hai mai visto Fight Club che è
okay, non è davvero così importante
ho cercato di esprimere tutto ciò che c’è dentro
tipo di un modo che ha reso un po ‘
divertente ma anche mi aspetto probabilmente metà
la stanza forse non l’ha mai vista, quindi è così
non è un prerequisito che senti ancora sentire
libero di andartene se odi Fight Club
adesso ma non è un prerequisito
Salterò la slide delle credenziali I
Supponi che voi ragazzi potete cercarmi se voi
voglio presumere che a nessuno importa davvero
dove ho lavorato o cosa ho fatto cosa
vuoi davvero sapere come puoi
creare alcuni test migliori così quando lo facciamo
esegui i nostri test che non conosco forse alcuni
le persone le gestiscono sempre con l’auto
prova forse alcune persone li eseguono solo in
costruire come e mai eseguirli ma a
il posto che spesso li gestiamo è dopo
abbiamo appena apportato alcune modifiche ed è
circa il tempo di fare il check-in, ecco cosa
stiamo per fare stiamo per controllare
in qualche codice e vediamo che i nostri test
stanno correndo e poi vediamo questa merda
e quello non è grande ma quello che noi
in realtà vedere è questa merda e il
problema di tutto questo è che con
test falliti parli solo usando
volgarità quindi quali sono i cambiamenti che io
fatto qui avevo un dominio di film
oggetto e poi ho un film test e
Ho cambiato il mio oggetto dominio del film e
poi ho cambiato il mio test cinematografico e ho corso
tutto e tutto è stato fantastico
i clienti dovrebbero essere felici di averne di nuovi
funzione pronta per metterlo in produzione
ma poi ho eseguito il test e qualcosa
fallito e aveva quello che pensavo fosse
niente a che fare con quello che stavo lavorando
quindi ora sono incazzato perché non ho
scelte questo punto ho zero scelte
voglio fare il check-in, ma devo guardare a
prova che non ho scritto che non l’ho fatto
correre che può o non può aiutarmi, ma io
non ho altra scelta che andare a lavorare così
questo è Bob e Bob ha test non validi
sfortunatamente, Bob è anche il tuo compagno di squadra
Bob vuole fare bene Bob vuole aiutare
scrivi un buon codice che Bob vuole scrivere
test che ti permetteranno di refactoring
il tuo codice base e mantieni il tuo codice
meglio, ma Bob non sa come fare
questo perché bob è in realtà un bel
buon programmatore è per questo che è passato
il tuo test di programmazione per unirti al tuo
organizzazione Bob sa scrivere bene
codice ma non sa come scrivere bene
prova e sfortunatamente pensa Bob
sono la stessa cosa che Bob ti ha lasciato questo
testare questo test non è poi così complicato
ma è molto più complicato
di quanto vorrei essere lasciato con
Tess sta fallendo , non è molto
lungo ma prima possiamo davvero anche ottenere
in esso dobbiamo già guardare a
loop che vuole guardare un ciclo e a
test bob ha deciso che stava per
asciuga il nostro codice con un ciclo nel suo test
quindi è quello che abbiamo e prima che possiamo
anche davvero guardare la carne del test
dobbiamo capire cosa stiamo collegando
attraverso così abbiamo clienti come è
non è così complicato sai che lo sappiamo
cosa significa o cosa intendiamo in questo
punto non abbiamo idea che abbiamo un
test fallito e sappiamo che abbiamo
i clienti non abbiamo capacità di guardare
il test fallimentare e capire cosa c’è
andando avanti dobbiamo fare affidamento sul nostro IDE
che ci dà abbastanza facile andare a
definizione e cool abbiamo clienti
inoltre non è così complicato che ci sia
niente qui è assolutamente terribile
ma abbiamo già fatto affidamento sull’IDE a
portaci da qualche parte per aiutarci a capire
cosa sta succedendo e ora dobbiamo fare affidamento
sull’IDE ci portiamo di nuovo da qualche altra parte
perché non sappiamo che cosa è un cliente
è in realtà inizializzato per te è
inizializzato in questo metodo magico dato
a noi dal nostro quadro di prova, se lo siamo
comodo con questo metodo magico allora
è grandioso
ma cosa succede se non siamo cosa se siamo
in coppia con qualcuno e stiamo mentoring
loro e loro dicono perché è questa magia
metodo get ‘eseguire perché non lo so
perché è così che abbiamo
ho scritto test per sempre e nessuno
mi sono fermato per dire perché così qui abbiamo un set
up metodo e stiamo inizializzazione del
cliente di David e cliente di John e
il cliente Patt e il cliente Steve
e poi li stiamo mettendo tutti sul
array di clienti che già conosci
questo è quello che useremo in ordine
per fare un giro in modo che non guarderemo
la madre oggetto perché cerchiamo di non
scava così in basso anche se è così
tipo del punto di questo perché abbiamo
scavare così in basso ma ne abbiamo solo 50
minuti quindi torna al test fallito
looping attraverso le istanze dei clienti noi
può finalmente arrivare al nostro valore atteso così
abbiamo un test fallito che abbiamo già avuto
per navigare in un campo Java e ad alcuni
metodo di supporto speciale solo per ottenere
attraverso il loop e ora siamo al nostro
valore atteso e ovviamente non possiamo
dire ciò che il nostro valore atteso è o
perché sta usando un altro metodo di supporto
quindi se andiamo ad un metodo di supporto
dobbiamo prima inizializzare gli argomenti
il primo passo è solo capire cosa
argomento è di nuovo che dobbiamo usare un altro
definizione go-to con cui non possiamo lavorare
questo test voglio dire spero che questo sia doloroso
per voi ragazzi guardando guardando così com’è
per me presentarlo per favore
così terribile II prova questo
è la presentazione di fronte a mia moglie
come puoi non darlo
la presentazione così arrabbiata è come quella di un bambino
recesso fammi arrabbiare così mi dispiace
probabilmente sarò arrabbiato per un po ‘
mentre abbiamo un altro metodo di supporto
dobbiamo entrare in questo metodo di supporto
non ha nemmeno fare nulla che
interessante
sta facendo un po ‘di formattazione è
prendendo alcune corde e oggetti di noleggio
e sta solo mettendo tutto
insieme e non abbiamo nemmeno il tempo di farlo
parlare della legge della violazione di Demetra
perché questi test sono così cattivi così noi
Voglio solo immaginare con cui stiamo lavorando
questi test vogliamo solo controllare nel nostro
il film cambia e siamo giù in due
metodi di aiuto guardando una legge di
La violazione di Demetra fondamentalmente pensando
come va bene potrei aver bisogno di cercare un
nuovo lavoro non posso lavorare in questo modo
è quello che penserei comunque
quindi lo ignoreremo per ora e
capiremo che i loop di informazioni di noleggio
sui noleggi restituisce una stringa descrittiva
un noleggio non è così male, credo di nuovo
alla dichiarazione cosa andremo di seguito
avere un oggetto cliente che siamo
passare attraverso okay non è poi così male
Intendo ignorare il fatto che non abbiamo
idea per Dave che scalpita Steve ma almeno
sappiamo cosa sia questo tipo di oggetto anche se
non sappiamo quale istanza sia e
finalmente possiamo arrivare a un concatenato
stringa che non è male
ish quindi entriamo nell’aspettativa
e cosa fa ci vuole il
il cliente prende alcune stringhe e questo
il formato è tutto insieme è così
tutto ciò che serve è tutto questo codice per noi
per capire cosa sta succedendo in questo
test abbiamo avuto un test negativo in particolare
la classe del film ha cambiato il test del film
anche cambiato tutto ha funzionato sapevamo
che il nostro codice funzionava, ma invece di
potendo effettuare il check- in dovevamo guardare
attraverso tutto questo codice che è per un
classe cliente fa nessuno qui dentro
penso che sia una cosa ragionevole noi
non dovrei fare tutto questo e
c’è un modo migliore ma prima di arrivare
nel modo migliore dobbiamo dire che lo faremo
va bene così Bob vuole aiutarci Bob
vuole che scriviamo test migliori Bob Bob
vuole scrivere test migliori per noi lui
vuole aiutarci a scrivere codice mantenibile
cosa possiamo dire di ciò che ha fatto Bob
beh, è stato approvato è comunemente approvato
nel nostro settore purtroppo ma non puoi
veramente incolpare Bob per quello che ha letto
che doveva asciugarsi il cappotto era pronto
e Bob asciugò la giacca e lui
ha usato la madre degli oggetti in modo che si nascondesse
di nuovo la sua creazione di oggetti da qualche parte
solo applicando a secco forse va bene
forse non è che non sono qui per davvero
dirti che è buono o non lo sono
qui per chiederti perché stai facendo questo
quindi lo applichi o lo stai solo alla cieca
c’è un modo migliore quindi direi dove
fallisce è che vorrei rapidamente
capisco questo test quindi mi sto verificando
Voglio capire rapidamente cos’è
forse continuando con questa prova fallimentare
quell’errore era davvero utile ma
passare attraverso tutti questi passaggi non lo era
utile in modo specifico, quindi ho dovuto trovare
la prova della dichiarazione per iniziare con poi io
dovevo trovare la definizione di clienti
che stavano iterando per poi trovare
l’incarico ai clienti dovette quindi
digerire il setup poi ho dovuto guardare
una madre oggetto che non ho nemmeno fatto
preoccuparsi di portarvi ragazzi attraverso poi io
ha dovuto digerire ogni cliente diverso
creazione di istanze all’interno dell’oggetto
madre dovevo fare tutto questo prima di me
capito la prima linea del fallimento
prova che è del tutto troppo
complessità per te da guardare
attraverso per capire la prima linea di
un test fallimentare quindi devi digerire
il valore atteso creato da
chiamare un metodo con una stringa a
cliente il risultato del noleggio di chiamata
informazioni per stringere istanze e blah blah
blah trovare il metodo di informazioni di noleggio
determinare quale sia il suo valore digerire il
metodo di informazioni di noleggio sta creando un
stringa e dati di ritorno e ora hai
mentalmente risolto l’ artista da aspettarsi
dichiarazione che dovevi fare tutto questo 10
passi 10 passi per capire semplicemente
cosa sta succedendo in questo test e 0
personaggi che hai letto finora
aiutarti nella produzione che è a valore zero
ai tuoi clienti zero valore per il tuo
affari non hai fatto altro che
risolvere il valore atteso di un test se
questo era Fight Club questo sarebbe il
punto in cui dice che voglio che tu colpisca
io più duro che puoi
nessun personaggio che hai digerito
correrà in produzione non colui che
trascorre tutto questo tempo erano otto minuti
nella presentazione non guardando uno
personaggio che sarebbe mai stato eseguito e
aiutare il business in alcun modo a parte
la regressione è anche praticamente
impossibile risolvere questo test senza alcuni
più codice più programmazione come fai tu
come fai a sapere cosa sta fallendo e
ciò che passa è anche utile
senza guardare il ciclo e e
o mettendo una dichiarazione di debug in
lì per sapere dove si rompono le cose o
senza mettere qualche console.writeline
lì si deve scrivere codice più o
affidati all’editor per darti un
punto di rottura o qualcosa del genere
non puoi nemmeno usare questo test per capire
cosa sta andando male, allora perché?
fai questo perché ci metti in contatto
questo noi eravamo soliti scrivere codice senza
test e poi qualcuno ha detto hey you do
sai che puoi scrivere questi test e lo faremo
darti fiducia e hai iniziato
andare a casa la sera non pensavo
tutto andrà in pezzi e
mi licenzieranno, iniziò a tornare a casa
con una certa sicurezza e questo è stato grandioso
ma applichiamo solo il tradizionale
schemi di programmazione per i nostri test e noi
mai fare un passo indietro e dire è questo codice
diverso ciò che è diverso sul
il codice è un test davvero la stessa cosa
come produzione dovremmo asciugarlo nel
allo stesso modo qual è la nostra motivazione per fare
tutte queste cose che scriviamo testiamo noi
non ne ho bisogno con il tempo che non dobbiamo
soddisfare le persone che non ci piacciono se noi
fatto un passo indietro questo è il posto felice
da un Fight Club cosa succede se facciamo un passo
di nuovo al nostro posto felice dove non avevamo
codice e questo è tutto il nostro posto felice
quando non abbiamo il codice di cui preoccuparci
un passo indietro e diciamo bene cosa può fare
scriviamo qui per aiutare effettivamente il
business ogni riga di codice ha un ROI a
ritorno sull’investimento che vogliamo davvero
prendersi cura delle cose che sono preziose
la roba che effettivamente porta il
business un certo tipo di valore porta il
squadra qualche tipo di valore, quindi cosa succede se noi
fatto un passo indietro e abbiamo detto che lo sai
forse asciugando tutto esattamente
lo stesso modo non è la soluzione appropriata
forse ho bisogno di guardare i miei test in a
modo completamente diverso così ancora
scende al motivo per cui ciò che ci motiva così
diciamo che per il bene del discorso che
ciò che motiva Bob è che vuole abilitare
il refactoring richiede un feedback immediato e
egli vuole rompere il problema fino in
pezzi più piccoli direi che Bob ci è riuscito
nel consentire il refactoring, Bob ci ha dato un po ‘
test che coprono il dominio e posso
cambiare le cose e verificarlo
tutto funziona
Ottengo il feedback immediato del
prove fantastiche Bob ha fallito assolutamente
terribilmente a rompere il problema in
pezzi più piccoli abbiamo così tante cose
legato insieme in questo test che ci è voluto
noi dieci passi per capire anche il
valore atteso è ridicolo
quantità di accoppiamento Josh Graham che puoi
lo so
il suo account su Twitter, una volta invio un hit
Una volta gli ho detto perché stai scrivendo
prova perché ti preoccupi di scrivere i test
e ha detto che mi piace ha detto che ho creato un
piccolo universo in cui il software esiste
fai una cosa e fallo bene, penso
questa è la mia spiegazione preferita del perché
scrivi test che vuoi un piccolo minuscolo
universo per lavorare dentro e tu vuoi
fiducia che qualunque cosa tu stia testando
funziona come ci si aspetterebbe
Intendo dire che i sistemi software sono grandi
sono complessi, non c’è modo che noi
può davvero ottenere la fiducia intorno al
tutto con una coppia diversa
test abbiamo bisogno di rompere le cose e
testarli individualmente così andremo
tienilo a mente e penseremo
su come possiamo ancora avere un piccolo
universo ma anche noi possiamo applicare asciutto è
non come se dovessimo semplicemente asciugare
la finestra è preziosa ma come funziona
applicare per testare forse non è la stessa cosa
come codice di produzione, quindi questi test erano
ovviamente usiamo il metodo helper
e abbiamo ripetuto come pochi personaggi come
possibile grazie a Dio perché i personaggi
non erano in vendita quindi abbiamo dovuto salvare come
molti come potevamo pensavate che il
album fa sentire chiunque che il
l’applicazione di DRI ti ha aiutato rapidamente
capisco il test fallito che tengo
aspettando che qualcuno dica di sì ogni volta
Ho fatto quella domanda, voglio dire che deve esserci
qualcuno ed è ok che è in realtà parte
di questo ci sono tre livelli che quello
puoi applicare asciutto e alcune persone vogliono
per applicarlo a tutti e tre e questo è
fantastico se ti chiedi perché sei
scrivere un test e perché lo stai asciugando
il modo in cui sei e se si arriva
forse con buone ragioni per tutto ciò
sei una squadra di due persone forse entrambe le cose
ti piacciono i test scritti in quel modo forse
non ti dispiace guardando attraverso tutti
quel codice prima di capire cosa c’è
andare su un test va bene fino a quando
coscientemente prendere questa decisione go
per questo penso che ci sia un modo migliore
personalmente ti consiglio vivamente di cambiare
il tuo approccio mi consiglia di applicare a secco
a livello di suite così globalmente diciamo
che desideri che un cliente utilizzi il test
builder pattern e crea il tuo
i clienti con i test builder diciamo
vuoi muoverti usa il test
modello di costruzione va bene grande ora nel mio
test dei clienti posso essere in grado di seguire questo
builder pattern è un riutilizzo globale
asciugato fantastico voglio un film stesso
cosa così ho questo comune
comprensione del codice che sta per essere
utilizzato in tutta la suite di test anziché
solo a livello di fixture il problema
con i test di Bob erano tutti suoi
applicazione
i conducenti al livello fisso che il noleggio
il metodo di informazione non li aiuterà mai
altrove la dichiarazione di aspettativa è
sicuramente non li aiuterò mai
altrove, quindi abbiamo tutti questi aiutanti
metodi che non sono veramente di aiuto
metodi sono solo un po ‘ come nascondersi
la tua merda nell’armadio sto andando
metti questi personaggi qui e
fai finta che tutto vada bene, ma è così
Non bene che hai fatto le cose peggiori per
la tua squadra ovviamente non penso
davvero bisogno di entrare in essiccazione perché
del livello di test che ha senso
vuoi asciugare le cose in un
test individuale e tu vuoi asciugarli
in tutta la suite ma forse
Non cerco di raggruppare i test insieme I
significa che Pat è un cliente Steve è un
cliente Jon è un cliente e ancora nessuno
di questi test ha collaborato in alcun modo
ma tutti questi test hanno portato il
sovraccarico concettuale di creare tutto
tre clienti quindi hai creato tutto
tre non li usarono mai in alcun modo
qualunque cosa, ma hai richiesto
manutentore per cercare di capirlo
verifica che non vengano mai usati è a
sprecare è un modo migliore secondo me
si avvicinerebbe agli stessi test direi
non testare diversi clienti allo stesso modo
tempo se non stai andando a testare diversi
i clienti quindi non li creano al
allo stesso tempo non estrarre singoli metodi
per un valore di ritorno a stringa singola fare
creare dati dove non è necessario parte
di un qualche metodo di framework speciale c’è
nessuna regola che dice che devi usare la configurazione
solo a mio avviso smettere di usare
completamente se ti piacciono gli acronimi e
ciò che il programmatore non ti penso
dovrebbe scrivere test che sono asciutti al
livello suite e asciutto nel test ma
concentrarsi sul test stesso essendo umido a
frase descrittiva e gestibile o a
procedura descrittiva e gestibile
qualunque cosa tu stia cercando, vuoi
qualcosa che puoi andare a questo test
sta fallendo okay idealmente tutto te
bisogno è proprio lì all’interno di quel test noi
non dobbiamo fare affidamento su un IDE che non abbiamo
devo saltare e andare da qualsiasi altra parte
tutto ciò che sta fallendo è proprio lì
il prossimo scenario migliore è tutto
quello che sta fallendo è qui eccetto che c’è un
accoppiare modelli globali qui
in questo potrebbe essere una fabbrica che crea tutto
dei nostri oggetti qualunque ne sia
tipo di modello globale che usi ma
è qualcosa che quando vai a questo è
è non del tutto sconosciuto
non estraneo è qualcosa che hai
visto prima è uno schema che tu
capisco già all’interno della suite di test
quindi come facciamo a fare questo per Bob
la prima cosa che facciamo è sostituire il
loop con il test individuale intendo
questo è ovvio come lo diventa noi
interrompere l’interruzione del ciclo
questi clienti fuori dal giro e noi
avere più personaggi qui va bene
ogni singolo test è ora diventato
semplificato ora quando le cose falliscono
in realtà hanno risultati che possiamo usare invece
di un ciclo con un fallimento che abbiamo
tre fallimenti e abbiamo un passaggio
test che ci dà anche alcuni
informazioni su dove sono finite le cose
sbagliato quindi sappiamo quali clienti
causato problemi sappiamo quali clienti
non stanno causando problemi nella creazione di tutti
questo è ciò che alcuni chiamerebbero duplicazione
Mi aspetto che ci siano molte persone nel
stanza che probabilmente si sente a disagio
con tutto questo è quello che le persone
prenderebbe in considerazione la duplicazione ma questo è
solo passo uno è solo dopo che avremo
duplicato tutto ciò che siamo liberi di fare
asciugare qualsiasi cosa così la prossima cosa che vuoi
fare è aspettarsi letterali i test delle cellule
guarda ora e devi chiedertelo
perché diavolo stiamo chiamando un aiutante
metodo per creare una stringa non lo faccio
capire perché qualcuno vorrebbe mai
chiamare un metodo parametrizzato una volta quello
non fa altro che restituire una stringa
sai qual è la migliore rappresentazione di
una stringa è una stringa letterale
è così non c’è niente di meglio
rappresentazione di una stringa, quindi una stringa
letterale quindi ovviamente mi dispiace, ovviamente
questo è quello che stai cercando per te
non è necessario chiamare il metodo helper
va bene che puoi spendere più personaggi
Sono qui per dirti che è assolutamente
va bene per spendere più personaggi se questo
prossimo rende i tuoi test più leggibili
cosa vuoi fare come ho detto è in linea
un setup quindi qui il test di nuovo e
stanno bene abbiamo salvato alcuni personaggi
spingendo tutto in start up e
istituito ma ci richiedono ancora di andare
per definizione e questo è un po ‘un dolore
Voglio dire, cosa abbiamo davvero salvato qui
avere un test più breve ma ci richiede
andare da qualche altra parte per capire
quello che sta succedendo che non è un buon mestiere
quindi questi sono gli stessi test ma
tutto è in linea creando istanze
di David John Pat e Stephen setup
sposta i personaggi fuori dall’individuo
Metodi di prova ma potrebbe anche anche
aumenta il nostro sovraccarico concettuale
non c’è davvero nessuna ragione valida da fare
così qui lo tiriamo fuori
indiretta e mettiamo tutto dove
appartiene e questo ci dà anche il
possibilità di eliminare completamente entrambi i
configurazione e tutti i campi cliente così
cancellando il codice sempre una buona cosa di meno
per l’uomo meno da mantenere e gestire
quindi l’ installazione è intelligente , i test di bob sono molto
intelligente sull’applicare asciutto e sono qui
chiedendo come è intelligente lavorare per te
ti senti aggressivo?
l’applicazione di dry sta facendo il test
più facile da capire o lo sta facendo
più complicato intendo che forse lo faremo
applica questo stesso identico modo di asciugare a
il nostro codice di produzione , ma se così non fosse
significa che dovrebbe essere solo ciecamente
applicato ai nostri test e l’interessante
La cosa è che, nonostante la sostituzione del secco
prova con i test umidi nel complesso
il numero delle linee è esattamente lo stesso
esattamente lo stesso numero di linee
non salire una volta che ci siamo asciugati da uno
area e spostato in un’altra area e noi
ha reso il nostro codice più chiaro si arriva a
cancella un mucchio di metodi di supporto
non ha cambiato il numero di linee è il
così possiamo creare test più chiari
senza nemmeno aumentare il nostro carattere
conta o il numero di linee che dobbiamo
leggere è ovviamente una buona cosa così noi
ha parlato in precedenza di motivatori
ci sono diverse motivazioni non tutte
sono buoni, quindi vogliamo convalidare il
sistema questo è probabilmente una buona cosa noi
voglio ottenere un feedback dal sistema noi
vogliono impedire la regressione questi sono tutti
tipo di sinonimi forse vogliamo codice
copertura alcune persone vogliono un centinaio
per cento direi che probabilmente non lo è
una grande idea ma potrebbe essere il
la motivazione sulla tua squadra forse vuoi
per consentire di reagire ovviamente al refactoring
un buon motivo per scrivere test
documentando il sistema che ho personalmente
mai scritto un test per documentare a
sistema ma alcune persone amano questo e
è fantastico se ti rende di più
efficace è un motivatore fantastico andare
perché come ho detto non tutti lo sono
buone ragioni ma voglio dire sono sicuro
qualcuno nel pubblico non lo fa nemmeno
credere davvero nei test unitari o ha
ha sofferto molto con i test unitari e
hanno quel manager che non lo lascerà
loro si allontanano da ciò che vogliono sapere
perché DHH e altre persone stanno dicendo
loro quei test unitari sono morti e test
dovrebbe andare via e hanno così tanto
dolore non sanno cosa fare e
il loro manager non li lascerà lasciare
va questa non è una grande situazione per
essere in ovviamente, ma ciò non significa
che dovresti semplicemente dire improvvisamente
beh, sto per ignorare i test unitari
o farò qualcosa di diverso
intorno ai test unitari o sto per scrivere male
i test unitari capiscono qual è il tuo
la motivazione è e poi come può
influire sui test dell’unità e quindi scrivere
loro in un modo migliore intendo
realisticamente se non credi in
test unitari ma il tuo manager ti richiede
prima di tutto se non sta mai controllando
il tuo codice
non sta mai controllando il tuo codice, allora tu
probabilmente non potrò mai nemmeno scrivere un
asserzione e poi tutto andiamo bene
passare e tutto va bene, giusto
e se stanno controllando, allora è dentro
i tuoi migliori interessi per scrivere di più
test di unità manutenibile possibile
giusto se stanno controllando il codice e
non ci credi e tu non ci credi mai
vuole guardare di nuovo a destra il più
test mantenibile è possibile in modo che esso
non fallisce mai e poi non hai mai veramente
doversi preoccupare è probabilmente TDD
il motivo più comune per scrivere unità
prova vuoi interrompere un problema o
migliorare il tuo design credo che lo siano
praticamente sinonimi di accettazione da parte dei clienti
Non consiglierei mai a nessuno di farlo
ma una volta ho lavorato a un progetto e noi
doveva avere una suite di test verde prima
il cliente firmerebbe una funzione
così ci piacerebbe andare al cliente e dire
vorremmo che a firmare questo
e lei direbbe che va bene testato manualmente
perfetto sembra buono ok fammi vedere il
schermo verde e tu hai appena aperto o tu
vai alla pagina web e dì
qui è verde va bene controllare fuori di esso
non ha alcun senso per me, ma è
è una motivazione a cui succederà
forse ad un certo punto in una carriera
quindi vale la pena capire bene
tal caso, così ora se queste cose vanno mai
rosso per ogni ragione sciocca che non capiamo
firmare e dobbiamo parlarne noi
voglio affrontare i nostri test in modo diverso
in tal caso suggerisco di parlare con
squadra tutti che vengono a una visione condivisa
del motivo per cui stai scrivendo i test, è possibile
essere scritto per molte ragioni diverse
supponendo che il test sia necessario non lo è
necessariamente la cosa giusta o giusta
TDD è una tecnica fantastica che non uso
sempre lo userò probabilmente il 20% di
il momento giusto per essere onesto sono di più
di un fan dell’uso di strumenti di tipo per
dove penso che saranno i più
utile quindi faccio molti esperimenti
con lo sviluppo guidato da repla in questi giorni
e molto meno TDD se fossi ancora
lavorando in Java tutto il tempo allora
probabilmente farebbe più TD ma applichi
queste cose in modi che ti aiutano ma
chiediti anche tu perché, ancora una volta , diciamo
Sto lavorando in Java e voglio ottenere
tutti i vantaggi di fare TDD in Java
e così facendo il mio TDD ho avuto un sacco
di test non si limitano a commetterlo e a camminare
via non ti stai chiedendo perché a
quel punto voglio dire perché li hai scritti
perché volevi fare TDD e questo
ti ha aiutato a migliorare il tuo design aiuta
scrivi un codice migliore e questo è grandioso
hai avuto quello che avevi
e perché ma perché ti ha aiutato a scrivere
il codice di dominio non significa che lo farà
aiutarti a mantenere il codice del dominio così
fare un passo indietro e guardare ogni test
e dì perché abbiamo questo test se questo
mi ha aiutato a progettare il codice che è ora
progettato e non hai altro motivatore
che l’unica scelta corretta è quella di
cancella quel codice che qualsiasi pazzo può scrivere
valutare che li aiuti oggi bene
i programmatori scrivono test che aiutano il
tutta la squadra in futuro se tu
ricorda qualcos’altro da questo
presentazione questo è ciò che vorrei
per portarlo via è così facile scrivere a
prova che ti aiuta in questo momento
il tuo problema attuale è un passo
più difficile pensare di aiutare te stesso
in futuro tornerai in tre
settimane tre mesi si guarda a quel test
di nuovo è scritto in un modo che è
ti aiuterò a mantenere il codice e se
la risposta è sì grande ora andare avanti
il secondo passaggio non si ferma, vai al secondo passaggio
e dire se non ho mai visto questo codice
prima e io vengo a questo sai messo
se stessi nelle scarpe dei tuoi compagni di squadra
vieni a questo test è utile non farlo
smettila finché non puoi anche dire di sì lo sai
e questo significa guardare al fallimento
non solo il passato guarda al fallimento
qual è il messaggio di errore dire se
Dice solo che sai che qualcosa si aspetta
era falso e non è molto utile
questo non dice a nessuno cosa sta succedendo
su forse la stringa che descrive il test
se hai un nome di prova forse è così
utile se non è di nuovo abbastanza utile
se se vieni completamente vuoto
come siamo arrivati a questi test al
inizio della presentazione, se lo è
non utile cambiala pensa al tuo
squadra quindi cosa possiamo fare in modo specifico
esempi concreti è praticamente cosa
questa presentazione riguarda è concreto
esempi di tutto questo questo è il tuo
carriera e sta finendo una suite di test
corri alla volta quanto è veloce il tuo test
suite che qui ha una suite di test
corre in meno di un secondo arriva davvero
okay non chiederò circa dieci secondi come
è lungo il tuo test per essere preso sì sì
è dove dovrebbe essere se il test
suite richiede più tempo di quella gente
non ce la farò, la gente non lo farà
eseguire la suite di test prima di effettuare il check- in
perché il loro equipaggio qui ne partecipa
Test Suite run in un momento che nessuno vuole
seduti lì Voglio dire quello che si chiama quella
tempo mentre la tua suite di test
è in esecuzione, lo chiamo spreco perchè sono acceso
Twitter o sono su email o da qualche parte
probabilmente peggio essere onesto, voglio dire che lo siamo
non funziona , stiamo perdendo il nostro tempo
guardando a chi sa cosa sul
internet quindi fai eseguire il test più velocemente
il modo più semplice che so come fare
questo è quello di creare test unitari solitari così
alcune persone chiamano questo test unitario
ma altre persone chiamano molte altre cose
unit test così quando stavo scrivendo un libro
su tutte queste cose ha detto Martin Fowler
smetti di provare a rubare la frase
test unitario
non ti lasceranno mai rubare il
il test delle unità di nome si presenta con qualcosa
è un test di unità nuovo e quindi solitario
piuttosto semplice non oltrepassare mai il confine
quindi le tue suite di test sono lente perché
stai colpendo il database che stai andando
sulla rete che stai andando al
il file system è davvero ciò che sta rallentando
tutto in basso non è come il
l’informatica interna sta rallentando tutto
giù nella maggior parte dei casi quindi smetti di farlo
test di unità solitarie giuste che mai
confini trasversali ma una cosa che è anche
molto fastidioso è il fallimento a cascata voi
cambiare il film applaudire al test del cliente
fallisce questo è fastidioso che non lo è
questo non mi aiuterà a superare
la mia giornata più veloce che non ha intenzione di
motivami ad essere entusiasta di essere su
questo fallimento a cascata della squadra porta via
la mia motivazione per essere un ingegnere del software
quindi la classe sotto test dovrebbe essere la
solo una classe concreta trovata in un test
questa è la definizione completa di
test unitario solitario e in realtà ho
nessun esempio di fermare qualcosa da
andare al file system o fermarsi
qualcosa sta andando per il database perché
Penso che sia abbastanza auto-esplicativo
puoi scrivere unit test solitari che
non costa nessun tipo di confine sì
da concreto qui intendo finta o stub
sì ne avremo alcuni ne ho alcuni
esempi concreti quindi abbiamo bisogno di qualche tipo
di altra frase, abbiamo solitario
test unitari abbiamo bisogno di qualcosa per dire cosa
gli altri test sono perché quelli sono
prezioso anche e quelli sono unità sociale
prova è così semplice
a partire da ora abbiamo notevolmente migliorato
test unitari socievoli ma ne abbiamo molteplici
quello che chiamavo lezioni concrete noi
fare testare il cliente parlando con
noleggio che parla del film qualsiasi
il passaggio al film sta per arrivare a cascata
tutte quelle altre classi così che noi
è meglio, ma siamo ancora del tutto
socievole
non abbiamo test unitari solitari a questo
punto e credo che un buon mix di entrambi
è davvero quello che stiamo cercando siamo
cercando un qualche tipo di realtà
tutta la copertura che possiamo ottenere dai nostri
test di unità solitarie perché sono veloci
perché non vanno oltre la rete
perché non sono traballanti perché loro
concentrarsi su un test unitario concreto o uno
una classe sotto test e alcuni mock o
mozziconi quindi questo è quello che abbiamo adesso
a mio parere questo test è già un
prova abbastanza solida questo è un grande test
questo test fallisce prima del check-in e io
so che ho un cliente con a
noleggio con un film che è un nuovo
rilascio e posso leggere un valore atteso
senza navigare da nessuna parte intendo che lo è
quasi il paradiso rispetto a quello che abbiamo guardato
all’inizio, quindi è fantastico ma
il problema è di nuovo se un film cambia
allora questo test potrebbe fallire e non vogliamo
questo test fallisce perché questo è
non dice classe di test cliente ma questo
è nella classe di test dei clienti, quindi noi
non voglio che le nostre modifiche ai film si interrompano
le cose quindi è questo è un concreto
esempio di utilizzo vorrei solo chiamare questo
uno stub per essere onesti ma sto lavorando con
mockito e loro lo chiamano un finto, io no
pensa che la semantica qui sia davvero
importante ma stiamo lavorando con non nostro
corso di noleggio con cui stiamo solo lavorando
finta e quindi qualsiasi cambiamento a questo punto
un noleggio o un film non scenderà a cascata
torna ai nostri test dei clienti e tu puoi
hai notato il null e potresti averlo
vomitato un po ‘nella tua bocca
per me questa è la stessa cosa di
Padrino, abbiamo una corda magica
in là che dice Padrino 4 e poi
abbiamo una stringa magica in là che
dice di sapere qual è la differenza tra
quei personaggi nel contesto di
questa stringa ma mi sento come se
programmatori abbiamo solo questo intestino
reazione, se piace oh, perché ha anche lui
lo so oh, dev’essere un errore, voglio dire che lo sono
certo ci sono persone in questa stanza chi
sicuramente l’ho visto quando l’ho messo
su e andò oh ha fatto un errore ha lasciato
un nulla dentro ma è solo una magia
stringa è una stringa magica su entrambi i lati
quindi qual è la differenza tra null
e padrino ma va bene sono ancora
saranno le persone a cui fare eccezione
quello e va bene perché tu hai un
stub e tu aggiungi solo un po ‘di valore
lì aggiungi il Padrino lì e vai avanti
Sto solo mettendo questo qui così gente
quindi le persone che si sentono a proprio agio con
null otterrà qualche convalida come
va bene così abbiamo anche un’unità solitaria
test che si concentrano esclusivamente sulla somma
questo vecchio test torniamo molto velocemente
questo primo test a sinistra ha
la costruzione di stringhe ha sommato ha a
molte cose diverse accadono questo
il test copre molte cose diverse
e tu non hai necessariamente bisogno di sentire
possiamo concentrarci esclusivamente sul sommare così
abbiamo un noleggio simulato che stava ambientando
la carica per a sinistra e abbiamo a
noleggio simulato che stiamo impostando il
carica o i punti per sulla destra
e poi abbiamo creato il nostro cliente e noi
basta validare il valore che sono
bellissimi test questi sono test che tu
può venire con mai averlo visto
prima che nessuno di voi abbia mai visto questo
prova prima e se questo ti sta fallendo
So esattamente quello che sta succedendo è
completamente dritto non lo fai
devo navigare ovunque intendo forse
devi passare al Builder se
questa è la tua prima settimana in squadra
il primo giorno della squadra forse non l’hai mai fatto
visto un costruttore ma usiamo questi costruttori
globalmente in tutte le prove così
anche se è il tuo primo giorno tu
vai al Builder per vedere cosa
stiamo andando a fare quello che stiamo facendo tutto ciò che siamo
creare alcune istanze non è un grosso problema
per la vita del progetto che ora conosci
quello che stiamo facendo quando stiamo creando in
test cittadino sai che stiamo usando
costruttori è possibile riapplicare questo valore anche
se dovessi passare quel tempo su questo
prima prova è ora possibile applicare che attraverso
l’intera suite di test quindi ne abbiamo persi alcuni
copertura sai che abbiamo avuto un nulla in là
e abbiamo rotto le nostre somme e noi
ho perso il test dell’angolo che eravamo
facendo al cinema ora ce la riprendiamo
beh, è bello così ora abbiamo
fiducia nel nostro cliente a grana fine
test e abbiamo fiducia nel nostro
test cinematografici e abbiamo tutto il
copertura che avevi precedentemente sembrano
la somma dei punti è testata sommando di
le accuse sono testate è la costruzione di stringhe
testato ma anche tutto il dominio
casi per la classe di film tutti testati così
abbiamo completa fiducia nelle nostre
sistema ma abbiamo anche ottenuto l’isolamento
qualcosa che non avevamo in nessuno
qualunque cosa non abbiamo più
fallimenti a cascata in particolare qualsiasi
cambiare il film non fallirà più
quel cliente prova estremamente prezioso
quando eseguiamo i nostri test, sappiamo qualcosa
quello che sta fallendo è in realtà fallendo
a causa di un cambiamento in quella classe di dominio
finché parliamo di a
prova solitaria questo dovrebbe essere fantastico
dovrebbe migliorare le nostre vite, ma lo siamo
manca l’integrazione giusta è quella
cosa che non abbiamo abbiamo grandi
isolamento un bastone abbiamo velocità
fantastico ma non abbiamo integrazione
ed è per questo che non dovresti mai scegliere
uno di questi approcci esclusivamente
scegli gli strumenti che ti rendono efficace
e questo significa una piccola somma qui
e una piccola somma qui significa
per me il 20% TDD in questi giorni sono ancora
usandolo non devo fare un
scelta esclusiva per TDD tutto o
nulla vale la stessa cosa qui
è un test di unità socievole che porta
tutto insieme così ora abbiamo il nostro
test che non falliscono a cascata
ogni test che non richiede molto tempo
per correre e quindi abbiamo questo porta
tutto insieme ha un cliente
chiamato Pat con un noleggio con un film
questa è una nuova versione e un altro noleggio
quello è Scarface, hai l’idea che abbiamo
multipli con cui abbiamo un cliente
più noleggi più film e noi
può legare tutto insieme e
non ci sono null per rendere chiunque
scomodo quindi come altro si può
migliorare l’asserzione di test suite per
prova so che ci saranno persone che
dibattere con questo sono qui per fare il mio
caso ma poi alla fine tocca a voi
su quello che pensi sia più appropriato così
questo è di nuovo il film test che noi
già visto diciamo il secondo
l’asserzione fallisce questo è quello che sei
gonna vedere Voglio dire Stavo per dire che cosa fare
tu pensi ma tu sai che tutti lo sanno
questo è ciò che vedrai uno
fallimento di
L’unico fallimento di Sion qual è il valore di
la terza quarta e quinta affermazione a
questo punto è zero è inutile
forse sta passando forse sta fallendo noi
non avere idea
il codice non è stato eseguito per cui ne conosci uno
fallimento e hai zero automaticamente
feedback generato dall’altra prova
dalle altre affermazioni viene fornito un test
con più affermazioni quando sono
tutto un percorso quando passano tutti
tutti forniscono valore intendo ovviamente
stanno passando tutti la vita fantastica è
bene
hai scritto quel test che hanno passato tutti e
hai pensato di andare avanti, ma poi quello
la prima asserzione fallisce e così è
completamente annullato il valore di ogni
altra affermazione sono semplicemente inutili
potrebbero anche non essere lì
sono forse peggio perché lo sono
rumore che ti fa capire il valore che sono
seduto lì e ti stanno dando
Niente
quindi, in effetti , il rumore è negativo
valore quando sei di fronte a un fallimento
test che ha più asserzioni tue
forza tra due situazioni di merda
la prima situazione è la lettura di tutto il
prova e poi legge tutto il dominio
e decidendo che va tutto bene
tu sai che l’ affermazione è fallita, io
significa capire cosa c’è che non va bene aggiustarlo
tutto bene ora tre quattro e cinque sono
Ecco quali sono le mie scelte leggere
tutto e assicurati che vada tutto bene
certo non perché siamo tutti pigri noi
basta fare clic su Esegui nuovamente e poi quattro fallisce
e cinque è senza valore e andiamo correzione
e poi si corre di nuovo e forse cinque
fallisce , passiamo attraverso questo triste ciclo
di fissaggio corrente e fissaggio
non deve essere così e se noi
ho ottenuto tutti i dati di cui avevamo bisogno
allo stesso tempo cosa succederebbe se tutto fallisse
quando si doveva e passato, quando si
doveva allo stesso tempo
non sarebbe più efficace il
il modo in cui devi farlo è solo una pausa
queste affermazioni a parte
semplicemente non usare più asserzioni è
non proprio così complicato ma parte di
questo è ovviamente bene io non voglio io
non voglio ripetere troppo codice okay
i costruttori di cool use usano un certo tipo di
applicazione globale per gli occhi che ti consente
per creare rapidamente i tuoi test, se tu
non è possibile creare rapidamente i tuoi test come
questo rompe le cose in un singolo
responsabilità c’è un altro problema
non si tratta di affermazioni multiple contro
una sola affermazione c’è un qualche tipo di
altro problema non puoi creare il tuo
classi di dominio abbastanza facilmente o
qualcosa hai qualche altro problema
non nasconderlo
problema utilizzando più asserzioni e
detto di fare così una volta che abbiamo questo ora noi
in realtà vediamo questo, quindi questo è molto meglio
ora abbiamo un qualche tipo di somma che abbiamo
informazioni aggiuntive lo stesso identico
asserzioni ma ora ne abbiamo altre
informazioni possiamo vedere che il primo fallimento
è per tre giorni il secondo fallimento è
per quattro giorni il terzo fallimento è per
cinque giorni possiamo anche vedere, cercando in
i valori attesi che tutto
ogni singolo atteso è un anno e mezzo
meno del reale così solo avere tutto
di quei dati allo stesso tempo sarebbe
meglio ma ora abbiamo anche un modello
che possiamo lavorare con un’asserzione per
il test ci consente di ottenere l’aspettativa
valori e i valori effettivi per ogni
test singolo che è chiaramente migliore
avere tutti questi dati allo stesso tempo
ma ora abbiamo un modello cosa facciamo
riconoscere da quei test falliti
qualsiasi cosa al di sopra di due giorni stava fallendo
tutto ciò che stava fallendo era fuori tempo
di una volta e mezza quindi la somma di quelli
i valori sono quelli che i fallimenti hanno avuto di più
valore delle parti in modo da rompere il test
in più affermazioni che avvolgono tutto
questo in sul test si possiede finire possedere
tu
è un’altra piccola e carina citazione da
Fight Club ma non potrebbe essere più vero
ogni riga di codice che scrivi ne ha
è anche il tipo di ritorno sull’investimento
positivo o negativo
forse è piatto ma più che probabile
è positivo o negativo si deve
possedere ogni singola riga di codice in
produzione, ma anche nei test in modo
guarda i tuoi test da un ROI
prospettiva diciamo per esempio voi
ha scritto del codice TD con un codice e
cambierà il colore di a
sfondo su un sito web questo non lo è
cruciale per la tua attività, ma tu hai fatto TDD
è fantastico che ti ha aiutato a creare il
buon design per cambiare questo colore
fantastico hai fatto tutto bene
ma allora diciamo che il test è un po ‘
traballante fallisce ora e poi forse
c’è una condizione di gara a causa del
quadro che stai usando qualcosa
così cancella quel test di cui sbarazzarsi
prova subito se quello sfondo
il colore non cambia correttamente
gli affari andranno su qualcuno lo farà
ti lamenti ad un certo punto e ti aggiusterai
il colore di sfondo e l’utente
l’esperienza sarà un po ‘ fuori per a
un po ‘di tempo sarà un po’
deludente ma gli affari vanno avanti ma
tutto il tempo che sprechi su quella sfoglia
test che sta solo facendo l’utente
esperienza che molto meglio è a
anche i rifiuti
a te alla tua squadra ai tuoi compagni di squadra
il business guarda il tuo test in termini
di ROI un altro esempio che io
piace tornare a è che hai un
compagnia di assicurazioni e l’assicurazione
l’azienda deve cercare tutti i suoi
i clienti per numero di sicurezza sociale voi
dovrebbe probabilmente avere una convalida su
quel numero di previdenza sociale che vuoi
ottenere quel SSN giusto è necessario essere in grado
per cercare qualcuno, ma questa persona ha un
nome e sai forse hai messo un
piccolo test in là per fare in modo che
è tutto l’alfa che passa attraverso
perché è bello che tu sia gentile con te
porta il nome del cliente giusto ma tu
non è necessario che il nome del cliente sia
perfetto per costruirli non hai bisogno del
i nomi dei clienti sono perfetti da contattare
li sai che puoi cercarli
qualcuno chiama il call center se ottengo
il tuo nome è sbagliato e tu chiami il
call center andrà tutto bene
se c’è uno in più in là o
qualcosa del genere quindi se sai scrivere
questo test facilmente e mantenerlo facilmente
poi fallo ma se questo è di nuovo un disastro
test o un test problematico qual è il
valore reale per il business intendo davvero
tenendolo fuori da qualcuno per primo
nome qual è il vero valore per il
affari non è molto alto
pensando al tuo test dal
punto di vista individuale smettere di pensare
su di loro va bene mi piace TDD io sono
scriverò questo test e basta
questa è la fine di ciò che ha bisogno
per essere commesso non è abbastanza buono
inizia a pensarci dal tuo team
punto di vista sai che l’hai scritto
prova e ti ha aiutato ad avere un bell’aspetto
codice e questo è bello ma non è un
ragione sufficiente per lui per vivere
quello che devi fare è guardarlo e
dire okay, sono arrivato a questo con un nuovo
mente capisco esattamente cosa sta succedendo
qui qui mi aiuterà a mantenere questo
codice che è un buon test da tenere
i tuoi test non sono speciali, non lo sono
i fiocchi di neve belli o unici uguali
testo decadente come ogni altro test Combattere
Il club pensa ancora alla squadra che è
è quello che voglio che tu lasci qui
con immagino più che altro
pensare alla squadra non pensare
quello che stai facendo nel momento pensa
sul valore a lungo termine di quel codice
pensa di mantenere quel codice un anno
da ora quindi è davvero il tipo di
portando tutto il parlare insieme anche io
Sono chiaramente appassionato se non arrabbiato come
puoi dirmi delle cattive prove, così l’ho fatto
scrivere un libro su di esso, benvenuti per controllarlo
fuori e
Ho anche provato a finire presto così noi
tutti potrebbero arrivare a pranzo presto
tutti gli altri ma ne abbiamo almeno dieci
minuti per domande
Please follow and like us: