PhantomJS und CasperJS

Ähnliche Dokumente
APEX Datenverwaltung Wo sind die Daten gerade? Dr. Gudrun Pabst

Funktionen in JavaScript

APEX 5.0 DOAG Mai 2014

Was ist neu in der SQS-TEST /Professional Suite 10.8?

DOAG Regio 2015 APEX 5 Neuerungen Highlights. Marco Patzwahl

Soli Manager 2011 Installation und Problemanalyse

Script-Upgrade. Vorraussetzungen. Folgende Meldungstypen werden dabei verwendet: Vom Fahrzeug zur Zentrale. Quittungstexte vom Fahrzeug (Type 11.

Node.js Einführung Manuel Hart

Wolkig bis heiter. Andreas Wismann WHEN OTHERS. APEX als Drehkreuz für Web Service-Anwendungen

Jakarta Turbine Ein Open Source Framework fÿr Webanwendungen. KNF Kongre 2001 Henning P. Schmiedehausen

Übung 1: Von einer naiven JavaScript Applikation zu einem modernen Front-End Build:

Konzept eines Datenbankprototypen Folie 1 Daniel Gander / Gerhard Schrotter

Auf einen Blick. 1 Apps programmieren wie geht das? Das App-Werkzeug: LiveCode Grundbausteine einer App... 43

Oracle Forms und APEX

Schnelleinstieg Online-Backup

Fernwartung mit TeamViewer

XAMPP installieren & Kursbeispiel einrichten

ImgTrans Systembeschreibung Ein Service von FlixData.Com. Vers April 2017

Installation und Verbindung mit dem KIRUS.asp System

JSF (JavaServer Faces) Erstellen einer Webseite

Öko APEX Hybride Lösung für Smartphones mit APEX und PhoneGap

PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

So bringst du Prolog zum Laufen...

Lokale Installation von DotNetNuke 4 ohne IIS

Nachfolgend wird beschrieben wie das Online-Umfrage-Tool installiert wird sowie welchen Funktionsumfang das Tool umfasst.

XAMPP installieren & Kursbeispiel einrichten

Brauche ich noch jquery oder JavaScript? Ich hab ja Dynamic Actions?

Adminer: Installationsanleitung

ÖVSV Mitglieder-Datenbank. Benutzerhandbuch Version 1.2.1

scmsp SMARTES Content-Management-System Bestimmtes kann und das dafür sehr gut. Bei der Konzeption des blockcms stand die Einfachheit im Vordergrund:

Cross-Platform Apps mit HTML5/JS/CSS/PhoneGap

Anleitung Praxisspiegel mit Safari und Mac OS X

VTX FTP-PRO. Übermittlung von Geschäftsdateien per FTP. Benutzerhandbuch. 1 FTP-PRO Bedienungsanleitung für Administatoren

Update. Installation via Update auf photokorn Diese Update Anleitung ist gültig für alle Versionen ab photokorn 1.52 auf 1.8.

Entwicklungswerkzeuge & - methoden

Eigene Java- Klassen in Intrexx

Wie installiere ich den Unity Web Player?

Test mit lokaler XAMPP Oxid Installation

Node.js der Alleskönner. Kai Donato MT AG Ratingen

Starten Sie Exponent und klicken Sie auf Hilfe und dann auf ÜberExponent. Notieren Sie sich die folgenden Daten:

Doppelklicken Sie auf Wine_x.dmg. Das gelbe Fenster unten öffnet sich. Ziehen Sie Wine.app nach Applications wie im Bild unten.

Oracle SOA Suite: Total Quality T-Systems

I N S T A L L A T I O N S A N L E I T U N G

Bedienung der Webseite

Installation & Anwendung Xdebug für Eclipse

Vertretungsplan. Handreichung. Stand: 24.August 2015

Benutzerhandbuch. ce - Inspector

Continuous Integration mit TravisCI u.a. Jan Steemann

Bei einer deutschen Installation muß man den Window Server und pbs aus StartUp in Autostart verlagern sowie die Datei

Quickstart Guide. azeti SONARPLEX VAA Fehler erkennen, bevor Fehler entstehen

Norddeutsche Landesverbände - Stand vom

KURZANLEITUNG CYBERDUCK MIT CLOUD OBJECT STORAGE

Anmeldewesen in DropTours

Voraussetzung für die Nutzung des KOCH-Portals ist ein aktueller Webbrowser mit installiertem Adobe Flash Player Plugin.

Terminland TLSync. Installationsanleitung. Terminland TLSync. Installationsanleitung. Dokumentation: 3.02 Terminland: ab Datum:

TwinSpace Leitfaden. Herzlich Willkommen im TwinSpace!

LineQuest-Leitfaden Programmierschnittstelle. LineQuest online-umfragen professionell weiter bearbeiten in Technik und Design

Installation und Nutzung des Eyeblaster Workshops

App Entwicklung mit Hilfe von Phonegap. Web Advanced II - SS 2012 Jennifer Beckmann

PG5 Starter Training Webeditor 8 Applikation Daniel Ernst DE

Backend

Webentwicklung mit Vaadin 7. Theoretische und praktische Einführung in Vaadin 7. Christian Dresen, Michael Gerdes, Sergej Schumilo

DYNAMISCHE SEITEN. Warum Scriptsprachen? Stand: CF Carola Fichtner Web-Consulting

Debugging in APEX. Christina Funke Apps Associates GmbH Dortmund

ESB - Elektronischer Service Bericht

Ich war's nicht! Fehler & Ursachensuche in APEX Peter Raganitsch FOEX GmbH Österreich Schlüsselworte APEX, Fehler, Debug, Logging, Nachforschung.

Einrichtung Secure-FTP

Mobile Data Monitor Erfassung, Überwachung und Analyse von übertragenen Datenmengen

Live Update (Auto Update)

Wie richten Sie Ihr Web Paket bei Netpage24 ein

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

Quickstart IMS Custom-Player Pro

Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test

Web Applications Vulnerabilities

Zimplit CMS Handbuch. Einführung. Generelle Informationen

Contao 3. Keynote Contao-Konferenz 2012

Containerized End 2 End Testing

Berechtigungsverwalter 1.0 Installationsanleitung

Unigraphics Schnittstelle entfernen

:: Anleitung Hosting Server 1cloud.ch ::

How to Public key authentication with freesshd

cytan cytansynchro Version 4.1 / Mai 2016 Letzte Softwareanpassung: Woche 17 / 2016

Testautomatisierung. Nr. 4 Januar Given When Test. Testen als Karriere. Entwickler entdecken UI-Testing. Markus Gärtner Seite 10

Benutzerhandbuch EA Administratoren

DCCS Lotusphere Nachlese 2012 Was sind XPages? Mobile Features für XPages

Frequently Asked Questions (FAQs) zu VPN

IFA-Formulare im PDF-Format mit Adobe Acrobat Reader DC öffnen. Inhalt. Einleitung. 1. PDF-Formular lokal speichern und öffnen

secuentry/anleitung IOS ConfigApp

ZIPSPLITMAIL. HowTo. Jürgen A.Lamers Version 0.3a

SSO-Schnittstelle. Inhalt: Beschreibung der Single Sign-On (SSO) Schnittstelle. NetSlave GmbH Simon-Dach-Straße 12 D Berlin

Stapelverarbeitung mit Adobe Acrobat Professional. Leibniz Universität IT Services Anja Aue

Software. Die Erste. C o m p u t e r G r u n d w i s s e n Te i l I I. S o f t w a r e. H a r d w a r e. C D / D V D B r e n n e n.

Erstellung eines Sidekick Ads. Juni 2010

1.1 Client - Seitendarstellung im Browser der Seite aus der Sicht des Clients

Gnuplot. Justin Simon Bayer. 12. Januar 2006

Installationsablauf ReNoStar Version für Internetdownload Actionpack März 2016

Revit Modelle in der Cloud: Autodesk 360 Mobile

Android Testautomatisierung mit dem Framework Robotium

APEX und Workflows: Spaghetticode oder Integration. Sven Böttcher. Consultant, Apps Associates GmbH

Drupal 8 manuell installieren

Transkript:

APEX-Anwendungen (fast) wie von Geisterhand testen mit PhantomJS und CasperJS Andreas Wismann WHEN OTHERS Entwicklung Coaching Projektplanung wismann@when-others.com

Andreas Wismann Selbständiger Berater Dipl.-Informatiker (FH) Kaarst (bei Düsseldorf) wismann@when-others.com Datenbanken seit 1983 Web seit 1995 Oracle seit 1997 APEX seit 2007

Wie viele Bestandteile hat Ihre APEX-Applikation? Wie viele Seiten? Wie viele Regionen? Wie viele Formulare? Wie viele Items? Wie viele Dynamic Actions? Wie viele Conditions? Wie viele Reports? So viele Fehlerquellen hat Ihre APEX-Applikation!

Haben Sie Zeit für manuelle Tests?

Verwenden Sie automatisierte Testverfahren?

"Seit wann geht das nicht?"

Die Suche nach dem Test-Tool freie Software Referenzen einfach zu handhaben (Installation, Mobilität) leicht zu lernen trotzdem mächtig an Standards ausgerichtet erweiterbar durch eigene Programmierung nicht schon wieder eine neue Programmiersprache...

PhantomJS Headless Browser

PhantomJS Headless Browser (ohne grafische Benutzeroberfläche)

PhantomJS Skripte werden in der Console ("REPL") ausgeführt:

Webkit-basiert Macht alles "wie Safari" beherrscht Canvas, SVG (kein Adobe Flash)

Webkit-basiert nächste Version: vermutlich Chrome

Aufgaben von PhantomJS (Beispiele) Webseiten testen Vorhandensein von Elementen Erwartete Ausgaben Fehlermeldungen Broken Layout Automatisieren Einloggen Ausfüllen von Formularen Klick-Aktionen Weiterleitungen Netzwerk monitoren Ladezeit für eine Seite Anzahl geladener Ressourcen Fehler beim Laden Bildschirmfotos erstellen für diverse Monitore (groß, klein, mobil) Ausschnitte

Installation: phantomjs.org

Hallo Welt console.log( 'Hallo Welt' ); console.log( 'Die verwendete Codepage ist ', phantom.outputencoding ); console.log( 'äöü ÄÖÜ ß' ); phantom.exit(); # Aufruf an der Konsole (Windows PowerShell, Terminal etc.) phantomjs --output-encoding=cp850 hallo-welt.js

Demo: PhantomJS

Wer benutzt PhantomJS? zum Beispiel Bootstrap jquery mobile modernizr

Asynchron programmieren mit Callbacks

Variablen übergeben

Website Scraping

Kann ich jquery in PhantomJS benutzen? Ja. Entweder das jquery der APEX-Seite Oder ein beliebiges anderes jquery, welches man der Webseite "unterschiebt" (siehe injectjs)

Website Scraping var webpage = require('webpage').create(), system = require('system'), url = 'https://www.google.de/search?site=&source=hp&q=doag%202016'; webpage.onconsolemessage = function(msg){console.log(msg)}; console.log('opening', url); webpage.open(url, function () { console.log('opened ', url); webpage.injectjs('jquery.min.js'); // im selben Ordner wie das Skript }); webpage.evaluate(function(selector) { var selector = 'h3.r a'; console.log('selector =', selector); $nodes = $(selector); console.log($nodes.length, 'Treffer'); $nodes.each(function(index){ console.log( index + ': ' + $(this).text() ); }); return false; }); console.log('-----------------------------'); phantom.exit(); var selector = 'h3.r a'; console.log('selector =', selector); $nodes = $(selector); console.log($nodes.length, 'Treffer'); $nodes.each(function(index){ console.log( index + ': ' + $(this).text() ); });

Let's test...

APEX-Region Wird die Region angezeigt? Welche Dimensionen (Höhe) hat sie? Beinhaltet sie andere Regionen?

Items Werden alle erforderlichen Items angezeigt? Welche Werte haben die Items? Welche Werte haben die Hidden Items?

Layout Sieht die Anwendung aus wie erwartet?

Classic Report Erscheinen die erwarteten Ergebnisse? Wie viele Zeilen werden gelistet? Kommt "no data found"?

Interactive Report Wird die richtige Default-Reportdefintion angezeigt? Lassen sich die Ergebnisse als Export-Datei herunterladen? => sehr umständlich nachzuprogrammieren mit POST-Befehlen

Formular Gelangt man vom Report zum Edit-Formular? Gelangt man mit Cancel wieder zurück? Werden Daten bei korrekter Eingabe angenommen? Werden falsche Dateneingaben abgelehnt?

Fehlermeldungen Zeigt die Seite eine Fehlermeldung? Zeigt irgendeine Seite der Anwendung eine Fehlermeldung?

Ladezeiten / Langläufer Wie lange dauert das Laden einer bestimmten Seite? Was wird geladen? Welche Seiten laden am längsten? Welche Ladezeiten haben sich verändert?

"Asynchronous Hell" mit PhantomJS Asynchrone Funktionsaufrufe führen Callback-Funktionen aus "nachfolgende" Programmteile dürfen sich nicht auf die Reihenfolge der Ausführung verlassen Navigation wird unübersichtlich Sie bekommen schnell ~~~ "Spaghetti-Code" ~~~

CasperJS Test-Framework basiert auf PhantomJS Fügt (insbesondere) Navigation und Testfall-Management hinzu Vereinfacht die asynchrone Programmierung stark

CasperJS umfangreiche API umfassende und gute Dokumention

Farbe im DOS-Fenster: ansicon, comemu

Demo: CasperJS

loadimages = false verringert gegebenenfalls die Ladezeiten und den Traffic

Herausforderung: APEX Session-ID Session-ID wird nach dem Login erteilt Sie muss in einer Suite für alle folgenden Tests verwendet werden Deshalb: nach casper.start(...) muss man die Session-ID zunächst in.then(...) ermitteln Erst anschließend, und nur in der Callback-Funktion von then(...) können alle folgenden Tests mit thenopen(...) durchgeführt werden

APEX play nicely with test frameworks Eindeutige IDs verwenden Marker-Klassen benutzen Report-Ausgaben wie no data found ändern zu <span class="no-data-found">no data found</span> denn dann können Sie später folgendes leicht finden: <span class="no-data-found">keine Daten gefunden</span>

Nachteile von PhantomJS / CasperJS? Das Passwort ist sichtbar (Konsole oder Datei) Beschränkung auf Safari-Engine Ein Headless Browser zeigt keinen Benutzer-Dialog "Datei auswählen" - ein File Upload muss also separat programmiert werden

Farbe im DOS-Fenster? https://github.com/adoxa/ansicon https://conemu.github.io/

Buchempfehlung Rob Friesel: PhantomJS Cookbook 2014 packtpub.com 306 Seiten Amazon-Preis: 33,15

4 5 Buchempehlung David Sawyer McFarland 3. Auflage 2014 683 Seiten Amazon-Preis: 41,00

Try this at home!