ETL - Projekte sind Projekte, die mit einem ETL - Tool (Extract - Transform - Load) wie SSIS, PowerCenter usw. Erstellt wurden
Dazu gehören normalerweise das Lesen von Daten aus einer externen Quelle, das Laden in eine Staging-Datenbank, das Durchführen bestimmter Transformationen und das Laden in eine endgültige Datenbank
Ein einfaches Beispiel wäre die Verwendung von SSIS, um von Schullehrern mit SSIS bereitgestellte Excel-Dateien zu lesen und in eine Datenbank zu laden. Schreiben Sie dann gespeicherte Prozeduren oder mehrere SSIS-Pakete, um die Noten jedes Schülers zu berechnen und diese Daten in ein Data Mart \ Warehouse zu laden
Anschließend erstellen Sie gespeicherte Prozeduren auf dem Mart, um eine Ausgabe zu generieren, die von Berichtstools (SSRS \ Excel \ etc) zum Generieren von Visualisierungen verwendet wird.
Ich versuche zu verstehen, wie TDD und ordnungsgemäße Komponententests in diesem Szenario durchgeführt werden. Bei ETL-Tests geht es hauptsächlich darum, sicherzustellen, dass die in die Staging-Tabellen geladenen Daten der richtigen Teilmenge der Daten aus der Quelle entsprechen. Wenn Sie also einen Test dafür implementieren, wird eine Mini-Version der ETL implementiert. Die Ausgabe der Bericht-SPs hängt von den Daten in den Tabellen selbst ab. Ohne einen Wartungs-Alptraum kann man also keinen stabilen Satz von Ausgabedaten haben, selbst wenn Sie eine Datenbank erstellen, die bereinigte Testdaten enthält
Beispiel:
Sprint 1: Die Schülertabelle enthält Name, Alter und Note
Sie erstellen Testdaten für diese Tabelle und darauf aufbauend Unit-Tests
Sprint 2: Ein Geschlechtsfeld wird zur Tabelle hinzugefügt.
Wenn Sie jetzt die Daten im Schülerfeld aktualisieren, um das Attribut gender zu füllen, werden die Testfälle ungültig, da sich die Daten geändert haben. Und wenn Sie dies nicht tun, können Sie keine Testfälle erstellen, für die die Geschlechterspalte erforderlich ist
quelle
Antworten:
Was ich in der Vergangenheit getan habe, ist die Verwendung von Acceptance Test Driven Development . ETL-Code wird häufig über verschiedene Phasen / Sprachen und Technologien verteilt UND ist eng miteinander verbunden. Die meisten ETL-Prozesse hängen von der Reihenfolge der Transformationen in der Pipeline ab.
Das Risiko bei der Verwendung von Unit-Tests nur in ETL besteht darin, dass die Integrationen nicht abgedeckt werden. Die Reihenfolge der Transformationen entspricht in vielen ETLs der tatsächlichen Transformation. Wenn ich Ressourcen für die Erstellung einer automatisierten Testsuite aufwenden würde, würde ich sicherstellen, dass diese auch die Sequenzierung abdeckt.
Ich würde mich für jede einzelne Transformationssequenz auf TDD konzentrieren oder diese Tests zumindest in eine größere Testsuite aufnehmen. Wenn es zu viele Kombinationen gibt, müssen Sie möglicherweise auswählen, welche Sequenzen getestet werden sollen. Die Idee ist, die ETL-Pipeline für die Datensätze zu validieren, auf denen sie verwendet werden soll. Stellen Sie außerdem sicher, dass Sie Testabdeckung für Ihren gesamten Code haben.
quelle
ETL kann mit TDD durchgeführt und ähnlich wie die meisten Projekte getestet werden, d. H
schreibe einen Test, der fehlschlägt (rot) behebe den Fehler (grün) mache die Code-Perforation & wartbar (refactor)
Für ETL könnte das also sein:
quelle