bug bites elephant? testgetriebene qs in der big-data-entwicklung

23
Dr. Dominik Benz | Inovex GmbH Bug bites Elephant? Testgetriebene QS in der Big-Data-Entwicklung

Upload: inovex-gmbh

Post on 08-Jul-2015

190 views

Category:

Documents


0 download

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

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

Dr. Dominik Benz | Inovex GmbH

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

Page 2: 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?

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

3 / 23

QS in Big Data Entw.

FitNesse & der Elefant

Test-Daten -Definition

Job & WorkflowKontrolle

Inspektion Ergebnisse

Der Weg zur Big Data QS

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

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

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

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

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

6 / 23

QS in Big Data Entw.

FitNesse & der Elefant

Test-Daten -Definition

Job & WorkflowKontrolle

InspektionErgebnisse

Der Weg zur Big Data QS

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

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

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

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!

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

9 / 23

Test-Ausführung

FitNesse

• Farbe enkodiert PASS / FAIL• Integriert (REST) in Jenkins, CLI, Eclipse, …

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

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 ) {…}

}

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

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

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

12 / 23

QS in Big Data Entw.

FitNesse & der Elefant

Test-Daten -Definition

Job & WorkflowKontrolle

Inspektion Ergebnisse

Der Weg zur Big Data QS

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

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 |

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

14 / 23

• Big Data: effizienter (binärer ) Daten-austausch, heterogenes Umfeld

• Interface-Beschreibungssprache (IDL)• Compiler für

viele Sprachen

Thrift-Files

Test-Daten

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

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

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

16 / 23

QS in Big Data Entw.

FitNesse & der Elefant

Test-Daten -Definition

Job & WorkflowKontrolle

InspektionErgebnisse

Der Weg zur Big Data QS

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

17 / 23

FTP / HDFS Zugriff

Jobs

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

18 / 23

Hadoop-Jobs

Jobs

• Zugriff über CLI• CLI-Output wird mit Testergebnis

gespeichert

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

19 / 23

QS in Big Data Entw.

FitNesse & der Elefant

Test-Daten -Definition

Job & WorkflowKontrolle

ResultInspection

Der Weg zur Big Data QS

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

20 / 23

Pig

Ergebnisse

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

21 / 23

Hive

Ergebnisse

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

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

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

23 / 23

QS: divers, intuitiv

FitNesse:Test-Wiki, Fixtures

Test-Daten : CSV, Thrift

Jobs : HDFS, HadoopResults:

Pig, Hive

Vielen Dank!

[email protected]