Dr. Dominik Benz | Inovex GmbH
Bug bites Elephant?
Testgetriebene QS in der Big-Data-Entwicklung
2 / 23
Class A
extends
Mapper…
ROI, $$,
…
apt-get
install…
F
I
T
N
E
S
S
E
Definition Akzeptanztests
QS-Plattform!
Wer spricht Elefant-isch?
3 / 23
QS in Big
Data Entw.
FitNesse &
der Elefant
Test-Daten-
Definition
Job & Workflow
Kontrolle
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, scale
out
Test-Schwerpunkt
Test-Paradigma
Beteiligte
Umgebung, Ablauf
QS & Big Data
5 / 23
Bestehende Ansätze
testet 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 & Workflow
Kontrolle
Inspektion
Ergebnisse
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
FitNesse
Server
public int
viewCount
(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
Dev
ProjA Slave
Live
ProjA SlaveProjA
QS
ProjA Slave
Dev
ProjA 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 & Workflow
Kontrolle
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 & Workflow
Kontrolle
Inspektion
Ergebnisse
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 & Workflow
Kontrolle
Result
Inspection
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!
dominik.benz@inovex.de

Bug bites elephant? Testgetriebene QS in der Big-Data-Entwicklung

  • 1.
    Dr. Dominik Benz| Inovex GmbH Bug bites Elephant? Testgetriebene QS in der Big-Data-Entwicklung
  • 2.
    2 / 23 ClassA extends Mapper… ROI, $$, … apt-get install… F I T N E S S E Definition Akzeptanztests QS-Plattform! Wer spricht Elefant-isch?
  • 3.
    3 / 23 QSin Big Data Entw. FitNesse & der Elefant Test-Daten- Definition Job & Workflow Kontrolle Inspektion Ergebnisse Der Weg zur Big Data QS
  • 4.
    4 / 23 BigQualität? Anwendungs- entwicklung Funktionalität Ende zu Ende, abgeschlossen eher homogen standalone, scale up Big Data Datenmengen, -vielfalt Datenflüsse, viele Quellen divers verteilt, scale out Test-Schwerpunkt Test-Paradigma Beteiligte Umgebung, Ablauf QS & Big Data
  • 5.
    5 / 23 BestehendeAnsätze testet 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.
    6 / 23 QSin Big Data Entw. FitNesse & der Elefant Test-Daten- Definition Job & Workflow Kontrolle Inspektion Ergebnisse Der Weg zur Big Data QS
  • 7.
    Fit for Testing! „fullyintegrated 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.
    8 / 23 Architektur FitNesse check| view count | customerA | productB | 7 Browser FitNesse Server public int viewCount (cust, prod) { … } System under Test Fixtures Java-„Methodenaufrufe“ direkt aus dem Wiki!
  • 9.
    9 / 23 Test-Ausführung FitNesse •Farbe enkodiert PASS / FAIL • Integriert (REST) in Jenkins, CLI, Eclipse, …
  • 10.
    10 / 23 DazugehörigeFixture 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.
    11 / 23 BestPractice: Infrastruktur FitNesse Fitnesse Master TestEnvironments ProjA ProjB TestConfigurations ProjA ProjB dev qs live dev qs live Import / edit tests remotely QS ProjA Slave Dev ProjA Slave Live ProjA SlaveProjA QS ProjA Slave Dev ProjA Slave Live ProjA Slave Import / edit config remotely dev qs live
  • 12.
    12 / 23 QSin Big Data Entw. FitNesse & der Elefant Test-Daten- Definition Job & Workflow Kontrolle Inspektion Ergebnisse Der Weg zur Big Data QS
  • 13.
    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.
    14 / 23 •Big Data: effizienter (binärer) Daten- austausch, heterogenes Umfeld • Interface-Beschreibungssprache (IDL) • Compiler für viele Sprachen Thrift-Files Test-Daten
  • 15.
    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.
    16 / 23 QSin Big Data Entw. FitNesse & der Elefant Test-Daten- Definition Job & Workflow Kontrolle Inspektion Ergebnisse Der Weg zur Big Data QS
  • 17.
    17 / 23 FTP/ HDFS Zugriff Jobs
  • 18.
    18 / 23 Hadoop-Jobs Jobs •Zugriff über CLI • CLI-Output wird mit Testergebnis gespeichert
  • 19.
    19 / 23 QSin Big Data Entw. FitNesse & der Elefant Test-Daten- Definition Job & Workflow Kontrolle Result Inspection Der Weg zur Big Data QS
  • 20.
  • 21.
  • 22.
    22 / 23 DemoTime! • 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 / 23 QS:divers, intuitiv FitNesse: Test-Wiki, Fixtures Test-Daten: CSV, Thrift Jobs: HDFS, HadoopResults: Pig, Hive Vielen Dank! dominik.benz@inovex.de