containerized end-2-end-testing - software-qs-tag (deutsch)
Post on 09-Feb-2017
111 Views
Preview:
TRANSCRIPT
Agenda
1. Einordnung End2End Tests2. Nutzen ContainerTechnologie3. Überblick Sakuli Framework4. DEMO5. Ausblick
Testpyramide
RobustUnabhängigIsoliertSchnell
Besonderheiten bei End2End Tests
Unterschiedliche Testarten:RegressionstestsFunktionale Abnahmetests
Parallele Tests mit GUIs sind komplex!Stateful Tests: UserLogins, Sessions, verlaufsbasierte DatenSetup und Cleanup von Testdaten
Manueller Aufwand > Aufwand für Automatisierung
2. NutzenContainerTechnologie
Vorteile der ContainerTechnologie
Isolation von UmgebungenRepository für Versionierung und VerteilungReproduzierbarer Aufbau von UmgebungenDockerfile, dockercompose.yml
Start von Containern ontheflyOptimiert für ParallelisierungGeteilter Linux Kernel (Speicherplatz, CPU, RAM)Cloudready (Kubernetes, OpenShift, Mesos)
Virtuelle Maschinen vs. Container (am Beispiel Docker)
Containerized GUIs### start the docker container via xforwardingdocker run it e DISPLAY=$DISPLAY v /tmp/.X11unix:/tmp/.X11unix:rw rasch/inkscape
### start the docker container with VNC interface# connect via URL: http://localhost:6911/vnc_auto.html?password=vncpassworddocker run it p 5911:5901 p 6911:6901 consol/ubuntuxfcevncdocker run it p 5912:5901 p 6912:6901 consol/centosxfcevnc
3. ÜberblickSakuli Framework
Was bietet ?
KategorieWeb Tests via HTMLSelektoren
Testen von nativen GUI Inhalten(nicht HTMLInhalte, z. B. PDF's oder Plugins)
Open Source & Java API
HeadlessExecution
Unterstützung bei Testerstellung(Recorder, ScreenshotFinder)
Automatisierbarkeit & ErgebnisAufbereitung(CI, DB, Monitoring Systeme)
Aktionsbereich: BrowserInhalte (HTMLSeiten, SinglePageApps)ObjektAdressierung über DOMElementeErkennt, wenn Seiten/AJAXRequestsfertig geladen sind (keine waits)Guter Umgang mit modernen WebFrameworksRecorder / SelektorenUIAssistentAssert Funktionen
Aktionsbereich: Bildschirm Inhalte (z.B. RichClients, BrowserPlugins)ObjektAdressierung über ImagePatterns (MiniScreenshots)OffBrowserTesting, sieht und steuertdas, was der User siehtFlexible RegionPatterns für dieNavigation innerhalb des BildschirmsOCRFeatures (experimental)Nutzt java.awt.Robot und openCV
Nagios OMD Incinga
Monitoring Integration
Test Definition (Java Script)
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();
Unterstützung für alle SahiFunktionen// 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);
Fluent API für UITesting// 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);
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();
Sakuli End2EndTesting Container
4. DEMO
Demo Sakuli Container# start the docker containerdocker run it p 5911:5901 p 6911:6901 consol/sakuliubuntuxfcedocker run it p 5912:5901 p 6912:6901 consol/sakulicentosxfce
# start in parallel via dockercompose# use dockercompos.yml from https://github.com/ConSol/sakuli/tree/master/dockerdockercompose up
Bakery Demogit clone https://github.com/toschneck/sakuliexamplebakerytesting.git
# start jenkinsjenkins/deploy_jenkins.sh# start OMD montioringomdnagios/deploy_omd.sh
# start the build of the application imagesbakeryapp/appdeploymentdockercompose/deploy_app.sh
#start testssakulitests/execute_all.sh#start tests for monitoringsakulitests/execute_all_4_monitoring.sh
4. Ausblick
What's next?
HeadlessExecution Linux: VNC & Docker Windows: ?Cloudready container für OpenShift (security, source2image)VideoAufzeichnung der Testabläufe zur FehlerdokumentationWebUI für die TestSuiteVerwaltung und ReportingExterne TestManagementSysteme anbinden (HP QC, TestRail, ...)Darstellung von Testergebnissen in CITools verbessernSelenium als Alternative zu Sahi ermöglichen
Links
ConSol/sakuli
Consol/sakuliexamples
toschneck/sakuliexamplebakerytesting
sakuli@consol.de
Danke SoftwareQSTag!
Tobias Schneck
ConSol Software GmbHFranziskanerstraße 38D81669 MünchenTel: +498945841100Fax: +498945841111
tobias.schneck@consol. toschneck
info@consol.dewww.consol.de
ConSol
top related