[MUSICA]
Nella lezione precedente ed esercizio che ha seguito la lezione,
abbiamo esaminato l'uso di test unitari in Angular.
Abbiamo visto come le diverse parti della nostra applicazione angolare, i componenti,
i servizi, le direttive, i tubi possono essere testati utilizzando test unitari.
Ma naturalmente,
i test unitari non rivelano tutto sull'interazione tra i componenti.
Ecco dove le strategie di test end-to-end ci permettono di
vedere l'intera applicazione funzionare come una singola unità.
Quindi, in questa lezione, esamineremo l'uso di test end-to-end e
quale ruolo svolgono nella strategia complessiva di test per le nostre applicazioni angolari.
Nell' esercizio che segue, esamineremo brevemente come possiamo condurre
test end-to-end per la nostra applicazione Angular, utilizzando uno strumento chiamato Goniometro.
Come abbiamo già imparato nella lezione precedente, i test unitari
ci offrono una meravigliosa opportunità per testare le nostre unità in isolamento.
Assicurandosi che le nostre unità eseguano ciò che dovrebbero eseguire,
la loro logica sia corretta e che l'interazione tra il componente e il
suo modello sia ben consolidata.
Ma, naturalmente, i test unitari non
completano l'intero quadro di come funziona una tipica applicazione Angular.
Non si dispone di singole unità che lavorano in isolamento.
Invece, i componenti interagiscono con i servizi.
I componenti possono fare uso di tipi.
I servizi, a loro volta, interagiranno con il backend per recuperare i dati.
E poi il componente stesso sarà responsabile
del rendering delle viste utilizzando i modelli per il componente.
Allora, come fa questo insieme di unita' a lavorare insieme?
E come facciamo a garantire che la collaborazione di queste
unità sia completamente priva di problemi?
Ecco dove test end-to-end e lungo la strada,
test di integrazione ci aiuta a coprire questo tipo di scenari.
Naturalmente, i test unitari svolgono un ruolo importante nella strategia globale di test.
Ma senza eseguire test end-to-end,
non possiamo essere completamente sicuri che la nostra applicazione stia funzionando come previsto.
Una cosa che devo sottolineare è che i test unitari sono veloci e
molto facili da ripetere e possono essere eseguiti più volte.
I test di integrazione e i test end-to-end sono lenti e quindi vengono utilizzati
solo con parsimonia per confermare che l'applicazione sta funzionando come previsto.
Quindi, quando guardiamo alla nostra strategia globale di test,
possiamo considerarla organizzata sotto forma di piramide.
Nella parte inferiore della piramide, occupando l'intera base e
formando le fondamenta della nostra strategia globale di test, ci sono test unitari.
Come abbiamo appreso, i test unitari ci permettono di testare le singole unità in isolamento,
assicurandoci che la loro logica e
il modo in cui queste unità funzionano siano corrette.
E questi test possono essere ripetuti molto frequentemente.
E in effetti, dovrebbe essere ripetuto frequentemente per garantire che le singole unità
stanno funzionando come previsto.
Naturalmente, ad un secondo livello di questa strategia sarebbero test di integrazione. In che
modo un piccolo gruppo di unità lavora insieme nell'
attuazione di tutto ciò che è necessario fare da tale gruppo di unità?
Quindi forse potremmo testare un componente insieme ai
suoi servizi per vedere come avviene il flusso di informazioni tra di loro.
Ma in cima a questa piramide è end to end test in cui
guardiamo l'applicazione complessiva.
E quanto bene l'applicazione complessiva sta prestando e
soddisfacendo i requisiti previsti.
Ecco dove vediamo l'uso di test end-to-end.
Come ci si potrebbe già aspettare da questo diagramma, i test end-to-end sono lenti.
E quindi non eseguiamo test end-to-end molto frequentemente, invece, il
test unitario costituisce la strategia principale per il nostro test della nostra applicazione angolare.
I test end-to-end contribuiscono al quadro generale, ma non vengono eseguiti così
frequentemente, ma sono ancora una parte essenziale della nostra strategia di test.
Quindi, come eseguiamo test end-to-end?
Parliamo brevemente degli strumenti che sono disponibili per noi.
L' ambiente di test angolare per i
test end-to-end è supportato da uno strumento denominato Goniometro.
Chi dice che i geek non hanno il senso dell'umorismo?
Goniometro, Angular, ecco a te.
Quindi che cosa è esattamente Goniometro?
Goniometro è, come ci si potrebbe aspettare, un programma nodo.
Questo ci permette quindi di effettuare test end-to-end.
Quindi Goniometro esegue i test contro la tua applicazione.
Quindi Goniometro carica la tua applicazione in un browser e interagisce con
l'applicazione proprio come un utente reale interagirà con la tua applicazione.
Quindi stiamo cercando di interagire con la tua applicazione,
anche se a livello di programmazione, ma eseguendo il tipo di operazioni che
un utente tipico eseguirà come fare clic sui link, compilare moduli.
Invio di moduli, navigazione in diverse parti della tua candidatura e così via.
Quindi questo è dove Goniometro sfrutta l'uso di un WebDriver per controllare
i browser su cui è possibile eseguire il test.
Uno di questi framework di app è chiamato come Selenium Framework,
che viene utilizzato per eseguire test automatici all'interno dei browser.
Se utilizzi Chrome come parte della tua strategia di test o Firefox,
puoi usare quella che viene chiamata connessione diretta.
Questo è disponibile tramite un goniometro per connettersi direttamente a questi browser ed
eseguire test all'interno di tali browser.
Ora, i test stessi sfruttano il quadro di regolazione per
esprimere il test.
Quindi vedresti ancora che l'utente descriva un int e
prima di ognuno che hai visto con i test unitari.
Tranne che ora, stiamo per sfruttare il supporto del goniometro per
essere in grado di generare reali interazioni simili all'utente con la nostra
applicazione usando il codice.
Quindi questo è ciò che impareremo nell'esercizio che segue questa particolare
lezione.
Faremo uso di Goniometro e scriveremo le nostre strategie di test end-to-end.
E, naturalmente, sfruttare il supporto Angular CLI per
eseguire test end-to-end nell'esercizio che segue questa lezione.
[ MUSIC]