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.
Infrastructure as (real) Code – Manage your K8s resources with Pulumi
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
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. 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. 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. 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. 6 / 23
QS in Big
Data Entw.
FitNesse &
der Elefant
Test-Daten-
Definition
Job & Workflow
Kontrolle
Inspektion
Ergebnisse
Der Weg zur Big Data QS
7. 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. 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!
10. 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. 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. 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. 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
QS in Big
Data Entw.
FitNesse &
der Elefant
Test-Daten-
Definition
Job & Workflow
Kontrolle
Inspektion
Ergebnisse
Der Weg zur Big Data QS