Best practice nell'automazione dei test della pipeline di dati

Best practice nell'automazione dei test della pipeline di dati

Nodo di origine: 2035833

I processi di integrazione dei dati traggono vantaggio dai test automatizzati proprio come qualsiasi altro software. Tuttavia, è raro trovare un progetto di pipeline di dati con un set adeguato di test automatizzati. Anche quando un progetto ha molti test, spesso non sono strutturati, non comunicano il loro scopo e sono difficili da eseguire.

Una caratteristica di pipeline di dati sviluppo è il rilascio frequente di dati di alta qualità per ottenere feedback e accettazione da parte degli utenti. Alla fine di ogni iterazione della pipeline di dati, è previsto che i dati siano di alta qualità per la fase successiva. 

Il test automatizzato è essenziale per il test di integrazione delle pipeline di dati. Il test manuale non è pratico in ambienti di sviluppo altamente iterativi e adattivi.

Problemi principali con il test manuale dei dati

In primo luogo, richiede troppo tempo ed è un inibitore critico per la consegna frequente delle condutture. I team che si affidano principalmente ai test manuali finiscono per posticipare i test a periodi di test dedicati, consentendo l'accumulo di bug. 

In secondo luogo, il test manuale della pipeline di dati non è sufficientemente riproducibile per il test di regressione. 

L'automazione dei test della pipeline di dati richiede una pianificazione iniziale e una diligenza continua, ma una volta che i team tecnici adottano l'automazione, il successo del progetto è più sicuro.

Varianti di pipeline di dati

  • Estrai, trasforma e carica (ETL)
  • Estrai, carica e trasforma (ELT)
  • Data lake, pipeline di data warehouse
  • Pipeline in tempo reale
  • Pipeline di apprendimento automatico

Componenti della pipeline di dati per considerazioni sull'automazione dei test

Le pipeline di dati sono costituite da diversi componenti, ciascuno responsabile di un'attività specifica. Gli elementi di una pipeline di dati includono:

  • Origine dei dati: L'origine dei dati
  • Ingestione di dati: Il processo di raccolta dei dati dall'origine dati
  • Trasformazione dei dati: Il processo di trasformazione dei dati raccolti in un formato che può essere utilizzato per ulteriori analisi
  • Verifiche/convalide dei dati: Il processo per garantire che i dati siano accurati e coerenti
  • Archivio dati: Il processo di archiviazione dei dati trasformati e convalidati in un data warehouse o data lake
  • Analisi dei dati: Il processo di analisi dei dati archiviati per identificare modelli, tendenze e approfondimenti

Best practice per l'automazione dei test della pipeline di dati

Cosa e quando automatizzare (o anche se hai bisogno di automazione) sono decisioni cruciali per il team di test (o sviluppo). La selezione delle caratteristiche del prodotto adatte per l'automazione determina in gran parte il successo dell'automazione. 

Quando si automatizzano i test per una pipeline di dati, le best practice includono:

  • Definire obiettivi di test chiari e specifici: Prima di iniziare i test, è essenziale definire cosa si desidera ottenere attraverso i test. Ciò ti aiuterà a creare test efficaci ed efficienti che forniscono preziose informazioni.
  • Testa tutti i flussi di lavoro della pipeline di dati: Una pipeline di dati in genere è costituita da diversi componenti: acquisizione, elaborazione, trasformazione e archiviazione dei dati. È importante testare ogni componente per garantire il flusso corretto e regolare dei dati attraverso la pipeline.
  • Usa dati di test credibili: Quando si testa una pipeline di dati, è importante usare dati realistici che imitano scenari del mondo reale. Ciò consentirà di identificare eventuali problemi che possono verificarsi durante la gestione di diversi tipi di dati.
  • Automatizzare con strumenti efficaci: Ciò può essere ottenuto utilizzando framework e strumenti di test.
  • Monitorare regolarmente la pipeline: Anche dopo il completamento dei test, è essenziale monitorare regolarmente la pipeline per assicurarsi che funzioni come previsto. Questo aiuterà a identificare i problemi prima che diventino problemi critici.
  • Coinvolgi gli stakeholder: Coinvolgi le parti interessate come analisti di dati, ingegneri di dati e utenti aziendali nel processo di test. Ciò contribuirà a garantire che i test siano pertinenti e preziosi per tutte le parti interessate.
  • Mantenere la documentazione: È importante conservare i documenti che descrivono i test, i casi di test ei risultati dei test. Ciò contribuirà a garantire che i test possano essere replicati e mantenuti nel tempo.

Stai attento; l'automazione della modifica di funzionalità instabili dovrebbe essere evitata. Oggi nessuno strumento di business noto o insieme di metodi/processi può essere considerato un test end-to-end completo della pipeline di dati. 

Considera i tuoi obiettivi di automazione dei test

L'automazione del test della pipeline di dati è descritta come l'utilizzo di strumenti per controllare 1) l'esecuzione del test, 2) confronto dei risultati effettivi con i risultati previsti e 3) impostazione delle precondizioni del test e altre funzioni di controllo del test e di reporting del test. 

In genere, l'automazione dei test comporta l'automazione di un processo manuale esistente che utilizza un processo di test formale.

Sebbene i test manuali della pipeline di dati possano rivelare molti difetti dei dati, sono laboriosi e richiedono tempo. Inoltre, i test manuali potrebbero non essere efficaci nel rilevare determinati difetti. 

L'automazione della pipeline di dati comporta lo sviluppo di programmi di test che altrimenti dovrebbero essere eseguiti manualmente. Una volta automatizzati, i test possono essere ripetuti rapidamente. Questo è spesso il metodo più conveniente per una pipeline di dati che può avere una lunga durata. Anche correzioni o miglioramenti minori nel corso della durata della pipeline possono causare l'interruzione delle funzionalità che funzionavano in precedenza.

L'integrazione dei test automatizzati nello sviluppo della pipeline di dati presenta una serie unica di sfide. Gli attuali strumenti di test di sviluppo software automatizzati non sono facilmente adattabili ai progetti di database e pipeline di dati. 

L'ampia varietà di architetture di pipeline di dati complica ulteriormente queste sfide perché coinvolgono più database che richiedono una codifica speciale per l'estrazione dei dati, le trasformazioni, il caricamento, pulizia dei dati, aggregazioni di dati e arricchimento dei dati.

Gli strumenti di automazione dei test possono essere costosi e vengono solitamente utilizzati insieme ai test manuali. Tuttavia, possono diventare convenienti nel lungo periodo, specialmente se usati ripetutamente nei test di regressione.

Candidati frequenti per l'automazione dei test   

  • Test dei rapporti BI 
  • Affari, conformità del governo
  • Elaborazione dell'aggregazione dei dati
  • Pulizia e archiviazione dei dati
  • Test di qualità dei dati
  • Riconciliazione dei dati (ad esempio, dalla sorgente al target)
  • Trasformazioni di dati
  • Caricamento dei dati della tabella delle dimensioni
  • Test end-to-end
  • ETL, ELT test di validazione e verifica
  • Caricamento dei dati della tabella dei fatti 
  • Verifica caricamento file/dati
  • Test di carico incrementale
  • Test di carico e scalabilità
  • File, record, campi mancanti
  • Test delle prestazioni 
  • Integrità referenziale
  • Test di regressione
  • Test di sicurezza
  • Test e profilazione dei dati di origine
  • Messa in scena, convalida dei dati ODS 
  • Test di unità, integrazione e regressione

L'automazione di questi test può essere necessaria a causa della complessità dell'elaborazione e del numero di origini e obiettivi da verificare. 

Per la maggior parte dei progetti, i processi di test della pipeline di dati sono progettati per verificare e implementare la qualità dei dati.

La varietà di tipi di dati disponibili oggi presenta sfide di test

Oggi è disponibile un'ampia varietà di tipi di dati, che vanno dai tradizionali tipi di dati strutturati come testo, numeri e date a tipi di dati non strutturati come audio, immagini e video. Inoltre, vari tipi di dati semi-strutturati, come XML e JSON, sono ampiamente utilizzati nello sviluppo web e nello scambio di dati.

Con l'avvento dell'Internet of Things (IoT), c'è stata un'esplosione di vari tipi di dati, inclusi i dati dei sensori, i dati sulla posizione e i dati di comunicazione da macchina a macchina. Poiché questi tipi di dati vengono estratti e trasformati, i test possono diventare più complicati senza strumenti appropriati. Ciò ha portato a nuove tecnologie di gestione dei dati e tecniche analitiche come l'elaborazione del flusso, l'edge computing e l'analisi in tempo reale.

La Figura 1 mostra esempi di tipi di dati ampiamente utilizzati oggi. Il vasto numero rappresenta una sfida quando si verifica se le trasformazioni richieste vengono eseguite correttamente. Di conseguenza, i professionisti dei dati devono essere esperti in un'ampia gamma di tipi di dati ed essere adattabili per testare le tendenze e le tecnologie emergenti.

Figura 1: esempi della varietà di origini dati e destinazioni dati

Valutare i componenti della pipeline per possibili test automatizzati

Un elemento chiave degli sviluppi agili e di altri moderni è il test automatizzato. Possiamo applicare questa consapevolezza alla pipeline di dati.

Un aspetto essenziale del test della pipeline di dati è che il numero di test eseguiti continuerà ad aumentare per verificare funzionalità aggiuntive e manutenzione. figura 2 Mostra molte aree in cui è possibile applicare l'automazione dei test in una pipeline di dati.

Figura 2: test dei "punti critici" dall'inizio alla fine di una pipeline di dati

Quando si implementa l'automazione dei test, i dati possono essere tracciati dai livelli di origine, attraverso l'elaborazione della pipeline di dati, ai carichi nella pipeline di dati, quindi infine alle applicazioni o ai report front-end. Supponiamo che i dati corrotti vengano trovati in un'applicazione o in un report front-end. In tal caso, l'esecuzione di suite automatizzate può aiutare a determinare più rapidamente se i singoli problemi si trovano nelle origini dati, in un processo di pipeline di dati, in un database/data mart di pipeline di dati appena caricato o in report di business intelligence/analytics.

L'enfasi sulla rapida identificazione dei dati e dei problemi di prestazioni nelle complesse architetture di pipeline di dati fornisce uno strumento chiave per promuovere l'efficienza dello sviluppo, accorciare i cicli di compilazione e soddisfare gli obiettivi dei criteri di rilascio.

Decidi le categorie di test da automatizzare

Il trucco sta nel determinare cosa dovrebbe essere automatizzato e come gestire ogni attività. Una serie di domande dovrebbe essere considerata quando si automatizzano i test, come ad esempio:

  • Quanto costa automatizzare i test?
  • Chi è responsabile dell'automazione dei test (ad es. Dev., QA, data engineer)?
  • Quali strumenti di test devono essere utilizzati (ad es. open source, fornitore)?
  • Gli strumenti scelti soddisferanno tutte le aspettative?
  • Come verranno riportati i risultati del test?
  • Chi interpreta i risultati del test?
  • Come verranno mantenuti gli script di test?
  • Come organizzeremo gli script per un accesso facile e accurato? 

La Figura 3 mostra esempi di durata (per l'esecuzione del test, l'identificazione dei difetti e la segnalazione) per casi di test manuali e automatizzati da un'esperienza di progetto reale.

Figura 3: Confronto delle durate di esecuzione dei test manuali e automatizzati.

Il test automatizzato della pipeline di dati mira a coprire le funzioni più critiche per il caricamento di una pipeline di dati: sincronizzazione e riconciliazione dei dati di origine e di destinazione.

Vantaggi e limiti dei test automatizzati

 Sfide dell'automazione dei test

  • Rapporto di prova: Test di business intelligence o report analitici attraverso l'automazione
  • Complessità dei dati: Il test della pipeline di dati comporta spesso strutture di dati complesse e trasformazioni che possono essere difficili da automatizzare e richiedono competenze specializzate.
  • Complessità della pipeline: Le pipeline di dati possono essere complesse e possono comportare più fasi di elaborazione, che possono essere difficili da testare ed eseguire il debug. Inoltre, le modifiche a una parte della pipeline possono avere conseguenze impreviste a valle.

Vantaggi dell'automazione dei test

  • Esegue i casi di test più velocemente: L'automazione può accelerare l'implementazione degli scenari di test.
  • Crea una suite di test riutilizzabile: Una volta eseguiti gli script di test con gli strumenti di automazione, è possibile eseguirne il backup per un facile richiamo e riutilizzo.
  • Facilita la segnalazione dei test: Una caratteristica interessante di molti strumenti automatizzati è la loro capacità di produrre report e file di test. Queste funzionalità rappresentano accuratamente lo stato dei dati, identificano chiaramente le carenze e vengono utilizzate negli audit di conformità. 
  • Riduce i costi di personale e rilavorazione: Il tempo dedicato ai test manuali o ai test ripetuti dopo la correzione dei difetti può essere speso per altre iniziative all'interno del reparto IT.

Potenziali limitazioni

  • Non può sostituire completamente il test manuale: Sebbene l'automazione possa essere utilizzata per varie applicazioni e casi di test, non può sostituire completamente il test manuale. Continueranno a esistere casi di test complessi in cui l'automazione non acquisirà tutto e, per i test di accettazione degli utenti, gli utenti finali spesso devono eseguire i test manualmente. Pertanto, è fondamentale disporre della giusta combinazione di test automatizzati e manuali nel processo. 
  • Costo degli strumenti: Gli strumenti di test commerciali possono essere costosi, a seconda delle loro dimensioni e funzionalità. In apparenza, un'azienda potrebbe considerarlo un costo inutile. Tuttavia, il solo riutilizzo può renderlo rapidamente una risorsa. 
  • Costo della formazione: I tester dovrebbero essere formati non solo nella programmazione ma anche nella programmazione dei test automatizzati. Gli strumenti automatizzati possono essere complicati da utilizzare e potrebbero richiedere una formazione degli utenti.
  • L'automazione richiede pianificazione, preparazione e risorse dedicate: Il successo dei test automatizzati dipende principalmente da precisi requisiti di test e dall'attento sviluppo dei casi di test prima dell'inizio dei test. Sfortunatamente, lo sviluppo di casi di test è ancora principalmente un processo manuale. Poiché ogni organizzazione e applicazione di pipeline di dati può essere univoca, molti strumenti di test automatizzati non creeranno casi di test.

Introduzione all'automazione dei test della pipeline di dati

Non tutti i test della pipeline di dati sono adatti per l'automazione. Valuta le situazioni di cui sopra per determinare quali tipi di automazione andrebbero a vantaggio del tuo processo di test e quanto è necessario. Valuta i tuoi requisiti di test e identifica i guadagni di efficienza che possono essere raggiunti attraverso i test automatizzati. I team della pipeline di dati che dedicano molto tempo ai test di regressione ne beneficeranno maggiormente. 

Sviluppa un business case per i test automatizzati. L'IT deve prima fare il caso per trasmettere il valore all'azienda. 

Valuta le opzioni. Dopo aver valutato lo stato e i requisiti attuali all'interno del reparto IT, determinare quali strumenti sono allineati con i processi e gli ambienti di test dell'organizzazione. Le opzioni possono includere fornitori, open source, interni o una combinazione di strumenti. 

Conclusioni

Poiché l'automazione dei test è rapidamente diventata un'alternativa essenziale ai test manuali, sempre più aziende sono alla ricerca di strumenti e strategie per implementare con successo l'automazione. Ciò ha portato a una crescita significativa degli strumenti di automazione dei test basati su Appium, Selenium, Katalon Studio e molti altri. Tuttavia, la pipeline di dati e gli ingegneri dei dati, la BI e i team di garanzia della qualità devono avere le giuste competenze di programmazione per utilizzare completamente questi strumenti di automazione. 

Molti esperti IT hanno previsto che il divario di conoscenza tra tester e sviluppatori deve e sarà ridotto continuamente. Gli strumenti di test della pipeline di dati automatizzati possono ridurre significativamente il tempo impiegato per testare il codice rispetto ai metodi manuali convenzionali.

Man mano che le capacità di sviluppo della pipeline di dati continuano ad aumentare, aumenta anche la necessità di test dei dati automatizzati più completi e moderni.

Timestamp:

Di più da VERSITÀ DEI DATI