• Non ci sono risultati.

Allo scopo di assicurare un’attività continua di verifica il sistema fa uso di CircleCI: un sistema di build automatizzato ed integrazione continua che consente l’esecuzione di test ad ogni push sul repository del progetto.

Qui di seguito sono riportate le specifiche dei test automatici implementati da me, contrassegnati con un codice univoco.

Tabella 10: Specifica dei test automatici implementati Codice Descrizione

T001 Data una pagina HTML in input, AddressScraper deve rilevare correttamente gli indirizzi geografici riportati.

T002 Nel caso non fosse presente alcuna pagina su cui effettuare lo scraping nell’input, AddressScraper non deve tentare l’estrazione di alcun indirizzo

T003 Nel caso sia presente una chiave atta a contenere i percorsi a file temporanei nell’input, BypasserToLogoStageAdapter deve chiamare lo stadio successivo con i parametri corretti T004 Nel caso non sia presente una chiave atta a contenere i percorsi a file temporanei nell’input,

BypasserToLogoStageAdapter deve chiamare lo stadio successivo con i parametri corretti T005 Data un foglio di stile, CSSLogoScraper deve estrarre il logo inserito come

background-image al suo interno

Codice Descrizione

T006 Dato un foglio stile privo di loghi, CSSLogoScraper non deve trovare alcun logo

T007 CSSLogoScraper deve correttamente chiamare lo stadio successivo nel caso il download del logo fallisca

T008 CSSLogoScraper deve essere in grado di trovare fogli CSS all’interno di documenti HTML e scaricare il logo all’interno di tale CSS

T009 DBSaveStage deve salvare correttamente i dati all’interno del database

T010 EmailScraper deve rilevare solo gli indirizzi email validi all’interno di una pagina HTML contenente indirizzi validi e non

T011 EmailScraper non deve effettuare alcuno scraping nel caso non sia presente alcuna pagina da analizzare

T012 Data una pagina con un Frame HTML, FrameBypasser deve rilevare correttamente l’URL all’interno del frame

T013 Data una pagina priva di Frame HTML, FrameBypasser non deve modificare l’URL dato in input

T014 Nel caso si verifichi un errore di connessione, FrameBypasser non deve richiamare il prossimo stadio della pipeline

T015 Nel caso Google API ritorni un unico risultato, FuzzyGoogleAPIStage deve passare tale risultato al prossimo stadio della pipeline

T016 Nel caso Google API ritorni molteplici risultati, FuzzyGoogleAPIStage deve passare al prossimo stadio quello con ragione sociale più simile a quella passata in input

T017 La funzione get_most_similar_items deve tornare l’oggetto con ragione sociale più simile a quella ricevuta in input

T018 Nel caso vi siano più oggetti con lo stesso grado di similitudine corrispondente al grado di similitudine massimo, la funzione get_most_similar_items deve tornare una lista con tali oggetti

T019 Nel caso FuzzyGoogleAPIStage fosse usato senza essere preceduto da GoogleAPIStage, questo deve comportarsi correttamente e non sollevare alcuna eccezione

T020 Nel caso FuzzyGoogleAPIStage sia preceduto da GoogleAPIStage ed abbia ricevuto un risultato da quest’ultimo, FuzzyGoogleAPIStage non deve intervenire e semplicemente passare il risultato allo stadio successivo

T021 GoogleAPIDetailsStage deve estrarre correttamente i dati dalle risposte di Google Places T022 GoogleAPIStage non deve modificare alcun dato ricevuto in input nel caso Google Places

non ritorni alcun risultato per la ricerca

Codice Descrizione

T023 Nel caso Google Places ritorni un risultato, i dati ricevuti devono essere correttamente ristrutturati per poter essere passati al prossimo stadio

T024 L’interfaccia fluida di GoogleAPIStage deve funzionare correttamente, settando un unico successore

T025 L’interfaccia fluida di GoogleAPIStage deve funzionare correttamente, settando correttamente più nodi successori

T026 ImageSaver deve correttamente salvare un’immagine nel caso questa sia disponibile e ritornare percorso ed estensione del file salvato

T027 ImageSaver deve ritornare None nel caso si verifichi un errore 404 durante lo scaricamento di un’immagine.

T028 ImgAltCompanyNameLogoScraper deve identificare correttamente un’immagine con URL assoluto e campo alt contenente la ragione sociale dell’azienda

T029 ImgAltCompanyNameLogoScraper deve identificare correttamente un’immagine con URL relativo e campo alt contenente la ragione sociale dell’azienda

T030 ImgAltCompanyNameLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina

T031 GetFuzzRatio deve sollevare un’eccezione nel caso uno dei campi da confrontare non sia inizializzato

T032 ImgAltLogoScraper deve rilevare un logo con URL assoluto e campo alt contenente la parola “logo”

T033 ImgAltLogoScraper deve rilevare un logo con URL relativo e campo alt contenente la parola “logo”

T034 ImgAltLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina

T035 ImgClassLogoScraper deve rilevare un logo con URL assoluto e campo class contenente la parola “logo”

T036 ImgClassLogoScraper deve rilevare un logo con URL relativo e campo class contenente la parola “logo”

T037 ImgClassLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina

T038 ImgIdLogoScraper deve rilevare un logo con URL assoluto e campo id contenente la parola

“logo”

T039 ImgIdLogoScraper deve rilevare un logo con URL relativo e campo id contenente la parola

“logo”

Codice Descrizione

T040 ImgIdLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina T041 ImgSrcLogoScraper deve rilevare un logo con URL assoluto e campo src contenente la

parola “logo”

T042 ImgSrcLogoScraper deve rilevare un logo con URL relativo e campo src contenente la parola “logo”

