Unit Test

In questo video vedremo come può essere testato il nostro codice.
Testare il codice è fondamentale perchè il programmatore deve essere sicuro che l'applicazione risponda sempre nella maniera preposta in ogni situazione, quindi si deve creare dei test che cerchino di coprire tutte gli scenari possibili in cui l'applicazione può trovarsi.
Tra le decine di tipologie/filosofie di test che normalmente deve superare un'applicazione, noi andremo a parlare di come eseguire unit test, che è la tipologia di test che più interessa allo sviluppatore.
Tramite unit test, il programmatore và a testare piccole porzioni di codice alla volta e cerca di vedere se il proprio codice risponde come dovrebbe in ogni circostanza.
In questo video, vedremo come creare una serie di test per controllare che una determinata funzione, ritorni sempre il risultato che ci si aspetta. Vedremo prima come eseguire questi test con il solo uso della console usando il metodo "assert()" e poi passeremo ad usare una libreria esterna creata appositamente con questo scopo "QUnit".

Trascrizione: (click per espandere)
salve a tutti in questo video parleremo
ancora di test e abbiamo già introdotto
un tipo di test nel video precedente che
era il test per la
compatibilità tra browser e oggi
parleremo di unit test
unit test fa parte di uno dei
tantissimi decine di diversi tipi di
test che possono essere eseguiti alle
nostre applicazioni e normalmente
lo unit test spetta al
programmatore perché con lo unit test
il programmatore va a testare il
proprio codice pezzo per pezzo unità per
unità
l'argomento testo è un argomento
estremamente il vasto e complesso che
meriterebbe un tutorial tutto per sé è
perché appunto ci sono diverse filosofie
e scuole di pensiero diversi strumenti
che possono essere usati diversi
ambienti di test
però appunto con questo video voglio
solo dare un'idea di come si potrebbe
eseguire dello unit test sul proprio
codice allora prendiamo come esempio una
una pagina web che ha un form in cui
l'utente deve inserire una password
noi vogliamo che questa password
risponda a determinate caratteristiche
prima che possa essere inviata al server
se questa password non ha tutte le
caratteristiche che vogliamo
andremo a non so a visualizzare un
messaggio di errore o qualcosa del
genere
allora diciamo che questa password
voglio che sia almeno di otto caratteri
e che sia un mix di lettere
maiuscole minuscole e numeri allora io
adesso vado a scrivere la mia funzione e
la chiamo valida password eccola qui e
abbiamo detto che
accetta un parametro che sarà una
stringa che sarà appunto la stringa
della nostra password e poi
questa funzione crea una variabile in
cui dico la password è valida e al
momento metto si è valida e poi andrò a
ritornare questa variabile
quindi io quando l'utente inserisce la
password
andrò a passare questa password
attraverso questa funzione se questa
funzione alla fine mi ritornerà "true"
quindi vero ok la password và bene
mandala al server e altrimenti se invierà falso potrò visualizzare un
messaggio di errore o qualcosa del
genere
allora adesso andiamo a vedere i vari
step che deve passare la mia
password per essere validata
correttamente allora metto un "if"
e allora cominciamo con la lunghezza
della password
quindi vado con la mia password e poi uso la proprietà length che abbiamo già visto
essere una proprietà delle stringhe e ho
detto che deve essere maggiore di otto
quindi se minore di otto vado a
convertire questa variabile valida in
falso quindi se la mia password ha meno
di otto caratteri entro in questo "if" e
setto la mia variabile in falso adesso
andiamo a vedere se questa password ha
delle lettere maiuscole allora
abbiamo come abbiamo visto nel video
in cui parlavo delle
delle espressioni regolari sezione due
video numero 15 andiamo a fare un test e
allora il mio test è che questa
variabile deve avere le delle lettere
maiuscole
facciamo così metodo test delle
espressioni regolari e poi dentro qui ci
metto dentro la mia password allora
questo qui dovrà ritornare falso e
anche in questo caso mi vado a settare
la mia variabile falso quindi se la mia
password non ha lettere maiuscole entra
in questo "if" e setta la mia variabile
valida in falso, numeri stessa cosa per
i numeri andiamo a vedere allora abbiamo
detto che voglio che ci siano dei numeri
e allora mettiamo un numero qualsiasi da
0 a 9 se la mia password non ha numeri
con questo qua nego entrano in questo
"if" e setta valida falso
ecco qui allora io ho la mia funzione in
cui faccio il testing che
la mia password sia almeno 8 caratteri
che abbia delle lettere maiuscole che
abbia dei numeri se tutto questo se
questo se io ho più di otto caratteri se
io lettere maiuscole e se io ho numeri
automaticamente mi ritornerà vero e
quindi la password sarà valida come si
va a testare questo qua allora faccio
vedere prima la maniera un po'
rudimentale poi vi faccio vedere qualcosa
di meglio allora se vi ricordate nel
video in cui io mi sembra sia
sezione 9 video 3
ho presentato
un metodo della console che si chiama
"assert" questo metodo va a
testare una espressione se l'espressione
ritorna vero non viene
visualizzato niente nella nostra console
se l'espressione ritorna falso allora
viene visualizzato un messaggio allora
questo metodo io adesso vado a chiamare
la mia funzione
eccola qui e vado inserire per esempio
vado a invocare la mia funzione validare
password con una password che è più
corta, ho la lettera maiuscola ho il numero
però è più corta di otto lettere
quindi io mi aspetto che questa funzione
ritorni il valore di falso
eccolo qui e poi metto anche un
messaggio da visualizzare password corta
anzi e' una stringa quindi vado a
asserire che la mia funzione ritorni
falso perché io so già che dovrebbe
entrare in questa parte qui quindi
questo qua ritornerà falso falso sarà
uguale a falso quindi questa espressione
mi ritornerà vero e quindi in teoria non
dovrei vedere niente qui andiamo a
vedere salviamo il file e non vediamo
niente se io avessi detto che questo qui
falso era uguale a vero eccolo qui mi
direbbe che c'è qualcosa che non va
allora abbiamo già detto che io mi
aspetto falso se la mia password è meno di otto caratteri
adesso andiamo a vedere se io mi aspetto
falso ancora quando la mia password non
ha lettere maiuscole questa qua e' la mia stringa password non ho lettere
maiuscole ho il numero e quindi password
no lettere maiuscole la stessa cosa se
io ho una password scritta con tutte le
lettere maiuscole
eccolo qua password no lettere minuscole
che io voglio che sia un errore perché
quello che mi aspetto e' che sia un mix di
maiuscole minuscole e numeri e poi
ancora i numeri qui mi aspetto che
metto una lettera maiuscola non metto
il numero no numeri infine una password
che sia perfetta eccola qui e quindi in questo caso io voglio che la
mia espressione mi aspetto che la mia
espressione ritorni vero password ok
andiamo a vedere il risultato a cosa
succede qui ho password no lettere
minuscole effettivamente io qui non ho
testato la mia password contro le
lettere minuscole
e quindi io in questa password
qui che non ha lettere minuscole mi aspetto falso ma la funzione sta ritornando
vero perché non c'è il "check" per le
lettere minuscole
e quindi qui testando questa funzione mi
sono accorto di non avere preso in
considerazione che la mia password non controlla per le lettere
minuscole e quindi adesso cosa faccio io
aggiungo un "if"
dove vado a testare le lettere minuscole
eccola qui se la mia password non ha
lettere minuscole
la mia variabile valida
diventa falsa e quindi anche questo
dovrebbe passare andiamo a vedere
perfetto adesso io tutti i miei test
tutti i test per questa funzione stanno
ritornando il
il risultato che io mi aspetto quindi se
la password troppo corta
questa funzione ritorna falso se la
password non ha lettere maiuscole
questa funzione ritorna falso se la
password non ha lettere minuscole
questa funzione ritorna falso se la
password non ha numeri questa funzione
ritorna falso se la password è
perfetta allora questa funzione ritorna vero ecco qui questo è una maniera un
po' rudimentale per testare il nostro
codice
adesso vi faccio vedere un'altra maniera
un po' più simpatica per farlo allora
essendo appunto questa maniera un po'
rudimentale non troppo developer-friendly
da usare ci sono online moltissime librerie che aiutano a
testare il proprio codice vediamo qui ho
aperto alcune tra le più famose e allora
una e' QUnit che fa parte della
famiglia delle librerie di jQuery
un'altra e jasmine è un'altra e mocha
mocha normalmente viene usata quando si
usa node js però c'è anche la versione
che può essere usata per il browser
io vi faccio vedere un esempio della QUnit
che è semplicissimo da usare
vi metterò il link in descrizione potete
trovare tutti gli esempi come
usare questa libreria allora come si usa
questa libreria intanto io vado a
prendere copiare questa riga qui questa
riga sono i css per metterci un po' di
stile la vado a mettere dentro la mia "head"
della pagina
eccola qua poi vado a copiare questi due
"div" qui che saranno i "div" in cui io
vado a visualizzare il risultato dei
miei test e quindi lo vado a metter
dentro il mio il mio body
ecco qui e poi copio anche questa
riga qui questa riga qui è la riga che
carica proprio la libreria di javascript
quella lì che andrò a usare per per fare
il testing
eccola qui che quindi va la libreria
QUnit
e poi cosa come faccio, prendo questo
esempio qua che sarà la funzione che
andrà a testare la mia funzione
scusate il gioco di parole ma andiamo a
vedere allora intanto questo qui
commento
indentazione un po' diversa dalla mia
ecco allora la mia funzione allora
questo qui abbiamo detto il primo è il
primo esempio che voglio, il primo test
che voglio fare è se la password è
troppo corta
allora io faccio così password corta
funzione assert ok allora io vado a
testare la mia password qui anzi la
copio da qui e la metto qui e come avete
visto fare prima io mi aspetto un
falso quindi
mi aspetto che questa mia funzione
ritorni falso
allora adesso andiamo a fare tutti gli
altri esempi come prima
5 e quindi ne ho cinque allora poi ci
abbiamo password no lettere maiuscole
password no lettere minuscole password no numeri password ok
ok e poi come parole qui ci mettiamo
questa questa questa e questa
ok però l'ultimo esempio siccome la
password e' ok qui mi aspetto vero che
andiamo a vedere cosa succede ecco qua
faccio vedere un po' più grande
questa libreria qui come vedete mi
da questi i 5 test che ho eseguito uno
per ogni e posso aprirli e la prima mi
dice ok il primo è passata la password
corta è passata password o lettere
maiuscole passata e tutte sono passate e
poi vedete altre informazioni quanto ci
ho messo eccetera
se avessi avuto qualcosa che non passava
per esempio qui metto vero e quindi mi
vedrete che fallisce
ecco che mi dice uno dei test ha
fallito e dice mi aspettavo vero
e ora ho ricevuto falso e poi mi dice la
riga in cui andava a fallire
qui sto passando valori booleani però io
potrei anche se ho una funzione che
ritorna una stringa potrei andare a
testare quella stringa come vedete io
qui uso sempre
il segno di identicita' e quindi
vado a testare la mia funzione con
quello che mi aspetto ok con questo è
tutto
vi metto i link descrizione come vi
dicevo prima questo è praticamente lo
unit test ci sentiamo la prossima ciao
File del video: