SlideShare ist ein Scribd-Unternehmen logo
22.10.2012
End2End-Monitoring
von Webapplikationen
mit Sahi und OMD
Simon Meggle, Monitoring Consultant
22.10.2012 www.consol.de2
• Einführung
• Motivation
• Eigenschaften von Sahi
• Funktionsweise von Sahi
• Sahi-Proxy, Suites und Cases, Sahi-API
• Live-Demo 1: „Login und Logout“
• Sahi2OMD
• Vorstellung
• Grundgerüst für Sahi-Scripts
• NSCA-Modus / DB-Modus
• Fallbeispiel / Live-Demo 2: „OXID Functionality“
• Sahi-Testcases, Batchrunner, Output in OMD
End2End-Monitoring
von Webapplikationen
mit Sahi und OMD
22.10.2012 www.consol.de3
Motivation
www.
superwichtig.
de
BP A
Service a
Service b
Service c
BP B
Service f
Service g
Service h
BP C
Service k
Service l
Service m
Service n
Service o
Monitoring der Gesamtfunktionalität durch
• punktuelle Checks
• Aggregation
• Service/Hostgroups
• Business-Prozesse
22.10.2012 www.consol.de4
Motivation
22.10.2012 www.consol.de5
Sahi: Eigenschaften und Voraussetzungen
• Was ist/kann Sahi?
 entwickelt von Narayan Raman (Indien)
 Web Automation and Testing Tool“
-> Tool zur Simulation von User-Aktion im Webbrowser
 AJAX, Frames, iFrames, Up/Downloads, Browser alerts, NTLM Auth, HTTPS…
 leistungsfähige API
 intelligente Objekt-Adressierung auch über Frames/iFrames hinweg (kein XPath)
 Funktionen für File/DB-Zugriff
 Batch Mode & Multi-Threaded Playback
 Sahi erkennt , wenn Seiten/AJAX-Requests fertig sind
 Sahi läuft auf jedem OS mit Java (z.b. auch iOS, Android…) in jedem Browser (ohne Plugin)
 Open Source
