Was hat sich in den letzten Jahren in dem Ökösystem von Perl 5 getan? In dieser Präsentation stelle ich einige Themen vor.
Diese Präsention habe ich anlässlich der Wiederbelebung von Hamburg.pm am 5. September 2017 gehalten.
Was hat sich in den letzten Jahren in dem Ökösystem von Perl 5 getan? In dieser Präsentation stelle ich einige Themen vor.
Diese Präsention habe ich anlässlich der Wiederbelebung von Hamburg.pm am 5. September 2017 gehalten.
Selenium bietet als Testwerkzeug eine große Spanne an Möglichkeiten, Tests für Webcontent zu erstellen. Häufig haben Nutzer jedoch Probleme, mit Selenium robuste Tests zu erzeugen. Ursache für diese Probleme ist oftmals nicht oder ungenügend berücksichtigtes Zeitverhalten.
Selenium bietet von Haus aus Wege an, diese Probleme zu bewältigen. Bei United Planet gehen wir seit Anfang 2017 noch einen Schritt weiter, indem wir ein hauseigenes Selenium Framework verwenden. Die damit gemachten Erfahrungen möchten wir gern mit den Konferenzteilnehmern teilen. Wir möchten unseren Ansatz zeigen, einen hohen Stabilitätsgrad, bei vernünftiger Laufzeit zu erreichen. Darüber hinaus, möchten wir vorführen, wie es uns durch Nutzung von Docker gelingt, unsere Selenium Tests zu parallelisieren und wie wir dabei vorgehen, um fehlgeschlagene Tests mit Hilfe von Screenshots, Videos und Logausgaben zu debuggen.
A power workshop during JAX 2007 on advanced techniques of test-driven development. It deals with acceptance tests using FIT as well as with mock objects, GUI testing and Groovy as a testing language for Java.
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
We try to develop our features agile in branches and to merge them when they are ready for use.
Test Driven Development is on everyone's lips in Java and other languages.
Whether we develop ADF or JET or Spring, we try to apply these techniques in many places.
But what is the real foundation of most of our applications?
That is the Oracle database with its data model and its programming language PL/SQL!
Again and again you hear that merging data model scripts and PL/SQL programs are not practical.
But how are we supposed to develop our frontend according to these techniques if we don't start with it in the backend?
In the presentation I will show you how you can develop your data model and your programs in the database in an agile and test-driven way from the request to the refactoring.
You will see how tools like Git, Liquibase and utPLSQL work together.
Automatisierung? ANSIBLE - Einfach. Sicher. Zuverlässig.
Ansible ist ein Open-Source Werkzeug zur Automatisierung von Deployment-, Konfigurations- und Administrationsprozessen. Die Beschreibung der Aufgaben basiert auf YAML und Jinja Templates. Es lässt sich zudem in Verbindung mit Vagrant und Docker nutzen.
Anwendungsbeispiele für Volltextsuche, Vorlagenerstellung mit der aktuellen eEvolution Version. Eine Präsentation von Alexander Kranz (eEvolution GmbH & Co. KG)
Testgetriebene Entwicklung mit Jasmine und Karma hat sich mittlerweile schon als defacto-Standard etabliert. Routinen ohne Abhängigkeiten lassen sich damit ohne Probleme testen. Die Schwierigkeiten beginnen jedoch schon, wenn es um die Auflösung von Abhängigkeiten geht. In diesem Vortrag werden verschiedene Strategien und Werkzeuge vorgestellt, mit denen Abhängigkeiten zu Objekten und Funktionen oder zum Server abgedeckt werden können. Aber nicht nur Abhängigkeiten stellen Schwierigkeiten bei der testgetriebenen Entwicklung dar, auch der Umgang mit Fixtures ist bei der testgetriebenen Entwicklung mit JavaScript relevant. Abgerundet wird dieser Vortrag mit einigen Best Practices für die testgetriebenen Entwicklung mit JavaScript.
Rex ist ein Tool zur Automatisierung von Applikations- und Konfigurationsrollouts. Die gewünschte Umgebung wird mittels einem Script (Perl) beschrieben und kann somit auf unterschiedlichen Systemen ausgefuehrt werden. Rex verbindet sich per SSH auf das Zielsystem und führt die entsprechenden Arbeiten aus.
In diesem Vortrag will ich zuerst auf die Basics von Rex eingehen. Um dann zu zeigen wie man mit Hilfe von Rex sich und seinem Team schnell eine Testumgebung mit VirtualBox zur Verfügung stellen kann und wie man - in Zusammenarbeit mit den Systemadministratoren - die gleichen Scripte zum Aufbau und dem Deployment der Produktionsumgebung verwenden kann.
Rex ist ein Tool zur Automatisierung von Applikations- und Konfigurationsrollouts. Die gewünschte Umgebung wird mittels eines Script (Perl) beschrieben und kann somit auf unterschiedlichen Systemen ausgeführt werden. Rex verbindet sich per SSH auf das Zielsystem und führt die entsprechenden Arbeiten aus.
In diesem Vortrag wird zunächst auf die Basis von Rex eingegangen. Dann wird gezeigt, wie man mit Hilfe von Rex sich und seinem Team schnell eine Testumgebung mit VirtualBox zur Verfügung stellen kann, und wie man – in Zusammenarbeit mit den Systemadministratoren – die gleichen Scripte zum Aufbau und dem Deployment der Produktionsumgebung verwenden kann.
Selenium bietet als Testwerkzeug eine große Spanne an Möglichkeiten, Tests für Webcontent zu erstellen. Häufig haben Nutzer jedoch Probleme, mit Selenium robuste Tests zu erzeugen. Ursache für diese Probleme ist oftmals nicht oder ungenügend berücksichtigtes Zeitverhalten.
Selenium bietet von Haus aus Wege an, diese Probleme zu bewältigen. Bei United Planet gehen wir seit Anfang 2017 noch einen Schritt weiter, indem wir ein hauseigenes Selenium Framework verwenden. Die damit gemachten Erfahrungen möchten wir gern mit den Konferenzteilnehmern teilen. Wir möchten unseren Ansatz zeigen, einen hohen Stabilitätsgrad, bei vernünftiger Laufzeit zu erreichen. Darüber hinaus, möchten wir vorführen, wie es uns durch Nutzung von Docker gelingt, unsere Selenium Tests zu parallelisieren und wie wir dabei vorgehen, um fehlgeschlagene Tests mit Hilfe von Screenshots, Videos und Logausgaben zu debuggen.
A power workshop during JAX 2007 on advanced techniques of test-driven development. It deals with acceptance tests using FIT as well as with mock objects, GUI testing and Groovy as a testing language for Java.
Agile Oracle database modeling and development - APEX Connect 2020Torsten Kleiber
We try to develop our features agile in branches and to merge them when they are ready for use.
Test Driven Development is on everyone's lips in Java and other languages.
Whether we develop ADF or JET or Spring, we try to apply these techniques in many places.
But what is the real foundation of most of our applications?
That is the Oracle database with its data model and its programming language PL/SQL!
Again and again you hear that merging data model scripts and PL/SQL programs are not practical.
But how are we supposed to develop our frontend according to these techniques if we don't start with it in the backend?
In the presentation I will show you how you can develop your data model and your programs in the database in an agile and test-driven way from the request to the refactoring.
You will see how tools like Git, Liquibase and utPLSQL work together.
Automatisierung? ANSIBLE - Einfach. Sicher. Zuverlässig.
Ansible ist ein Open-Source Werkzeug zur Automatisierung von Deployment-, Konfigurations- und Administrationsprozessen. Die Beschreibung der Aufgaben basiert auf YAML und Jinja Templates. Es lässt sich zudem in Verbindung mit Vagrant und Docker nutzen.
Anwendungsbeispiele für Volltextsuche, Vorlagenerstellung mit der aktuellen eEvolution Version. Eine Präsentation von Alexander Kranz (eEvolution GmbH & Co. KG)
Testgetriebene Entwicklung mit Jasmine und Karma hat sich mittlerweile schon als defacto-Standard etabliert. Routinen ohne Abhängigkeiten lassen sich damit ohne Probleme testen. Die Schwierigkeiten beginnen jedoch schon, wenn es um die Auflösung von Abhängigkeiten geht. In diesem Vortrag werden verschiedene Strategien und Werkzeuge vorgestellt, mit denen Abhängigkeiten zu Objekten und Funktionen oder zum Server abgedeckt werden können. Aber nicht nur Abhängigkeiten stellen Schwierigkeiten bei der testgetriebenen Entwicklung dar, auch der Umgang mit Fixtures ist bei der testgetriebenen Entwicklung mit JavaScript relevant. Abgerundet wird dieser Vortrag mit einigen Best Practices für die testgetriebenen Entwicklung mit JavaScript.
Rex ist ein Tool zur Automatisierung von Applikations- und Konfigurationsrollouts. Die gewünschte Umgebung wird mittels einem Script (Perl) beschrieben und kann somit auf unterschiedlichen Systemen ausgefuehrt werden. Rex verbindet sich per SSH auf das Zielsystem und führt die entsprechenden Arbeiten aus.
In diesem Vortrag will ich zuerst auf die Basics von Rex eingehen. Um dann zu zeigen wie man mit Hilfe von Rex sich und seinem Team schnell eine Testumgebung mit VirtualBox zur Verfügung stellen kann und wie man - in Zusammenarbeit mit den Systemadministratoren - die gleichen Scripte zum Aufbau und dem Deployment der Produktionsumgebung verwenden kann.
Rex ist ein Tool zur Automatisierung von Applikations- und Konfigurationsrollouts. Die gewünschte Umgebung wird mittels eines Script (Perl) beschrieben und kann somit auf unterschiedlichen Systemen ausgeführt werden. Rex verbindet sich per SSH auf das Zielsystem und führt die entsprechenden Arbeiten aus.
In diesem Vortrag wird zunächst auf die Basis von Rex eingegangen. Dann wird gezeigt, wie man mit Hilfe von Rex sich und seinem Team schnell eine Testumgebung mit VirtualBox zur Verfügung stellen kann, und wie man – in Zusammenarbeit mit den Systemadministratoren – die gleichen Scripte zum Aufbau und dem Deployment der Produktionsumgebung verwenden kann.
2. Zu mir
• „Professioneller“ Entwickler seit Mitte 2012
• Java
• OSGi
• Gatling LoadTesting
• Java EE
https://twitter.com/TKaesemann
https://github.com/ThiloKaese
6. Arquillian, eine mächtige Testsuite
• Fokus auf die oberen beiden Teile des Testdreiecks (ITest und SysTest)
• Erstellt komplette deployments
• Auch für MicroProfile interessant
• Für ITest zu lahm, da es eine ganzen ApplServer startet
• Test können mit bekannten Testing tools (JUnit + Hamcrest, AssertJ,
Spock)
• Viele Erweiterungen (Modules)
7. Arquillian strahlt bei alten (EJB2, ...)
Anwendungen und Systemtests
• EJB2 gibt es afaik keine Standalone Test Lösung
• Systemtests
• Macht der ApplServer was ich ihm gesagt habe oder ist da doch eine obskur
patched Lib dabei
• Kombination z.B. mit Testcontainers, Flyway/Liquibase
• Selenium Unterstützung mittels Arquillian-Drone
8. Bei "neueren" Anwendungen sollte es nicht
so exzessiv verwendet werden
• Integrationstests Bootstrappen!
• EJB3 -> OpenEJB
• JPA -> Hibernate/EclipseLink
• ...
• Systemtests: Arquillian
• Sicherheit für Libs und Konfig (ggf auch beim Kunden)
• Embedded - Lokale Container mit Lifecycle
• Managed - Remote Container mit Lifecycle
• Remote – Remote Container mit JMX Anbindung o.ä.
9. Was kann Arquillian noch?
• EJB und CDI Unterstützung
• Drone und Graphene mit WebDriver Unterstüztung
• Mehrere Deployments in angegebener Reihenfolge
• Tests können einem Deployment zugeordnet werden
„Thema“ Alien, aber nicht wie OpenLiberty von IBM, sondern von JBOSS/RedHat
In meinem Umfeld konnte niemand so richtig damit was anfangen.
So ein mystisches Ding, was jeder mal gehört hat, aber nix mit Anfangen kann
Arquillian von JBOSS/Redhat
Testpyramide Unittests, Integrationstests, Systemtests/UI Tests
Fokus auf ITest und SystemTest
-Erstellt Deployments
-MP, wenn irgendein Appserver benutzt wird (vgl boot times bei adam bien),
--ggf auch Aquillian Algeron für Contract verifcation
--vgl Karaf tests, dauert ganz schön um für jeden IT nen Container zu starten
-jeden separat weil Seiteneffektfrei!
Module:
Contract Testing, Smart-Testing, Performance, Spring, Angular ….
Smart-Testing: analysiere Ändeurngen und Optimiere die Tests
Unterstützung von Jboss Forge, falls das jemand möchte
EJB2 (sofern noch verwendet)
Systemtests
MP, wenn irgendein Appserver benutzt wird (vgl boot times bei adam bien)
ggf auch Aquillian Algeron für Contract verifcation
Leider auch die Unterstützung zumindest bei IntelliJ ist begrenzt…
Für Itests eher eine separate Implementierung verwenden und Bootstrappen, weil schneller! (Adam Bien, Sebastian Daschner, …)
Für Systemtests hilft es beim Setup und stellt eher den AppServer da mit gepatcheten Libs, Seltsamer Konfiguration, …
-Embedded
--Lokale container
-Managed:
-- Entweder Arquillian Container für jeweilligen Appserver
- Remote:
-- separat über maven plugin z.b. maven-wildfly-plugin instanz starten und nach dem Test wieder säubern
ArquillianCube https://github.com/arquillian/arquillian-cube versuch für das Container-Zeitalter, aber scheint eher noch niedrigere Prio zu haben
Mächtiges Rückgrat von Arquillian ist Shrinkwrap!
- Komplettes Deployment „einfach“ per Code erstellen und dabei Maven Dependencies nutzen bzw filtern
Mögliche Archive
- EAR, WAR, JAR
EAR
- Wie „gewohnt“
Unterscheidung Modul oder Lib
Arquillian.xml
- „Steuert“ die Container config (remote/managed/ports/…)