O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Containerized End­2­End Testing
 + 
, 
 Tobias Schneck ConSol Software GmbH
Test Pyramid
Robust
Independent
Isolated
Fast
Characteristics of End­2­End Testing
Different types of testing:
Regression tests
Functional approval tests
Parallel tests...
Virtual Machines vs. Container 
(explained on the example of Docker)
Immutable Filesystem Layers
(explained on the example of Docker)
Advantages of Container Technology
Isolation of environments
Repository for versioning and distribution
Reproducible appli...
Containerized GUIs
### start the docker container via x­forwarding 
docker run ­it ­e DISPLAY=$DISPLAY ­v /tmp/.X11­unix:/...
What's provided by   ?
Category
Web tests through HTML selectors
Testing native UI content
(beside of browser content, lik...
Area: Browser content  
(e.g. HTML pages, single page apps)
Object identification by DOM elements
Detects when Page/AJAX­R...
 Nagios   OMD   Incinga
 Monitoring Integration
Test definition (Java Script)
Test Case Structure
// testcase.js 
/************************************* 
* Initialization 
****************************...
Call all Sahi Functions
// testacase.js 
/************************ 
* Call Sahi Functions 
***********************/ 
_navi...
Fluent API for UI Testing
// testacase.js 
/*** open calculator app ***/ 
var calculatorApp = new Application("galculator"...
Custom Functions
// e.g. excluded into a separate common.js 
/********** 
* Combine click and highlight 
*********/
functi...
Sakuli End­2­End Testing Container
Demo ­ Sakuli Container
# start the docker container 
docker run ­it ­p 5911:5901 ­p 6911:6901 consol/sakuli­ubuntu­xfce 
...
Bakery Demo Setup
Bakery Demo Setup
Bakery Demo
git clone https://github.com/toschneck/sakuli­example­bakery­testing.git 
# start jenkins 
jenkins/deploy_jenk...
What's next?
Headless execution ­ Linux: VNC & Docker   Windows: ?
Make container OpenShift ready (security, source­2­imag...
Links
https://github.com/ConSol/sakuli 
https://github.com/toschneck/sakuli­
example­bakery­testing
https://twitter.com/sa...
Thank's Herbstcampus!
Tobias Schneck 
ConSol Software GmbH
Franziskanerstraße 38
D­81669 München
Tel: +49­89­45841­100
Fax...
Próximos SlideShares
Carregando em…5
×

Skale your test environment! Containerized End-2-End-Testing @Herbstcampus Nürnberg

228 visualizações

Publicada em

http://www.herbstcampus.de/veranstaltung-5222-containerized-end-2-end-testing.html?id=5222

Bei der Konzeption von End-2-End-Tests ist eines der größten Probleme die Frage, wie die Testausführung möglichst robust, reproduzierbar und skalierbar gestaltet werden kann. Diese Hürde lässt sich mit klassischen Ansätzen nicht überwinden. Einen eleganten Ausweg bieten in Container verpackte Testumgebungen. Dadurch wird es möglich, einen definierten Systemstand reproduzierbar aufzurufen und Tests performant auszuführen.

Es wird zeigt, wie z.B. parallele GUI-Tests in verschiedenen Umgebungen zur Qualitätssicherung beitragen. Die Beispiele sind mit dem Open-Source-Tools Sakuli und Docker realisiert und testen Web- und Rich-Client-Applikationen.

Der Vortrag beinhaltet eine großen Anteil an Live-Demo. Die zugehörige Codebasis wird den Zuhören auch zugänglich gemacht.

Skills
Keine

Lernziele
Ziel ist es, dem Zuhörer aufzuzeigen, wie das Potenzial von Container-Technologien genutzt werden kann, um die Softwarequalität zu erhöhen und den manuellen Testaufwand drastisch zu verringern. Eine abschließende Bewertung der Erfahrungen sowie ein Ausblick auf weitere Einsatzszenarien und Entwicklungsschritte runden den Vortrag ab.

Publicada em: Software
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Skale your test environment! Containerized End-2-End-Testing @Herbstcampus Nürnberg

  1. 1. Containerized End­2­End Testing  +  ,   Tobias Schneck ConSol Software GmbH
  2. 2. Test Pyramid Robust Independent Isolated Fast
  3. 3. Characteristics of End­2­End Testing Different types of testing: Regression tests Functional approval tests Parallel tests with GUIs are complex Stateful tests: user logins, sessions, history Setup and cleanup of test data Manual effort > effort for test automation
  4. 4. Virtual Machines vs. Container  (explained on the example of Docker)
  5. 5. Immutable Filesystem Layers (explained on the example of Docker)
  6. 6. Advantages of Container Technology Isolation of environments Repository for versioning and distribution Reproducible application environment Dockerfile, docker­compose.yml Starting containers on­the­fly Optimized for parallel execution Less memory overhead Shared Linux kernel
  7. 7. 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/ubuntu­xfce­vnc  docker run ­it ­p 5912:5901 ­p 6912:6901 consol/centos­xfce­vnc  
  8. 8. What's provided by   ? Category Web tests through HTML selectors Testing native UI content (beside of browser content, like PDF's or plugins) Open Source & Java API Headless execution Test writing assistance (recorder, screenshot finder) Automatable / Test result reporting (CI, DB, monitoring environment)
  9. 9. Area: Browser content   (e.g. HTML pages, single page apps) Object identification by DOM elements Detects when Page/AJAX­Requests are loaded (no waits needed) Can handle with modern web frameworks Recorder functionality Assert functionality Java­API Area: Screen content   (e.g. rich clients, browser plugins) Object identification by image patterns (screenshot snippets) Not restricted to a browser, validates and controls what users would see Flexible region patterns for the screen navigation OCR features (experimental) Implemented on top of java.awt.Robot and openCV Java API
  10. 10.  Nagios   OMD   Incinga  Monitoring Integration
  11. 11. Test definition (Java Script)
  12. 12. Test Case Structure // testcase.js  /*************************************  * Initialization  *************************************/  _dynamicInclude($includeFolder);  var testCase = new TestCase(60, 70);  var env = new Environment();  var appNotepad = new Application("gedit");  var region = new Region(); /******************************  * Description of the test case  ******************************/  try {     //... /************************************************  * Exception handling and shutdown of test case  **********************************************/  } catch (e) {     testCase.handleException(e);  } finally {     testCase.saveResult();  }
  13. 13. Call all Sahi Functions // testacase.js  /************************  * Call Sahi Functions  ***********************/  _navigateTo("http://sahi.example.com/_s_/dyn/Driver_initialized");  _highlight(_link("SSL Manager"));  _isVisible(_link("SSL Manager"));  _highlight(_link("Logs"))  _click(_link("Logs"))  testCase.endOfStep("Test Sahi landing page", 5);
  14. 14. Fluent API for UI Testing // testacase.js  /*** open calculator app ***/  var calculatorApp = new Application("galculator")      .open();  testCase.endOfStep("Open Calculator", 3);  /*** calculate 525 + 100 ***/  var calculatorRegion = calculatorApp.getRegion();  calculatorRegion.type("525")      .find("plus.png")     .click()      .type("100")     .find("calculate")      .click();  testCase.endOfStep("calculate 525 +100", 20);
  15. 15. Custom Functions // e.g. excluded into a separate common.js  /**********  * Combine click and highlight  *********/ function clickHighlight($selector) {      _highlight($selector);      _click($selector);  } /***************  * Open PDF in native viewer  **************/  var PDF_EDITOR_NAME = "masterpdfeditor3";  function openPdfFile(pdfFileLocation) {      return new Application(PDF_EDITOR_NAME + ' "' + pdfFileLocation + '"').open();  }
  16. 16. Sakuli End­2­End Testing Container
  17. 17. Demo ­ Sakuli Container # start the docker container  docker run ­it ­p 5911:5901 ­p 6911:6901 consol/sakuli­ubuntu­xfce  docker run ­it ­p 5912:5901 ­p 6912:6901 consol/sakuli­centos­xfce  # start in parallel via docker­compose  # use docker­compos.yml from https://github.com/ConSol/sakuli/tree/master/docker  docker­compose up
  18. 18. Bakery Demo Setup
  19. 19. Bakery Demo Setup
  20. 20. Bakery Demo git clone https://github.com/toschneck/sakuli­example­bakery­testing.git  # start jenkins  jenkins/deploy_jenkins.sh  # start OMD montioring  omd­nagios/deploy_omd.sh  # start the build of the application images  bakery­app/app­deployment­docker­compose/deploy_app.sh  #start tests  sakuli­tests/execute_all.sh  #start tests for monitoring  sakuli­tests/execute_all_4_monitoring.sh
  21. 21. What's next? Headless execution ­ Linux: VNC & Docker   Windows: ? Make container OpenShift ready (security, source­2­image) Video recording of the test execution (error documentation) Web UI to handle Sakuli test suites Connect 3rd­party test management tools (HP QC, TestRail, ...) Improve test result presentation in CI tools Selenium as an alternative to Sahi
  22. 22. Links https://github.com/ConSol/sakuli  https://github.com/toschneck/sakuli­ example­bakery­testing https://twitter.com/sakuli_e2e https://twitter.com/consol_de
  23. 23. Thank's Herbstcampus! Tobias Schneck  ConSol Software GmbH Franziskanerstraße 38 D­81669 München Tel: +49­89­45841­100 Fax: +49­89­45841­111 tobias.schneck@consol.de info@consol.de www.consol.de

×