• Was ist/kann Sahi nicht?
− alles, was nicht über DOM angesprochen werden kann (z.b. Flash, Applets)
− Tests außerhalb des Browserinhaltes ( AutoIt)
http://sahi.co.in/
22.10.2012 www.consol.de6
Funktionsweise: Sahi-Proxy
HTTP Request/Response
Webserver
Browser
Workstation
• „normaler“ Webtraffic: HTTP Request/Response
22.10.2012 www.consol.de
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
7
localhost:9999
Sahi Test-Host
Webserver
Funktionsweise: Sahi-Proxy
Browser Sahi-Prozess
22.10.2012 www.consol.de8
localhost:9999
Sahi Test-Host
Testcase
Webserver
Funktionsweise: Sahi-Proxy
HTTP Request/Response
Browser Sahi-Prozess
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
22.10.2012 www.consol.de9
localhost:9999
Sahi Test-Host
Webserver
Funktionsweise: Sahi-Proxy
HTTP Request/Response
Browser Sahi-Prozess
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
Testcase
22.10.2012 www.consol.de
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
10
localhost:9999
Sahi Test-Host
Webserver
Funktionsweise: Sahi-Proxy
HTTP Request/Response
Browser Sahi-Prozess
Testcase
22.10.2012 www.consol.de11
localhost:9999
Sahi Test-Host
Webserver
Funktionsweise: Sahi-Proxy
Browser Sahi-Prozess
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
• Wiedergabe durch Injizieren der SahiScripts in den Browser
Testcase
22.10.2012 www.consol.de12
localhost:9999
Sahi Test-Host
Webserver
Funktionsweise: Sahi-Proxy
HTTP Request/Response
Browser Sahi-Prozess
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
• Wiedergabe durch Injizieren der SahiScripts in den Browser
Testcase
22.10.2012 www.consol.de13
localhost:9999
Sahi Test-Host
Webserver
Funktionsweise: Sahi-Proxy
HTTP Request/Response
Browser Sahi-Prozess
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
• Wiedergabe durch Injizieren der SahiScripts in den Browser
Testcase
22.10.2012 www.consol.de
• „normaler“ Webtraffic: HTTP Request/Response
• Sahi wird als Proxy zwischengeschaltet
• Aufzeichnung aller weitergeleiteten Requests in SahiScript
• Wiedergabe durch Injizieren der SahiScripts in den Browser
• Auch externe Proxies werden unterstützt
14
localhost:9999
Sahi Test-Host
Funktionsweise: Sahi-Proxy
Browser Sahi-Prozess
Webserver
Proxy
Testcase
22.10.2012 www.consol.de15
Sahi-Suites und Cases
c1.case c2.case c3.case c4.case c5.case
testcases/c1.case http://url
testcases/c2.case http://url
testcases/c3.case http://url
testcases/c4.case http://url
testcases/c5.case http://url
test.suite
22.10.2012 www.consol.de16
Funktionsweise: DOM
• DOM = Document Object Model
• Norm, die den Zugriff auf Objekte in einem Markup-Dokument (z.b. HTML) bietet
• Markup-Dokumente bestehen aus Knoten in einer Baumstruktur
<table>
<thead>
<tr>
<th>Vorname</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<tr>
<td>Donald</td>
<td>Duck</td>
</tr>
</tbody>
</table>
http://www.wikipedia.org/
22.10.2012 www.consol.de17
Funktionsweise: Sahi-APIs
Browser Accessor API Browser Action API Miscellaneous API
22.10.2012 www.consol.de18
Funktionsweise: Sahi-APIs
• Browser Accessor APIs
• Funktionen, die den Zugriff auf DOM-Objekte im Browser ermöglichen
• erwarten einen Identifier
• Identifier = Indizes, IDs, Namen, CSS-Klassennamen, etc… (auch als Regex)
• Beispiel:
<a href="http://www.consol.de" id=“consol_link">Home</a>
_link(9) der 10. Link auf der Seite
_link(„consol_link“) Link mit der ID „consol_link“
_link(/consol_.*/) ebenfalls, als Regex
_link(„Home“) Link mit dem Text „Home“
http://sahi.co.in/w/browser-accessor-apis
22.10.2012 www.consol.de19
Funktionsweise: Sahi-APIs
• Browser Accessor APIs – Lokalisierung mit „DOM Relations“
• Funktionen, die den Zugriff auf DOM-Objekte im Browser ermöglichen
• erwarten einen Identifier und eine optionale DOM Relation
• Identifier = Indizes, IDs, Namen, CSS-Klassennamen, etc… (auch als Regex)
• DOM Relation = DOM Relation Marker(DOM Objekt)
• DOM Relation Marker = Beziehung zweier Elemente im DOM:
• _near()
• _under()
• _in()
• Je mehr DOM Relations verwendet werden, desto robuster werden Sahi-Cases!
_image(“delete.gif”, _near(_cell(“usr4”))
_link(„Details“, _under(_cell(„details“)))
_link(„Details“, _in(_cell(„product_facts“)))
http://sahi.co.in/w/browser-accessor-apis
22.10.2012 www.consol.de20
Funktionsweise: Sahi-APIs
• Browser Action APIs
• Funktionen, die Aktionen im Browser auslösen
• Mausaktionen: _click(), _mouseOver(), _dragDrop(), ..., ...
• Tastenaktionen: _keyPress(), keyDown(), ..., ...
• Daten-Aktionen: _setValue(), ..., ...
• Prüf-Routinen
• Vergleiche : _assertEqual(), assertContainsText(), assertNotEqual()..., ...
• Vorhandensein : _assertExists(), assertNotExists()..., ...
• Debugging: _debug(), _prompt(), _alert()..., ...
• u.v.m. ...
http://sahi.co.in/w/browser-action-apis
• Miscellaneous APIs
• Helper-Funktionen: _random(), _sessionInfo(), _lastDownloadedFileName(), ...
• Log-Funktionen: _logException(), _stopOnError(), ...
• Daten-Funktionen: _getDB(), _readFile(), _writeToFile(), _readCSVFile(), ...
• Browser-Erkennung: _isIE(), _isFF(), _isChrome(), _isSafari()
• u.v.m. ...
22.10.2012 www.consol.de21
Demo: „Login und Logout“ – der erste Sahi-Testcase
22.10.2012 www.consol.de22
Vorstellung von sahi2omd
• Motivation für die Entwicklung
• Verbesserung der Fehleranalyse
• Modularisierung
• Schnittstellen zu Nagios
• Anreicherung mit Informationen
• Features
• NSCA/DB-Modus
• Screenshots bei Exceptions
• Laufzeit-Performancedaten
• Suites
• Cases
• Steps
• PNP-Templates inclusive
22.10.2012 www.consol.de23
Sahi2OMD | Grundgerüst für Sahi-Scripts
Hilfs-Funktionen
Threshold für Laufzeit des Cases
Sahi-Script
Fehlerbehandlung
Verarbeiten des Ergebnisses
22.10.2012 www.consol.de
OMD-Server Sahi-Host
24
Sahi2OMD | NSCA-Modus
Task Scheduler
sahi2omd –mode nsca 
sahisuite.suite
- Environment-Checks
- Sahi-Start
Results
- Results einlesen
- Auswertung
send_nsca.exe
nagios.inc
22.10.2012 www.consol.de25
Sahi2OMD | DB-Modus (neu)
OMD-Server
Sahi-Host
Task Scheduler
Result-DB
check_mysql_health
sahi2omd –mode db 
sahisuite.suite
- Environment-Checks
- Sahi-Start
nagios.inc
Sahi.pm
22.10.2012 www.consol.de26
Fallbeispiel / Live-Demo2: „OXID Functionality“
22.10.2012 www.consol.de27
Danke für die Aufmerksamkeit!
Icons:
http://artdesigner.lv
http://spassfieber.de

Weitere ähnliche Inhalte

Ähnlich wie OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle

Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
Martin Abraham
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
vesparun
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft AG
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
Icinga
 
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DNUG e.V.
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
Cenarion Information Systems GmbH
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenMayflower GmbH
 
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DNUG e.V.
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerSandro Sonntag
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
adesso AG
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittdominion
 
BI-System mit OData und SharePoint Online
BI-System mit OData und SharePoint OnlineBI-System mit OData und SharePoint Online
BI-System mit OData und SharePoint Online
atwork
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
David Schneider
 
JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...
JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...
JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...
Artur Kosch
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pub
Loopback.ORG
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
predic8
 
PHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformancePHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-Performance
Nico Steiner
 

Ähnlich wie OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle (20)

Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in RubyPerformanter, hochskalierbarer Web 2.0-Dienst in Ruby
Performanter, hochskalierbarer Web 2.0-Dienst in Ruby
 
Creasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform AppsCreasoft-Akademie - Mobile Multiplattform Apps
Creasoft-Akademie - Mobile Multiplattform Apps
 
Icinga 2009 at Nagios Workshop
Icinga 2009 at Nagios WorkshopIcinga 2009 at Nagios Workshop
Icinga 2009 at Nagios Workshop
 
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Die Domino REST API - Konzepte und Hintergruende.pdf
 
GWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der PraxisGWT – Google Web Toolkit in der Praxis
GWT – Google Web Toolkit in der Praxis
 
HTML5 und node.js Grundlagen
HTML5 und node.js GrundlagenHTML5 und node.js Grundlagen
HTML5 und node.js Grundlagen
 
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdfDACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
DACHNUG50 Domino REST API - Konzepte und Hintergruende.pdf
 
Server Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM ServerServer Revolutions- Der Spring Source DM Server
Server Revolutions- Der Spring Source DM Server
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDISchlanke Webarchitekturen nicht nur mit JSF 2 und CDI
Schlanke Webarchitekturen nicht nur mit JSF 2 und CDI
 
Ajax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schrittAjax in domino web-anwendungen - der nächste schritt
Ajax in domino web-anwendungen - der nächste schritt
 
BI-System mit OData und SharePoint Online
BI-System mit OData und SharePoint OnlineBI-System mit OData und SharePoint Online
BI-System mit OData und SharePoint Online
 
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und behebenPimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
Pimp My SharePoint - Performanceprobleme vorbeugen, analysieren und beheben
 
JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...
JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...
JavaScript SEO - Crawling, Indexierung und Auditing von JavaScript-Websites -...
 
Ruby on Rails SS09 11
Ruby on Rails SS09 11Ruby on Rails SS09 11
Ruby on Rails SS09 11
 
DOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pubDOAG 2015 enterprise_securitymitlda_pundpki-pub
DOAG 2015 enterprise_securitymitlda_pundpki-pub
 
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
REST: Versprechen, Wirklichkeit & Alternativen: GraphQL, GRPC, JSON RPC...
 
Hdc2012 cordova-präsi
Hdc2012 cordova-präsiHdc2012 cordova-präsi
Hdc2012 cordova-präsi
 
PHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-PerformancePHP Kongress 2010 - Web-Performance
PHP Kongress 2010 - Web-Performance
 

OSMC 2012 | End2End-Monitoring von Webapplikationen mit SAHI by Simon Meggle

  • 1. 22.10.2012 End2End-Monitoring von Webapplikationen mit Sahi und OMD Simon Meggle, Monitoring Consultant
  • 2. 22.10.2012 www.consol.de2 • Einführung • Motivation • Eigenschaften von Sahi • Funktionsweise von Sahi • Sahi-Proxy, Suites und Cases, Sahi-API • Live-Demo 1: „Login und Logout“ • Sahi2OMD • Vorstellung • Grundgerüst für Sahi-Scripts • NSCA-Modus / DB-Modus • Fallbeispiel / Live-Demo 2: „OXID Functionality“ • Sahi-Testcases, Batchrunner, Output in OMD End2End-Monitoring von Webapplikationen mit Sahi und OMD
  • 3. 22.10.2012 www.consol.de3 Motivation www. superwichtig. de BP A Service a Service b Service c BP B Service f Service g Service h BP C Service k Service l Service m Service n Service o Monitoring der Gesamtfunktionalität durch • punktuelle Checks • Aggregation • Service/Hostgroups • Business-Prozesse
  • 5. 22.10.2012 www.consol.de5 Sahi: Eigenschaften und Voraussetzungen • Was ist/kann Sahi?  entwickelt von Narayan Raman (Indien)  Web Automation and Testing Tool“ -> Tool zur Simulation von User-Aktion im Webbrowser  AJAX, Frames, iFrames, Up/Downloads, Browser alerts, NTLM Auth, HTTPS…  leistungsfähige API  intelligente Objekt-Adressierung auch über Frames/iFrames hinweg (kein XPath)  Funktionen für File/DB-Zugriff  Batch Mode & Multi-Threaded Playback  Sahi erkennt , wenn Seiten/AJAX-Requests fertig sind  Sahi läuft auf jedem OS mit Java (z.b. auch iOS, Android…) in jedem Browser (ohne Plugin)  Open Source • Was ist/kann Sahi nicht? − alles, was nicht über DOM angesprochen werden kann (z.b. Flash, Applets) − Tests außerhalb des Browserinhaltes ( AutoIt) http://sahi.co.in/
  • 6. 22.10.2012 www.consol.de6 Funktionsweise: Sahi-Proxy HTTP Request/Response Webserver Browser Workstation • „normaler“ Webtraffic: HTTP Request/Response
  • 7. 22.10.2012 www.consol.de • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet 7 localhost:9999 Sahi Test-Host Webserver Funktionsweise: Sahi-Proxy Browser Sahi-Prozess
  • 8. 22.10.2012 www.consol.de8 localhost:9999 Sahi Test-Host Testcase Webserver Funktionsweise: Sahi-Proxy HTTP Request/Response Browser Sahi-Prozess • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript
  • 9. 22.10.2012 www.consol.de9 localhost:9999 Sahi Test-Host Webserver Funktionsweise: Sahi-Proxy HTTP Request/Response Browser Sahi-Prozess • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript Testcase
  • 10. 22.10.2012 www.consol.de • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript 10 localhost:9999 Sahi Test-Host Webserver Funktionsweise: Sahi-Proxy HTTP Request/Response Browser Sahi-Prozess Testcase
  • 11. 22.10.2012 www.consol.de11 localhost:9999 Sahi Test-Host Webserver Funktionsweise: Sahi-Proxy Browser Sahi-Prozess • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript • Wiedergabe durch Injizieren der SahiScripts in den Browser Testcase
  • 12. 22.10.2012 www.consol.de12 localhost:9999 Sahi Test-Host Webserver Funktionsweise: Sahi-Proxy HTTP Request/Response Browser Sahi-Prozess • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript • Wiedergabe durch Injizieren der SahiScripts in den Browser Testcase
  • 13. 22.10.2012 www.consol.de13 localhost:9999 Sahi Test-Host Webserver Funktionsweise: Sahi-Proxy HTTP Request/Response Browser Sahi-Prozess • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript • Wiedergabe durch Injizieren der SahiScripts in den Browser Testcase
  • 14. 22.10.2012 www.consol.de • „normaler“ Webtraffic: HTTP Request/Response • Sahi wird als Proxy zwischengeschaltet • Aufzeichnung aller weitergeleiteten Requests in SahiScript • Wiedergabe durch Injizieren der SahiScripts in den Browser • Auch externe Proxies werden unterstützt 14 localhost:9999 Sahi Test-Host Funktionsweise: Sahi-Proxy Browser Sahi-Prozess Webserver Proxy Testcase
  • 15. 22.10.2012 www.consol.de15 Sahi-Suites und Cases c1.case c2.case c3.case c4.case c5.case testcases/c1.case http://url testcases/c2.case http://url testcases/c3.case http://url testcases/c4.case http://url testcases/c5.case http://url test.suite
  • 16. 22.10.2012 www.consol.de16 Funktionsweise: DOM • DOM = Document Object Model • Norm, die den Zugriff auf Objekte in einem Markup-Dokument (z.b. HTML) bietet • Markup-Dokumente bestehen aus Knoten in einer Baumstruktur <table> <thead> <tr> <th>Vorname</th> <th>Name</th> </tr> </thead> <tbody> <tr> <td>Donald</td> <td>Duck</td> </tr> </tbody> </table> http://www.wikipedia.org/
  • 17. 22.10.2012 www.consol.de17 Funktionsweise: Sahi-APIs Browser Accessor API Browser Action API Miscellaneous API
  • 18. 22.10.2012 www.consol.de18 Funktionsweise: Sahi-APIs • Browser Accessor APIs • Funktionen, die den Zugriff auf DOM-Objekte im Browser ermöglichen • erwarten einen Identifier • Identifier = Indizes, IDs, Namen, CSS-Klassennamen, etc… (auch als Regex) • Beispiel: <a href="http://www.consol.de" id=“consol_link">Home</a> _link(9) der 10. Link auf der Seite _link(„consol_link“) Link mit der ID „consol_link“ _link(/consol_.*/) ebenfalls, als Regex _link(„Home“) Link mit dem Text „Home“ http://sahi.co.in/w/browser-accessor-apis
  • 19. 22.10.2012 www.consol.de19 Funktionsweise: Sahi-APIs • Browser Accessor APIs – Lokalisierung mit „DOM Relations“ • Funktionen, die den Zugriff auf DOM-Objekte im Browser ermöglichen • erwarten einen Identifier und eine optionale DOM Relation • Identifier = Indizes, IDs, Namen, CSS-Klassennamen, etc… (auch als Regex) • DOM Relation = DOM Relation Marker(DOM Objekt) • DOM Relation Marker = Beziehung zweier Elemente im DOM: • _near() • _under() • _in() • Je mehr DOM Relations verwendet werden, desto robuster werden Sahi-Cases! _image(“delete.gif”, _near(_cell(“usr4”)) _link(„Details“, _under(_cell(„details“))) _link(„Details“, _in(_cell(„product_facts“))) http://sahi.co.in/w/browser-accessor-apis
  • 20. 22.10.2012 www.consol.de20 Funktionsweise: Sahi-APIs • Browser Action APIs • Funktionen, die Aktionen im Browser auslösen • Mausaktionen: _click(), _mouseOver(), _dragDrop(), ..., ... • Tastenaktionen: _keyPress(), keyDown(), ..., ... • Daten-Aktionen: _setValue(), ..., ... • Prüf-Routinen • Vergleiche : _assertEqual(), assertContainsText(), assertNotEqual()..., ... • Vorhandensein : _assertExists(), assertNotExists()..., ... • Debugging: _debug(), _prompt(), _alert()..., ... • u.v.m. ... http://sahi.co.in/w/browser-action-apis • Miscellaneous APIs • Helper-Funktionen: _random(), _sessionInfo(), _lastDownloadedFileName(), ... • Log-Funktionen: _logException(), _stopOnError(), ... • Daten-Funktionen: _getDB(), _readFile(), _writeToFile(), _readCSVFile(), ... • Browser-Erkennung: _isIE(), _isFF(), _isChrome(), _isSafari() • u.v.m. ...
  • 21. 22.10.2012 www.consol.de21 Demo: „Login und Logout“ – der erste Sahi-Testcase
  • 22. 22.10.2012 www.consol.de22 Vorstellung von sahi2omd • Motivation für die Entwicklung • Verbesserung der Fehleranalyse • Modularisierung • Schnittstellen zu Nagios • Anreicherung mit Informationen • Features • NSCA/DB-Modus • Screenshots bei Exceptions • Laufzeit-Performancedaten • Suites • Cases • Steps • PNP-Templates inclusive
  • 23. 22.10.2012 www.consol.de23 Sahi2OMD | Grundgerüst für Sahi-Scripts Hilfs-Funktionen Threshold für Laufzeit des Cases Sahi-Script Fehlerbehandlung Verarbeiten des Ergebnisses
  • 24. 22.10.2012 www.consol.de OMD-Server Sahi-Host 24 Sahi2OMD | NSCA-Modus Task Scheduler sahi2omd –mode nsca sahisuite.suite - Environment-Checks - Sahi-Start Results - Results einlesen - Auswertung send_nsca.exe nagios.inc
  • 25. 22.10.2012 www.consol.de25 Sahi2OMD | DB-Modus (neu) OMD-Server Sahi-Host Task Scheduler Result-DB check_mysql_health sahi2omd –mode db sahisuite.suite - Environment-Checks - Sahi-Start nagios.inc Sahi.pm
  • 26. 22.10.2012 www.consol.de26 Fallbeispiel / Live-Demo2: „OXID Functionality“
  • 27. 22.10.2012 www.consol.de27 Danke für die Aufmerksamkeit! Icons: http://artdesigner.lv http://spassfieber.de