Property Based Resilience Testing Workshop

Termin

Der Workshop findet am 04.03.2021 um 19:00 Uhr online statt. Zugangsdaten werden über meetup.com bekannt gegeben.

Abstract

Property Based Resilience Testing bedeutet mit Hilfe von Property Based Testing (PBT) die Resilienz eines Systems zu testen. Wikipedia definiert Resilienz als “die Fähigkeit eines Systems bei Störungen oder Teilausfällen nicht vollständig zu versagen, sondern wesentliche Systemdienstleistungen aufrechtzuerhalten” und “[…] trotz massiver externer oder interner Störungen wieder in den Ausgangszustand zurückzukehren.” Wie verhält sich, zum Beispiel, eine Benutzerverwaltung während eines Datenbankausfalls? Was sind die Antwortzeiten? Wie schnell kann der normale Betrieb wieder hergestellt werden? Gerade in verteilten Systemen ist es sehr schwierig alle relevanten Fehlerszenarien zu finden und zu testen. Hier hilft PBT: Anstatt Fehlerszenarien selbst zu finden, wird erwünschtes Verhalten im Fehlerfall als Regelwerk beschrieben und ein PBT-Framework testet ob es von unserem Programm eingehalten wird. Im Fall der Benutzerverwaltung, kann eine Regel besagen, dass der normale Betrieb wieder hergestellt wird sobald der Datenbankausfall behoben wurde.

In diesem Workshop verwenden wir jqwik und testcontainers um container-basierte Systeme auf diese Art und Weise zu testen. Nach einer kurzen Einführung und Motivation des Themas, rekapitulieren wir was Property Based Testing ist und gehen insbesondere auf Modeling und Stateful Properties ein. Wir bauen ein Modell einer Applikation auf und benutzen es um bestimmte Eigenschaften zu falsifizieren. Danach erweitern wir dieses Modell um die Möglichkeit Fehlerzustände abzubilden. Zuletzt werden wir den Ansatz diskutieren und beenden den Workshop mit einer Retrospektive.

Der Workshop richtet sich an Anfänger und Fortgeschrittene und in Kooperation mit der Softwerkskammer Rhein-Neckar statt. Grundkenntnisse über Property Based Testing sind hilfreich aber nicht unbedingt notwendig. Für die Übungen werden die Teilnehmer in Kleingruppen unterteilt. Der Link zur Teilnahme wird noch veröffentlicht.

Voraussetzung

Computer mit Docker (siehe testcontainers für die minimale Version), Git und Java IDE.

Lernziele

Die Zuhörer/-innen lernen

  • wie eine container-basierte Umgebung in Tests aufgebaut wird und
  • wie Stateful Properties bestimmt und mit Hilfe von Modeling getestet werden.

Bio

Gregor Trefs ist Software Development Manager bei LivePerson, Mitorganisator der Java User Group Mannheim und Softwerkskammer Rhein-Neckar. Weiterhin ist er der Autor der testcontainers Extension für jqwik.

Spring Data JPA von 0 auf 100 in 60 Minuten

Registration

Dieser Termin ist aufgrund der aktuellen Situation mit dem neuen Coronavirus (SARS-CoV-2) kurzfristig abgesagt. Obwohl unsere Veranstaltungen einen kleineren Besucherkreis haben, möchten wir der aktuellen Lage mit der notwendigen Aufmerksamkeit begegnen und sehen uns in der Verantwortung potenzielle Infektionsketten zu minimieren.

Wir entschuldigen uns für die Kurzfristigkeit, jedoch haben wir es mit einer dynamischen Entwicklung zu tun bei der wir jeden Tag dazulernen.

Dieser Termin wird nachgeholt sobald sich die Situation entspannt.

Vielen Dank für euer Verständnis!

Termin

Der Vortrag findet nicht statt.

Ursprünglich war dieser am 12.03.2020 um 19:00 Uhr geplant..

Abstract

