Press "Enter" to skip to content

Unit testing: How to get your team started – FunFunFunction #2


Novembre 2000
National Cancer Institute Anna Massey
in una serie di terapie per incidenti
software di pianificazione creato da più dati
sistemi internazionali e americani
la società signorina calcola il corretto
dosaggio per i pazienti sottoposti a radiazioni
terapia il software consente una radiazione
terapeuta per disegnare sullo schermo il
posizionamento di schermi metallici chiamati blocchi
progettato per proteggere i tessuti sani da
la radiazione
tuttavia il software consente solo i medici
usare per i nodi di scudo
e i dottori desiderano usare il cinque
i dottori si rendono conto che possono ingannare il
software disegnando tutti e cinque i blocchi come
un grosso blocco con un buco nel mezzo
ma quello che i dottori non capiscono è
che il software offre diversi
risposte a seconda di quale direzione il
buco è forte disegnalo in una direzione
e la dose corretta è calcolata disegnare
in un’altra direzione e il software
raccomanda di saggiare il necessario
esposizione di almeno otto pazienti muoiono il
medici che sono legalmente obbligati a
ricontrolla i calcoli del computer
a mano sono incriminati per omicidio, quindi facciamolo
parliamo di test unitari come la maggior parte di voi
il software che scrivo non può uccidere
persone ma anche come la maggior parte di voi
fare affidamento sul software che scrivo io
fare affidamento sul software di altri tutti i
il tempo nella mia vita quotidiana mi fa davvero impazzire
quando il software su cui mi baso
si rompe a volte quando si rompe
è solo fastidioso a volte lo è
davvero frustrante e rovina la mia
tutto il giorno e a volte ha causato
io per perdere il lavoro e in realtà mi ha fatto
fallire a cose a scuola lavoro
il tuo software probabilmente non controlla
scudo di radiazioni ma il tuo software ti aiuta
le persone e aiutare le persone è importante
quindi come programmatori dobbiamo prendere
la qualità della nostra serie di software
squadra che io lavoro in fa un sacco di
test in molti modi diversi e
sono tutti buoni, ma vorrei
trascorri questo video parlando di uno
tipo specifico di test unit test e
la squadra in cui lavoro oggi scrive unità
test unit test fa parte del nostro modo di lavorare
e ha funzionato davvero bene per noi
tuttavia nella maggior parte delle squadre ho lavorato
in non abbiamo scritto test unitari e il
la cosa divertente è che in quelle squadre di più
di noi, o almeno molti di noi voleva
scrivi test unitari ma poi non abbiamo fatto cosa
ha fatto il mio attuale team di collaudo di unità
i miei ex team non di test unitari no
questo è ciò che questo video tratta di questo
il video è diviso in tre pratiche
passi che penso abbiano fatto entrare la mia squadra
I tester di unità spenderò l’intero
video andando in dettaglio su ogni passaggio I
non mostrerà alcun codice ma ci sarà
bei disegni sono i tre passaggi
una parte che impegna deve essere un’unità
testato parleremo di quanto sia importante
è che la tua squadra si impegna in uno
semplice regola se un commit non ha
test di unità che non va in
repository Vorrei anche parlare di come
convincere la tua squadra a impegnarsi in questo
passo per insegnare con la revisione obbligatoria del codice
parleremo di come puoi usare
revisione obbligatoria del codice per insegnare a ciascuno
altro al test di unità fase 3
scollegare il codice nel passaggio finale I
parlerò di come puoi
separa il tuo codice in unità usando due
modelli di progettazione iniezione e armi di forza
tuffiamoci nel passo uno il lato che
i commit devono essere testati unitamente a tutti
la tua squadra deve essere d’accordo che da ora
su nessun commit entra nel repository
senza che il commit sia coperto di valore
prova idealmente a farlo al
inizio di un progetto comunque in
pratica che non succede quasi mai
semplicemente non c’è alcun incentivo a scrivere
unit test all’inizio del tuo
progetto il codice è così piccolo e
gestibile e carino nessuno lo è nessuno
paura di quel test di unità di codice è un
davvero difficile vendere a quel punto, ma più tardi
è molto più facile quando il tuo codice ha
cresciuto fino a un milione di linee e quattro
cento casi limite strani e tutti
è sopraffatto da bug di regressione che
è il momento in cui vendi le persone
test delle unità e quando fai la cella
deve essere chiaro e semplice non commette
senza test quella regola è realistica
è facile ricordare che non è ambiguo
e ti permette di lavorare in piccolo
pezzi che ti permettono di spremerlo
oltre ogni punto i capelli lentamente ma
sicuramente aderendo al no commit
senza test la regola ti procurerà un sistema
in prova e che è passo uno lato
che commette deve essere testato unitamente
passo due insegnare con il codice obbligatorio
rivedere i test delle unità è difficile da fare
test delle unità emotivamente difficile è come
filo interdentale i denti
semplicemente non fornisce abbastanza istante
gratificazione per essere naturali per noi noi
avere un cervello di scimmia e questo cervello è
non adatto a costruire computer a lungo termine
architettura per cui questo cervello è adatto
la rapida acquisizione di quindi noi
serve una struttura per mantenerci
responsabile una struttura dado miei amici
è obbligatorio codice recensioni codice obbligatorio
le recensioni faranno meraviglie per il tuo codice
qualità l’elenco dei benefici di
la revisione obbligatoria del codice è molto lunga ma
ci sono molti altri discorsi e libri e
roba su questo quindi mi concentrerò
su uno di essi è possibile utilizzare obbligatorio
revisione del codice per rimanere impegnato per unità
test e questo è obbligatorio
la revisione del codice consente di iniziare a utilizzare
un semplice subdolo o estremamente efficace
trucco quando si esamina il codice e
sei un po ‘incerto se il
i test sono in realtà un bene
puoi semplicemente fare un po ‘di casino
bit nel codice e vedere se i test fanno
pausa e se non gli piace dovrebbero
quindi basta commentare il commit
dicendo hey questo questo codice sembra carino
ma II potrebbe cancellare questa intera riga
e i test ancora passati potresti fare
assicurarsi che che è coperto dal test come
bene che è molto buona perseguibile
feedback ed è davvero un buon modo di
insegnare agli sviluppatori che non conoscono l’unità
testare come entrarci è un passo
due insegnano con la revisione obbligatoria del codice
il terzo passaggio rimuove il tuo codice non appena
il tuo team inizia a scrivere test unitari per
una base di codice esistente si vuole tutti corrono
in uno o un enorme breakwall e lo è
andando a suonare qualcosa di simile, ma
questo codice è troppo complesso per i test unitari
non fatevi prendere dal panico questo è normale succede
a tutti
il
il complesso delle parole è latino e significa
intrecciato complesso mescolato è il
opposto di un’altra parola latina chiamata
simplex che significa separato o
side-by-side o unità lo capisci quando
stai dicendo che anche il tuo codice
complesso , in realtà lo stai dicendo
non è in unità e non sorprendentemente
il tuo codice deve essere in unità in ordine
perché tu lo collaudi per fortuna
noi ci sono ben documentati e
modelli di progettazione collaudati per aiutarci
rompere il codice trecciato in unità che siamo
parlerò di due di loro
iniezione e facciate comincerò con
iniezione che sto per descrivere a
problema e poi te lo mostrerò
come risolverlo usando l’iniezione
immagina di avere un sistema che lo faccia
ordini e pagamenti che abbiamo scoperto
che il nostro sistema si blocca se la banca lo è
in basso vogliamo risolvere questo problema visualizzando a
impossibile connettersi al tuo messaggio bancario
in modo che i nostri clienti si arrabbino con
la loro banca di merda invece di noi
voglio anche scrivere un test unitario in modo che
questo AAG non è raro la sua brutta testa di nuovo
quindi immagina che il nostro sistema sia simile
questo ha una cosa d’ordine, diciamo
che chiamiamo creare ordine sull’ordine
cosa come risultato del chiamare creare
ordina la cosa dell’ordine dentro di sé
istanziare una cosa odio come questo il
la cosa dell’ordine chiamerà quindi paga su
fare una cosa come questa che in
turno invia la richiesta di pagamento al
indietro così ora vogliamo scrivere il
test unitario che simula la banca
restituendo un errore un buon modo di
risolvere questo sarebbe un falso di fronte a
finta cosa paga che a sua volta restituisce a
falso errore il problema è che non possiamo
fai questo in questa architettura
perché la pittura è creata all’interno del
prescrivere esami cosa e di unità che avremmo
scrittura non avrebbe alcun modo di ottenere è
non passare alla cosa dell’ordine e
questo è un esempio di codice intrecciato lì
è un’unità che vogliamo testare l’ ordine
cosa ma è intrecciata insieme a
pittura e che ci impedisce di
testando l’ordine separatamente
non è possibile scrivere test unitari per l’ordine
cosa perché non è un’unità è
in realtà due unità intrecciate insieme bene
invece di istanziare la pittura all’interno
della cosa dell’ordine lo istanziamo all’esterno
e iniettare incollando in ordine cosa tipo
questa la cosa dell’ordine non è più
responsabile della creazione di una cosa di pagamento
invece ora si aspetta di essere passato a
cosa che è stata creata al di fuori del
codice reale useremo il vero iniettato
paga cosa mentre l’unità prova
iniettare e deridere Paisley in questo modo ora
quando stiamo scrivendo i nostri test di unità che abbiamo
può semplicemente dire la cosa paga finto voi
genera un errore quando viene richiesta la retribuzione
in questo modo si sta iniettando una cosa paga
ordine invece di aver ordinato
cosa crea una cosa in segno di sé
abbiamo rinviato lo strumento che ci consente
per testarli come unità separate e così
è il modello di iniezione che siamo ora
andando a guardare un altro problema e io
sto per mostrarti come risolverlo
usando la facciata ora immagina un simile
scenario in cui hai una cosa a pagamento e
hai una cosa dell’ordine ma il dipinto
non è il tuo codice, è il terzo
componente di partito che il dipinto
la compagnia fornisce e ora lo immagina
l’API di pagamento è simile a questo
effettua un pagamento che inizi passando il
URI dell’endpoint di Bank API
al metodo connect e all’API
endpoint che è lo stesso ogni volta che
restituirà un nuovo oggetto una connessione
che a sua volta chiamerà pagare il
metodo di pagamento vuole una protezione
eleggibilità di cui sei a conoscenza
parametro legacy che dovrebbe sempre essere
impostato su true e vuole anche un importo
che a sua volta produce un oggetto risposta
che ha una proprietà chiamata è successo
questa non è la migliore API, non è la
la peggiore API è abbastanza facile da chiamare, ma io
ora vuoi che metti in pausa questo video e
immagina di battere questa API
sei passato ancora dovresti essere
Aspettando caldo sì, ti fermi, certo
fatto
no, non hai dato un’occhiata
devi prima creare la risposta simulata
oggetto qui in fondo a te
creare un oggetto di connessione simulato in
in mezzo con un pagamento che tornerà
la democrazia su e infine creare a
finto di dipingere con un metodo di connessione che
restituisce l’ oggetto di connessione simulata quando
collega questa chiamata che non è un razzo
chirurgia ma è molto ingombrante e
staresti ripetendo quel codice
beffarda danza per ogni prova e che è
molto fastidioso perché non stiamo testando
la cosa paga qui stiamo testando il
cosa ordinata e quei test sono solo
interessato a una cosa che è corretta
l’importo è passato alla cosa paga an
modo efficace per affrontare questo è quello di
semplicemente incapsulare l’intera API dietro
una facciata per semplificare e appiattire come
questo ciò che abbiamo fatto qui è di avvolgere
l’intero dipinto all’interno di un pagamento
la facciata e la facciata è molto più semplice
l’interfaccia proprio come un unico metodo di pagamento in
questo nuovo mondo refactored invece di
passare la cosa paga direttamente in
la cosa dell’ordine che passiamo nel
facciata come questa ora quando si scrive un test
abbiamo solo straccio di pagamento facciata invece di
pagare una cosa del genere come questo se fossimo
deridendo la cosa paga direttamente ogni
il test dovrebbe fare un sacco di cose
per contrassegnare il pagamento creando questo
oggetto di connessione e così via ma il
la facciata di pagamento API è piatta e stupida così
l’unica chiamata che i test devono fare
finta è la chiamata a pagamento in questo video che abbiamo
ho parlato di come far arrivare la tua squadra
avviare i test unitari di cui abbiamo parlato
tre semplici cose che puoi fare
il design che esegue il commit deve essere testato unitamente
insegnare con la revisione obbligatoria del codice e
rimuovi il tuo codice
vedi Jackson e il Sox che hai
ho appena guardato un episodio divertente
funzione questo è uno spettacolo settimanale dove noi
cercare di diventare più entusiasti e sicuri
sulla programmazione esplorando vecchi
saggezza idee selvatiche e divertendomi sono il
uno che sta parlando qui, ma lo spettacolo
è modellato da voi per favore commentare giù
qui sotto e dimmi chi sei e come
vuoi finalmente migliorare come programma
e, soprattutto, assicurati di te
non perdere il prossimo episodio di divertimento divertente
funzione iscriversi al canale o
seguimi su Twitter a MP Jamie fino a quando
il prossimo lunedì rimani curioso
Please follow and like us: