Beste praksis for testautomatisering av datarørledninger

Beste praksis for testautomatisering av datarørledninger

Kilde node: 2035833

Dataintegrasjonsprosesser drar nytte av automatisert testing akkurat som all annen programvare. Likevel er det sjelden å finne et datapipeline-prosjekt med et passende sett med automatiserte tester. Selv når et prosjekt har mange tester, er de ofte ustrukturerte, kommuniserer ikke formålet og er vanskelige å kjøre.

Et kjennetegn ved datapipeline utvikling er den hyppige utgivelsen av data av høy kvalitet for å få tilbakemeldinger og aksept fra brukerne. På slutten av hver datapipeline-iterasjon forventes det at dataene er av høy kvalitet for neste fase. 

Automatisert testing er avgjørende for integrasjonstesting av datarørledninger. Manuell testing er upraktisk i svært iterative og adaptive utviklingsmiljøer.

Primære problemer med manuell datatesting

For det første tar det for lang tid og er en kritisk hemmer for hyppig levering av rørledninger. Team som hovedsakelig er avhengige av manuell testing ender opp med å utsette testing til dedikerte testperioder, slik at feil kan akkumuleres. 

For det andre er manuell datapipeline-testing utilstrekkelig reproduserbar for regresjonstesting. 

Automatisering av datapipeline-testene krever innledende planlegging og kontinuerlig flid, men når de tekniske teamene tar i bruk automatisering, er prosjektets suksess mer sikret.

Varianter av datarørledninger

  • Trekk ut, transformer og last (ETL)
  • Ekstraher, last inn og transformer (ELT)
  • Datainnsjø, datavarehusrørledninger
  • Sanntidsrørledninger
  • Maskinlæringspipelines

Datarørledningskomponenter for testautomatisering

Datapipelines består av flere komponenter, hver ansvarlig for en spesifikk oppgave. Elementene i en datapipeline inkluderer:

  • Datakilder: Opprinnelsen til dataene
  • Datainntak: Prosessen med å samle inn data fra datakilden
  • Datatransformasjon: Prosessen med å transformere de innsamlede dataene til et format som kan brukes til videre analyse
  • Databekreftelser/valideringer: Prosessen for å sikre at dataene er nøyaktige og konsistente
  • Datalagring: Prosessen med å lagre de transformerte og validerte dataene i et datavarehus eller datainnsjø
  • Dataanalyse: Prosessen med å analysere de lagrede dataene for å identifisere mønstre, trender og innsikt

Beste praksis for automatisering av datapipelinetesting

Hva og når du skal automatisere (eller selv om du trenger automatisering) er avgjørende beslutninger for test- (eller utviklings-) teamet. Valget av passende produktegenskaper for automatisering avgjør i stor grad suksessen til automatisering. 

Når du automatiserer tester for en datapipeline, inkluderer beste praksis:

  • Definer klare og spesifikke testmål: Før du begynner å teste, er det viktig å definere hva du ønsker å oppnå gjennom testing. Å gjøre det vil hjelpe deg med å lage effektive, effektive tester som gir verdifull innsikt.
  • Test alle arbeidsflyter i datapipelinen: En datapipeline består vanligvis av flere komponenter: datainntak, prosessering, transformasjon og lagring. Det er viktig å teste hver komponent for å sikre riktig og jevn flyt av data gjennom rørledningen.
  • Bruk troverdige testdata: Når du tester en datapipeline, er det viktig å bruke realistiske data som etterligner virkelige scenarier. Dette vil bidra til å identifisere eventuelle problemer som kan oppstå ved håndtering av ulike datatyper.
  • Automatiser med effektive verktøy: Dette kan oppnås ved hjelp av testrammeverk og verktøy.
  • Overvåk rørledningen regelmessig: Selv etter at testingen er fullført, er det viktig å overvåke rørledningen regelmessig for å sikre at den fungerer etter hensikten. Dette vil bidra til å identifisere problemer før de blir kritiske problemer.
  • Engasjere interessenter: Involver interessenter som dataanalytikere, dataingeniører og forretningsbrukere i testprosessen. Dette vil bidra til å sikre at testene er relevante og verdifulle for alle interessenter.
  • Ta vare på dokumentasjonen: Det er viktig å vedlikeholde dokumenter som beskriver testene, testtilfellene og testresultatene. Dette vil bidra til å sikre at testene kan replikeres og vedlikeholdes over tid.

Vær forsiktig; automatisering av endring av ustabile funksjoner bør unngås. I dag kan ingen kjente forretningsverktøy eller sett med metoder/prosesser betraktes som en komplett ende-til-ende-test av datapipeline. 

Vurder dine testautomatiseringsmål

Datapipeline testautomatisering er beskrevet som å bruke verktøy for å kontrollere 1) testutførelse, 2) sammenligninger av faktiske utfall med predikerte utfall, og 3) oppsett av testforutsetninger og andre testkontroll- og testrapporteringsfunksjoner. 

Generelt innebærer testautomatisering automatisering av en eksisterende manuell prosess som bruker en formell testprosess.

Selv om manuelle datapipeline-tester kan avsløre mange datafeil, er de arbeidskrevende og tidkrevende. I tillegg kan manuell testing være ineffektiv for å oppdage visse defekter. 

Datapipeline-automatisering innebærer å utvikle testprogrammer som ellers måtte utføres manuelt. Når testene er automatiserte, kan de raskt gjentas. Dette er ofte den mest kostnadseffektive metoden for en datapipeline som kan ha lang levetid. Selv mindre reparasjoner eller forbedringer i løpet av levetiden til rørledningen kan føre til at funksjoner som fungerte tidligere går i stykker.

Integrering av automatisert testing i utvikling av datapipeline byr på et unikt sett med utfordringer. Nåværende testverktøy for automatisert programvareutvikling er ikke lett å tilpasse til database- og datapipeline-prosjekter. 

Det store utvalget av datapipeline-arkitekturer kompliserer disse utfordringene ytterligere fordi de involverer flere databaser som krever spesiell koding for datautvinning, transformasjoner, lasting, data rensing, dataaggregering og databerikelse.

Testautomatiseringsverktøy kan være dyre og brukes vanligvis sammen med manuell testing. Imidlertid kan de bli kostnadseffektive i det lange løp, spesielt når de brukes gjentatte ganger i regresjonstester.

Hyppige kandidater for testautomatisering   

  • BI rapporttesting 
  • Business, myndighetsoverholdelse
  • Behandling av dataaggregering
  • Datarensing og arkivering
  • Datakvalitetstester
  • Dataavstemming (f.eks. kilde til mål)
  • Datatransformasjoner
  • Dimensjonstabelldata lastes inn
  • End-to-end testing
  • ETL, ELT validering og verifikasjonstesting
  • Faktatabelldata lastes inn 
  • Verifisering av fil-/datainnlasting
  • Inkrementell belastningstesting
  • Last og skalerbarhetstesting
  • Manglende filer, poster, felt
  • Ytelsestesting 
  • Referanseintegritet
  • Regresjonstesting
  • Sikkerhetstesting
  • Kildedatatesting og profilering
  • Staging, ODS-datavalideringer 
  • Enhets-, integrasjons- og regresjonstesting

Automatisering av disse testene kan være nødvendig på grunn av kompleksiteten i behandlingen og antallet kilder og mål som bør verifiseres. 

For de fleste prosjekter er testprosesser for datapipeline designet for å verifisere og implementere datakvalitet.

Variasjonen av datatyper som er tilgjengelige i dag byr på testutfordringer

Det er et bredt utvalg av datatyper tilgjengelig i dag, alt fra tradisjonelle strukturerte datatyper som tekst, tall og datoer til ustrukturerte datatyper som lyd, bilder og video. I tillegg er ulike typer semi-strukturerte data, som XML og JSON, mye brukt i webutvikling og datautveksling.

Med ankomsten av tingenes internett (IoT) har det vært en eksplosjon i ulike datatyper, inkludert sensordata, plasseringsdata og maskin-til-maskin kommunikasjonsdata. Ettersom disse datatypene trekkes ut og transformeres, kan testing bli mer komplisert uten passende verktøy. Dette har ført til nye databehandlingsteknologier og analytiske teknikker som strømbehandling, edge computing og sanntidsanalyse.

Figur 1 viser eksempler på datatyper som er mye brukt i dag. Det store antallet representerer utfordringer når man skal teste om nødvendige transformasjoner er riktig utført. Som et resultat må datafagfolk være godt kjent med et bredt spekter av datatyper og være tilpasningsdyktige til å teste nye trender og teknologier.

Figur 1: Eksempler på mangfoldet av datakilder og datamål

Evaluer rørledningskomponenter for mulig automatisert testing

Et sentralt element i smidig og annen moderne utvikling er automatisert testing. Vi kan bruke denne bevisstheten på datarørledningen.

Et viktig aspekt ved datapipeline-testing er at antallet tester som utføres vil fortsette å øke for å sjekke ekstra funksjonalitet og vedlikehold. Figur 2 viser mange områder hvor testautomatisering kan brukes i en datapipeline.

Figur 2: Testing av "hot spots" fra begynnelsen til slutten av en datapipeline

Når du implementerer testautomatisering, kan data spores fra kildelag, gjennom datapipelinebehandling, til belastninger i datapipelinen, så til slutt til front-end-applikasjonene eller rapportene. Anta at korrupte data blir funnet i en front-end-applikasjon eller rapport. I så fall kan utførelse av automatiserte suiter bidra til raskere å avgjøre om individuelle problemer er lokalisert i datakilder, en datapipelineprosess, en nylig lastet datapipelinedatabase/datamart eller business intelligence/analytics-rapporter.

En vektlegging av rask identifisering av data- og ytelsesproblemer i komplekse datapipeline-arkitekturer gir et nøkkelverktøy for å fremme utviklingseffektivitet, forkorte byggesykluser og oppfylle mål for utgivelseskriterier.

Bestem kategorier av tester som skal automatiseres

Trikset er å bestemme hva som skal automatiseres og hvordan hver oppgave skal håndteres. Et sett med spørsmål bør vurderes når du automatiserer tester, for eksempel:

  • Hva koster det å automatisere testene?
  • Hvem er ansvarlig for testautomatisering (f.eks. Dev., QA, dataingeniører)?
  • Hvilke testverktøy bør brukes (f.eks. åpen kildekode, leverandør)?
  • Vil de valgte verktøyene oppfylle alle forventninger?
  • Hvordan vil testresultatene bli rapportert?
  • Hvem tolker testresultatene?
  • Hvordan vil testskriptene vedlikeholdes?
  • Hvordan vil vi organisere skriptene for enkel og nøyaktig tilgang? 

Figur 3 viser eksempler på tidsvarigheter (for testutførelse, defektidentifikasjoner og rapportering) for manuelle kontra automatiserte testtilfeller fra en faktisk prosjekterfaring.

Figur 3: Sammenligning av manuell og automatisert testkjøringsvarighet.

Automatisert datapipeline-testing tar sikte på å dekke de mest kritiske funksjonene for å laste en datapipeline - synkronisering og avstemming av kilde- og måldata.

Fordeler og begrensninger ved automatisert testing

 Test automatiseringsutfordringer

  • Rapporttesting: Testing av forretningsintelligens eller analytiske rapporter gjennom automatisering
  • Datakompleksitet: Datapipeline-testing involverer ofte komplekse datastrukturer og transformasjoner som kan være utfordrende å automatisere og krever spesialkompetanse.
  • Pipeline kompleksitet: Datapipelines kan være komplekse og kan involvere flere behandlingstrinn, noe som kan være utfordrende å teste og feilsøke. I tillegg kan endringer i en del av rørledningen få utilsiktede konsekvenser nedstrøms.

