Unit Testing für Architektur Vorgaben

Neben den Unit Tests für einzelne Methoden kann man auch generelle Vorgaben prüfen, welche die gesamte Architektur erfüllen muss. Dazu gibt es das ArchUnit Paket.

In meinem Demo Projekt habe ich das mal in aller Breite beispielhaft aufgebaut:

  • Requirements (in Testlink)
  • Logische Testcases (ebenfalls in Testlink)
  • Physische Testcases (im Java Maven Projekt)

Architecture Decision Records

Für die eigene Gedächtnisstütze, aber auch als Begründung für das Team und zukünftige Entwickler: Man sollte ein paar wesentliche Entscheidungen in ADR festhalten und begründen.

Passende Tools stehen dazu bereit und man kann es auch innerhalb eines Maven CI Workflows prima unterbringen. Mein Beispiel-Projekt kann dazu gerne herangezogen werden.

CI Tools die wo chatten tun

Was man nicht alles kombinieren kann:

Nun unterhält sich mein Ansible Tower mit einem ejabberd Chatraum und erzählt von seinen nächtlichen Update Eskapaden. Während der Jenkins bei Beginn und Ende seiner Pipeline inklusive passendem Avatar auch noch reinschwätzt.

Endlich schreibt mir mal jemand, auch wenn es nur die eigenen gerufenen Geister sind 🙂

Fingerabdrücke und Urlaubsfotos

Auch im Urlaub kommt der kleine Mann im Ohr nicht zur Ruhe und muß sich bei IT Fragen und Security immer einmischen.

Typische Situation: Ein nettes Pärchen fragt nach einem gemeinsamen Foto und hält ihr Smartphone hin. Keine Frage, man hilft gern und macht ein Bild.

Was aber wenn der Button zum Lesen der Fingerabdrücke mehr macht als nur ein Foto? Habe ich da eben meine biometrischen Merkmale abgegeben? Wer sagt denn der Scanner ist nicht gehackt und liest mein Profil dauerhaft ein.

Bei 33grad sieht es aber auch komisch aus, sollte ich erst Handschuhe anziehen und dann zum fremden Smartphone greifen.

Systemweites Einsammeln von Timeouts

Bei komplexen Systemen mit vielen Entwicklern wird es schwierig, wenn man effektiv nach Timeouts testen möchte. Ohne das Wissen wie lange manche Dinge gültig sind und später invalidiert werden, kann man nur im Nebel stochern. Auch wenn jeder für sich das irgendwo dokumentieren sollte, dann fehlt doch leider eine Gesamtübersicht.

Also bräuchte man einen globalen Zeitstrahl, der alle Timeouts auf einen Blick darstellt und dann kann man auch mal einen Langzeittest fahren, der

  • effektiv ist, weil er genau ein wenig länger ist als der letzte abgelaufene Timeout
  • komplett ist, weil er nicht einen noch längeren Timeout unwissentlich unterschlägt
  • nachvollziehbar ist, weil die Entscheidungsgrundlage für genau dieses Intervall dokumentiert ist

Labor online

Dank Powerline liegen nun etwa 180mbit im Kellern an. Genug um auch mal online was zu suchen und ein VoIP phone aufzustellen.

Automatisierte Softwareverteilung

Eigentlich ja eine tolle Sache. Firmenweit wird die Software verteilt und auf einem aktuellen Stand gehalten.
Wenn allerdings auch Löschwellen durch das Netz gejagt werden, ist Vorsicht angesagt. Oder man ignoriert einfach die unterschiedlichen Bedürfnisse zwischen Verwaltungs-PCs und Entwickler-PCs und löscht mal eben alle Browser und Java JDKs.
Danke dafür.

Git rebase mit Handbremse

Wenn man sich wundert, warum eine einzige geänderte Datei beim rebase über Minuten den PC lahm legt (Windows natürlich). Wenn parallel Eclipse offen ist und bei jeder kleinen Änderung sofort neu compilieren will, dann bremst das natürlich ein wenig.
Dazu noch eine virtualisierte Umgebung und man kann erst mal Kaffee holen.

Welt-erster Pull request

Das macht Freude: Bei einem meiner Projekte hat sich jemand zu einer Verbesserung hinreissen lassen und ganz offiziell einen Pull Request in mein gitea geschoben. Da sage ich doch mal ganz dick DANKE und habe den Fix auch gleich mal ein meine Installation übernommen.

So sollte eigentlich das Internet sein: Kein hass und keine Gewalt, sondern ein Miteinander um OpenSource und die Gesellschaft an sich nach vorne zu bringen.