JPA is the most popular persistence technology for JAVA. In this talk, we’ll look into how it works and how it integrates with Spring by means of Spring Data JPA. We’ll look at the various ways one may use Spring Data from ready-made queries over query derivation, query by example, specifications, paging and sorting to custom method implementations.

We’ll also take a look at common pitfalls of JPA and how to circumvent them. And if time is left we’ll take a glance at other technologies available to Java developers to complement JPA and how these integrate with Spring Data.

Participants will learn to distinguish between JPA and Spring Data JPA, the various features Spring Data JPA offers and when to use which feature to achieve their goal.

Bio

Jens Schauder (@jensschauder) hat vor unglaublich langer Zeit auf einem in Assembler programmierbaren Tischrechner angefangen zu programmieren. Nach über 30 Jahren, davon fast 20 als Consultant für meist große Konzerne, hat er es 2017 geschafft sich beim Spring Data Team einzuschleichen. Dort arbeitet er meist an den Modulen Commons, JPA und JDBC, erzählt davon auf Konferenzen oder hilft anderen Entwicklern auf Stackoverflow. Wenn er nicht programmiert, spielt er mit seinen Kindern, läuft, macht Freeletics, spielt oder organisiert die JUG Ostfalen.

Automated Security-Testing in Continuous Integration

Registration

Wir freuen uns über Eure Anmeldung (optional und unverbindlich) auf unserer Meetup-Seite.

Termin

Der Vortrag findet am 04.02.2020 um 19:00 Uhr bei LivePerson in P3 1-3, Mannheim.

Abstract

Fast täglich liest man von Sicherheitsproblemen in (Web-)Anwendungen, zum Teil mit verheerenden Auswirkungen für Firmen und Verbraucher. Zum Schutz sensibler Daten müssen wir in der Entwicklung und im Betrieb stets sicherstellen, dass wir auf bekannte Schwachstellen reagieren und Systeme und Software auf dem aktuellsten Stand halten können.

Um möglichst schnelles Feedback über aktuelle Probleme zu bekommen, empfiehlt es sich, automatisiert nach bekannten Schwachstellen zu suchen. Hierzu bietet sich die Erweiterung bestehender Continuous-Integration-Pipelines an.

Im Vortrag mit Live-Demo werden mehrere Open-Source-Frameworks vorgestellt, mit deren Hilfe man automatisiert Schwachstellen in (Java-)Dependencies, Container-Images und Webapplikationen finden kann. Hierzu werden OWASP Dependency-Check, CoreOS Clair und OWASP ZAProxy genutzt.

Vorkenntnisse

Grundkenntnisse über Continuous Integration

Lernziele

Der Zuhörer/-innen lernen

  • dass man sich und seine Software automatisiert absichern kann, ohne ständig aktiv irgendwelche Tests auszuführen oder News bzw. aktuelle Schwachstellen zu verfolgen.
  • dass Sicherheitstests, genau wie fachliche und integrative Softwaretests, eine Grundabsicherung bieten und “nebenbei” ohne aktive Teilhabe des Entwicklers laufen

Bio

Christian Kühn ist auf dem Weg von Ops zu Dev in der Mitte hängengeblieben! Senior Systementwickler und Berater, Mitorganisator des DevOpsMeetup Karlsruhe, hält Vorträge und schreibt Artikel zu Themen aus DevOps, Cloud und Sicherheit.

Testen von und mit Infrastruktur - Integration Testing done right

Registration

Wir freuen uns über Eure Anmeldung (optional und unverbindlich) auf unserer Meetup-Seite.

Termin

Der Vortrag findet am 14.11.2019 um 19:00 Uhr bei Bridging IT in N7 5-6, 68161 Mannheim statt.

Abstract

