Containerized End-2-End-Testing

Sakuli + Docker

Referent: Tobias Schneck, ConSol* Software GmbH

Testpyramide

  • Robust
  • Unabhängig
  • Isoliert
  • Schnell

Besonderheiten bei End-2-End Tests

  • Unterschiedliche Testarten
    • Regressionstests
    • Funktionale Abnahmetests
  • Parallele Tests mit GUIs sind schwierig
    • Geteilte Testdaten: Login-User, User-Sessions mit Stati
    • Cleanup von Testdaten
  • Manueller Aufwand > Aufwand für Automatisierung

Vorteile der Container-Technologie

  • Isolation von Umgebungen
  • Repository für Versionierung und Verteilung
  • Nachvollziehbarer Aufbau der Umgebung
    • Dockerfile, docker-compose.yml
  • Start von Containern on-the-fly
  • Einfache Parallelisierung
    • Wenig Speicher-Overhead
    • Teilen sich den selben Linux-Kernel

Containerized GUIs


### start the docker container via x-forwarding
docker run -it -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix:rw rasch/inkscape
            

### start the docker container with VNC interface
# connect via URL: http://localhost:6911/vnc_auto.html?password=vncpassword
docker run -it -p 5911:5901 -p 6911:6901 consol/centos-xfce-vnc
docker run -it -p 5912:5901 -p 6912:6901 consol/ubuntu-xfce-vnc
            

Was bietet ?

Kategorie

Beschränkung auf den Browser
Web Tests via HTML-Selectors
Open Source & Java API
Automatisierbarkeit & Ergebnis-Forwarder
(CI, DB, Monitoring)
Unterstützung bei Testerstellung
(Recorder, Screenshot-Finder)
Headless-Execution

Nagios & Incinga Integration

Sakuli End-2-End-Testing Container

Demo - Sakuli-Containers


# start the docker container
docker run -it -p 5911:5901 -p 6911:6901 consol/sakuli-centos-xfce
docker run -it -p 5912:5901 -p 6912:6901 consol/sakuli-ubuntu-xfce

# start in parallel via docker-compose
# use docker-compos.yml from https://github.com/ConSol/sakuli/tree/master/docker
docker-compose up
            

CI Demo Aufbau

CI Demo Aufbau

CI Demo


git clone https://github.com/toschneck/sakuli-example-bakery-testing.git

### build the local images
mvn clean package

### start the application and the UI test via maven
mvn -f sakuli-tests-maven/pom.xml clean verify

### build and start the app via docker-compose
cd app-deployment-docker-compose
docker-compose kill && docker-compose rm -f && docker-compose build && docker-compose up -d

### start the 4 sakuli-tests in parallel
cd ../sakuli-tests
docker-compose kill && docker-compose rm -f && docker-compose build && docker-compose up
            

Ausblick & Ideen

  • Headless Execution - Linux: VNC & Docker, Windows: ?
  • Video-Aufzeichnung der Testabläufe zur Fehlerdokumentation
  • Web-UI für die Test-Suite-Verwaltung
  • Anbindung an externe Test-Management-Lösungen (z.B. HP QC)
  • Grafische Auswertung der Testergebnisse in CI-Umgebungen
  • Einbindung von Selenium als Sahi-Alternative

Links

https://github.com/ConSol/sakuli
https://github.com/toschneck/sakuli-example-bakery-testing
https://twitter.com/sakuli_e2e
https://twitter.com/consol_de

Vielen Dank!

Tobias Schneck
tobias.schneck@consol.de
ConSol Software GmbH
Franziskanerstraße 38
D-81669 München
Tel: +49-89-45841-100 info@consol.de
Fax: +49-89-45841-111 www.consol.de