T043 ImgSrcLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina

T044 L’interfaccia fluida di ImgSrcLogoScraper deve funzionare correttamente, settando un unico successore

T045 L’interfaccia fluida di ImgSrcLogoScraper deve funzionare correttamente, settando correttamente più nodi successori

T046 LdJsonLogoScraper deve rilevare un logo con URL assoluto T047 LdJsonLogoScraper deve rilevare un logo con URL relativo

T048 LdJsonLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina T049 LinkIconLogoScraper deve rilevare un logo con URL assoluto all’interno di tag <link

rel='icon' ...>

T050 LinkIconLogoScraper deve rilevare un logo con URL relativo all’interno di tag <link rel='icon' ...>

T051 LinkIconLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina

T052 Il modello di database LandRegisterCache deve registrare correttamente i dati in un’istanza T053 Il modello di database Scrapeddata deve calcolare correttamente il percorso dove salvare gli

screenshot dei siti web

T054 Il modello di database Scrapeddata deve calcolare correttamente il percorso dove salvare le immagini di StreetView

T055 Il modello di database Scrapeddata deve calcolare correttamente il percorso dove salvare i loghi

T056 Il modello di database Scrapeddata deve avere una rappresentazione corretta in forma di stringa

T057 OpenGraphLogoScraper deve rilevare un logo con URL assoluto T058 OpenGraphLogoScraper deve rilevare un logo con URL relativo

T059 OpenGraphLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina

Codice Descrizione

T060 PhoneScraper deve rilevare correttamente dei numeri di telefono all’interno di una pagina web

T061 PhoneScraper deve ritornare una lista vuota nel caso non sia disponibile una pagina web su cui lavorare

T062 PhoneScraper deve ritornare una lista vuota nel caso non vi siano numeri telefonici all’interno della pagina elaborata

T063 RedirectionBypasser deve rilevare correttamente un redirect creato con uno script JavaScript T064 RedirectionBypasser non deve modificare alcun dato nel caso non esista alcun redirect

JavaScript nella pagina

T065 RedirectionBypasser non deve richiamare il prossimo elemento della catena nel caso si verifichi un errore di connessione

T066 RequestBuilder deve sollevare un’eccezione nel caso sia richiesto un formato di risposta non valido

T067 RequestProcessor deve sollevare un’eccezione OverQueryLimit nel caso Google risponda con uno stato “OVER_QUERY_LIMIT”

T068 RequestProcessor deve sollevare un’eccezione RequestDenied nel caso Google risponda con uno stato “REQUEST_DENIED”

T069 RequestProcessor deve sollevare un’eccezione InvalidRequest nel caso Google risponda con uno stato “INVALID_REQUEST”

T070 RequestProcessor deve sollevare un’eccezione ServerError nel caso Google risponda con uno stato “UNKNOWN_ERROR”

T071 RequestProcessor deve risollevare un’eccezione ConnectionError in caso di errore di connessione

T072 RequestProcessor deve risollevare un’eccezione TimeoutError in caso di timeout del server T073 SitemapCrawlerStage deve rilevare una pagina di contatti all’interno di una sitemap unica T074 SitemapCrawlerStage deve rilevare una pagina di contatti all’interno di un albero di sitemap T075 SitemapCrawlerStage non deve tornare alcun indirizzo se non è rilevata alcuna pagina di

contatti

T076 SitemapCrawlerStage non deve tornare alcun indirizzo in caso di errore di connessione T077 SitemapDetectorStage deve rilevare correttamente una sitemap all’interno del file

robots.txt

T078 SitemapDetectorStage deve richiamare correttamente il prossimo stadio nel caso non sia specificata alcuna sitemap in robots.txt

Codice Descrizione

T079 SitemapDetectorStage deve richiamare correttamente il prossimo stadio nel caso non sia presente alcun file robots.txt

T080 SocialScraper deve rilevare correttamente i link ai social media all’interno di una data pagina web

T081 SocialScraper deve ritornare una lista vuota nel caso non vi siano link a social media presenti in una data pagina web

T082 SocialScraper deve ritornare una lista vuota nel caso non vi sia una pagina web definita nell’input

T083 Il Task Django di costruzione della pipeline deve costruire correttamente la pipeline T084 TwitterTagLogoScraper deve rilevare un logo con URL assoluto

T085 TwitterTagLogoScraper deve rilevare un logo con URL relativo

T086 TwitterTagLogoScraper non deve intervenire nel caso non vi siano loghi nella pagina T087 VATScraper deve rilevare i numeri di partita IVA inseriti all’interno di una data pagina T088 WebCrawler: La funzione di rilevamento di una pagina contatti deve rilevare correttamente

gli URL dati

T089 WebCrawler: La funzione di rilevamento di una pagina contatti deve escludere correttamente gli URL dati

T090 WebCrawler: La funzione has_same_domain deve rilevare correttamente se due indirizzi hanno lo stesso dominio

T091 WebCrawler: La funzione has_same_domain deve rilevare correttamente se due indirizzi non hanno lo stesso dominio

T091 WebCrawler: La funzione di scaricamento di una pagina web deve ritornare None nel caso si verifichi un errore di connessione

T092 WebCrawler: La funzione di scaricamento di una pagina web deve ritornare None nel caso si tenti di scaricare un file non testuale

T093 WebCrawler: La funzione di crawling deve rilevare correttamente i link da seguire, definiti all’interno di una data pagina.

A questi si vanno ad aggiungere altri test automatici implementati dal mio collega, per un totale di 125 nuovi test a copertura dell’architettura, con una code coverage del 77%.

Documenti correlati