Test automatiseringsfordeler

  • Utfører testsaker raskere: Automatisering kan fremskynde implementeringen av testscenarier.
  • Oppretter en gjenbrukbar testpakke: Når testskriptene er kjørt med automatiseringsverktøyene, kan de sikkerhetskopieres for enkel tilbakekalling og gjenbruk.
  • Forenkler testrapportering: En interessant funksjon ved mange automatiserte verktøy er deres evne til å produsere rapporter og testfiler. Disse egenskapene representerer nøyaktig datastatus, identifiserer tydelig mangler og brukes i samsvarsrevisjoner. 
  • Reduserer bemannings- og omarbeidskostnader: Tid brukt på manuell testing eller retesting etter utbedring av feil kan brukes på andre tiltak innen IT-avdelingen.

Potensielle begrensninger

  • Kan ikke erstatte manuell testing fullstendig: Selv om automatisering kan brukes til ulike applikasjoner og testtilfeller, den kan ikke erstatte manuell testing fullstendig. Intrikate testtilfeller vil fortsatt eksistere der automatisering ikke vil fange opp alt, og for brukeraksepttesting må sluttbrukere ofte utføre tester manuelt. Derfor er det viktig å ha den riktige kombinasjonen av automatisert og manuell testing i prosessen. 
  • Kostnader for verktøy: Kommersielle testverktøy kan være dyre, avhengig av størrelse og funksjonalitet. På overflaten kan en bedrift se på dette som en unødvendig kostnad. Men gjenbruk alene kan raskt gjøre det til en ressurs. 
  • Kostnader for trening: Testere bør trenes ikke bare i programmering, men også i å planlegge automatiserte tester. Automatiserte verktøy kan være kompliserte å bruke og kan trenge brukeropplæring.
  • Automatisering trenger planlegging, forberedelse og dedikerte ressurser: Suksessen til automatisert testing er hovedsakelig avhengig av nøyaktige testkrav og nøye utvikling av testtilfeller før testing starter. Dessverre er testcaseutvikling fortsatt først og fremst en manuell prosess. Fordi hver organisasjon og datapipeline-applikasjon kan være unik, vil mange automatiserte testverktøy ikke lage testcases.

Komme i gang med Data Pipeline Test Automation

Ikke alle datapipeline-tester er egnet for automatisering. Vurder de ovennevnte situasjonene for å finne ut hvilke typer automatisering som vil være til nytte for testprosessen og hvor mye som trengs. Evaluer testkravene dine og identifiser effektivitetsgevinster som kan oppnås gjennom automatisert testing. Datapipeline-team som bruker mye tid på regresjonstesting vil ha størst fordel. 

Utvikle en business case for automatisert testing. IT må først gjøre saken for å formidle verdien til virksomheten. 

Vurder alternativene. Etter å ha vurdert gjeldende tilstand og krav i IT-avdelingen, avgjør hvilke verktøy som stemmer overens med organisasjonens testprosesser og miljøer. Alternativer kan inkludere leverandører, åpen kildekode, interne eller en blanding av verktøy. 

Konklusjoner

Ettersom testautomatisering raskt har blitt et viktig alternativ til manuell testing, ser flere og flere virksomheter etter verktøy og strategier for å lykkes med å implementere automatisering. Dette har ført til en betydelig vekst av testautomatiseringsverktøy basert på Appium, Selenium, Katalon Studio og mange andre. Imidlertid må datapipeline og dataingeniører, BI og kvalitetssikringsteam ha de riktige programmeringsferdighetene for å bruke disse automatiseringsverktøyene fullt ut. 

Mange IT-eksperter har spådd at kunnskapsgapet mellom testere og utviklere må og vil reduseres kontinuerlig. Automatiserte testverktøy for datapipeline kan redusere tiden brukt på å teste kode betydelig sammenlignet med konvensjonelle manuelle metoder.

Ettersom mulighetene for utvikling av datapipeline fortsetter å øke, øker også behovet for mer omfattende og moderne automatisert datatesting.

Tidstempel:

Mer fra DATAVERSITET