Heutzutage läuft eine Software nicht für sich alleine, sondern agiert mit Anderen. Die Kommunikation erfolgt meist über verschiedene Protokolle, sprich über verschiedene Infrastruktur-Komponenten. Gerade beim Testen stellt sich die Frage, wie kann der Entwickler Tests so schreiben, dass sie von einem bestimmten Infrastruktur-Setup unabhängig sind. Meistens gelingt es nicht und dann wird dieser Teil der Software erst spät bei den End-2-End-Tests geprüft. Doch gerade mit Microservices und dem Paradigma “Wenn etwas schiefläuft, dann so schnell wie möglich” möchte der Entwickler schon zu einem früheren Testzeitpunkt, z.B. bei Entwicklertests, erfahren, wenn bei diesem Teil der Software etwas schief läuft. Zudem macht die Infrastruktur nicht beim Anwendungscode halt. Mittlerweile wird die Infrastruktur immer mehr mit Hilfe von Code (Provisionierungsskripte, Dockerfiles, (Shell-) Skripte etc. ) beschrieben und automatisiert. Auch bei diesem Code möchte der Entwickler sicher gehen können, dass er so funktioniert wie erwartet. Dieser Vortrag zeigt anhand einer Java-Anwendung, wie man mit Hilfe von 3rd-Party-Libraries die Infrastruktur in den Tests der Anwendung einbinden kann ohne sich gleich von einer bestimmten Infrastruktur abhängig zu machen. Darüber hinaus, wird darauf eingegangen wie die Qualität des Infrastruktur-Codes gesichert werden kann, angefangen bei klassischen Provisionierungswerkzeugen bis hinzu Container.

Bio

Sandra Parsick ist als freiberufliche Softwareentwicklerin und Consultant im Java-Umfeld tätig. Seit 2008 beschäftigt sie sich mit agiler Softwareentwicklung in verschiedenen Rollen. Ihre Schwerpunkte liegen im Bereich der Java Enterprise Anwendungen, agilen Methoden, Software Craftsmanship und in der Automatisierung von Softwareentwicklungsprozessen. Darüber schreibt sie gerne Artikel und spricht darüber auch gerne auf Konferenzen. In ihrer Freizeit engagiert sie sich in der Softwerkskammer Ruhrgebiet.

Jenkins X – Continuously Driving the Kloud

Registration

Wir freuen uns über Eure Anmeldung (optional und unverbindlich) auf unserer Meetup-Seite.

Termin

Der Vortrag findet am 24.10.2019 um 19:00 Uhr bei LivePerson in P3 1-3, Mannheim statt.

Abstract

Cloud schreibt man im Zeitalter von Kubernetes mit K! Alle Ressourcen werden dynamisch von Kubernetes verwaltet. Alle? Build und Deployment über verschiedene Stages liegt oft noch außerhalb, z.B. in einem Build-Server und verschiedenen Repositories (Artefakte, Docker-Images). Mit Jenkins X wandert alles in einen Kubernetes-Cluster und gewinnt so die nötige Dynamik:

  • Setup der nötigen Infrastruktur in Kubernetes (Jenkins, Nexus, Docker-Registry …),
  • Aufsetzen von Build-Pipelines für jeden Branch und jeden Pull-Request,
  • Deployment in verschiedene Stages (mit Helm),
  • Mandantenfähigkeit (Builds und Environments nach Teams unterscheiden),
  • Steuerung von versionierten Deployment-Konfigurationen (GitOps),
  • Import von bestehenden Projekten,
  • Setup neuer Projekte auf Basis gängiger Microservice-Frameworks (z.B. Spring Boot),
  • u.v.a.m.

Jenkins X ist ein entwicklerfreundliches Command-Line Tool und bündelt eine Vielzahl von Komponenten hinter einer einheitlichen (opinionated) Fassade.

Der Vortrag erklärt die Architektur und Konzepte und führt an ein paar kleinen Beispielen typische Use-Cases vor.

Bio

Gerd Aschemann ist Automatisierungsfanatiker: was gescriptet werden kann, wird auch gescriptet. Er ist als freiberuflicher Software-Entwickler und -Architekt unterwegs, in den letzten Jahren bevorzugt mit Aufgaben im Bereich Continuous Integration und -Delivery. Mit Java beschäftigt er sich schon seit ca. 1996, seit er als wissenschaftlicher Mitarbeiter im Fachgebiet Verteilte Systeme der TU Darmstadt zum Management Verteilter Anwendungen geforscht hat.