bug bites elephant? testgetriebene qs in der big-data-entwicklung
DESCRIPTION
In diesem Vortrag werden Best Practices der qualitätsgetriebenen Entwicklung von Hadoop-Anwendungen zur Log-Analyse bei 1&1 (1 Milliarde Events/Tag) vorgestellt. Mit FitNesse als Kernkomponente beziehen wir verschiedene Beteiligte in die Definition von Akzeptanztests ein, parametrisieren das Deployment von Artefakten/Workflows und verwenden Pig zur Inspektion serialisierter Output-Formate.TRANSCRIPT
Dr. Dominik Benz | Inovex GmbH
Bug bites Elephant?Testgetriebene QS in der Big -Data-Entwicklung
2 / 23
Class A extendsMapper…
ROI, $$, …
apt-getinstall…
FITNESSE
Definition Akzeptanztests� QS-Plattform!
Wer spricht Elefant-isch?
3 / 23
QS in Big Data Entw.
FitNesse & der Elefant
Test-Daten -Definition
Job & WorkflowKontrolle
Inspektion Ergebnisse
Der Weg zur Big Data QS
4 / 23
Big Qualität?Anwendungs-entwicklung
Funktionalität
Ende zu Ende,abgeschlossen
eher homogen
standalone, scale up
Big Data
Datenmengen, -vielfalt
Datenflüsse, viele Quellen
divers
verteilt, scaleout
Test-Schwerpunkt
Test-Paradigma
Beteiligte
Umgebung, Ablauf
QS & Big Data
5 / 23
Bestehende Ansätzetestet Nachteile
JUnit / MRUnit Isolierte Funktionen keine Integrationstests, (Java-) Syntax
iTest (Apache BigTop)
z.B. ganze Hadoop-Jobs Test-Spezifikation in Java / Groovy
Scripts, CLI Workflow-Steuerung, händische Inspektion der Ergebnisse
„komplexe“ Syntax, schwer automatisierbar
���� FitNesse passende Ergänzung / Lösung!
QS & Big Data
6 / 23
QS in Big Data Entw.
FitNesse & der Elefant
Test-Daten -Definition
Job & WorkflowKontrolle
InspektionErgebnisse
Der Weg zur Big Data QS
Fit for Testing!
„fully integrated standalone wiki and acceptance testing framework”
• (automatisch) „ausführbare“ Wiki -Seiten
• (fast) natürlich -sprachliche Testfall-formulierung
• Anbindung an SUT via (Java-)“Fixtures “
FitNesse
8 / 23
Architektur
FitNesse
check | view count | customerA | productB |7
Browser
FitNesseServer
public intviewCount(cust, prod) { …
}
System under Test
Fixtures
� Java-„Methodenaufrufe“ direkt aus dem Wiki!
9 / 23
Test-Ausführung
FitNesse
• Farbe enkodiert PASS / FAIL• Integriert (REST) in Jenkins, CLI, Eclipse, …
10 / 23
Dazugehörige Fixture
FitNesse
public class Ftp extends FTPClient {
public boolean loadProperties ( String propFile ) {…}
public boolean setByProperty ( String field,String prop )
public boolean connect () {…}
public boolean shiftFilesFromDirectory ( String dir ) {…}
}
11 / 23
Best Practice: Infrastruktur
FitNesse
Fitnesse Master
TestEnvironments
ProjA ProjB
TestConfigurations
ProjA ProjB
dev qs live dev qs live
Import / edit
tests remotely
QS ProjA Slave
DevProjA Slave
Live ProjA SlaveProjA
QS ProjA Slave
DevProjA Slave
Live ProjA Slave
Import / edit
config remotely
dev qs live
12 / 23
QS in Big Data Entw.
FitNesse & der Elefant
Test-Daten -Definition
Job & WorkflowKontrolle
Inspektion Ergebnisse
Der Weg zur Big Data QS
13 / 23
CSV-Files
Test-Daten
| Table:Log File || /cust.log.gz | compression=gzip;delimiter=,;encoding=UTF-8 || date | user | product | browser | os || 2013-03-12 | john19 | 19 | ff | win || 2013-03-13 | albert | 17 | ie | win || 2013-03-15 | lisa | 3 | ff | mac |
14 / 23
• Big Data: effizienter (binärer ) Daten-austausch, heterogenes Umfeld
• Interface-Beschreibungssprache (IDL)• Compiler für
viele Sprachen
Thrift-Files
Test-Daten
15 / 23
• (random / biased) Sampling (z.B. Tages-Basis für kleinere Test-Cluster)
• Feedback Loop für manuelle Datenerzeugung (Regressionstest)�Graduelle Erhöhung der Testabdeckung &
Software-Qualität
Reale Daten
Test-Daten
16 / 23
QS in Big Data Entw.
FitNesse & der Elefant
Test-Daten -Definition
Job & WorkflowKontrolle
InspektionErgebnisse
Der Weg zur Big Data QS
17 / 23
FTP / HDFS Zugriff
Jobs
18 / 23
Hadoop-Jobs
Jobs
• Zugriff über CLI• CLI-Output wird mit Testergebnis
gespeichert
19 / 23
QS in Big Data Entw.
FitNesse & der Elefant
Test-Daten -Definition
Job & WorkflowKontrolle
ResultInspection
Der Weg zur Big Data QS
20 / 23
Pig
Ergebnisse
21 / 23
Hive
Ergebnisse
22 / 23
Demo Time!
• Hadoop-VM basierend auf CDH 4.2• FitNesse Server einrichten• CSV-Logfile erzeugen• Auswertung via Hadoop -Job (count
viewed items)• Prüfen der Ergebnisse mit Hive
23 / 23
QS: divers, intuitiv
FitNesse:Test-Wiki, Fixtures
Test-Daten : CSV, Thrift
Jobs : HDFS, HadoopResults:
Pig, Hive
Vielen Dank!