Nachvollziehbare Test-Coverage für alle Prozess-Stakeholder

In der Softwareentwicklung ist die Testabdeckung ein wichtiger Indikator für die Qualität einer Anwendung. Nur durch flächendeckendes und systematisches Testen können Fehler frühzeitig erkannt und behoben werden. Aus diesem Grund gibt es für nahezu jede Programmiersprache zahlreiche Testbibliotheken. Unter Java ist JaCoCo eine sehr bekannte Lösung für das Reporting der Test-Coverage.

Ursprünglich am 18.09.2020 auf dem offiziellen Camunda Blog gepostet: https://camunda.com/blog/2020/09/traceable-test-coverage-for-all-process-stakeholders/

Um die Testabdeckung für alle Stakeholder sichtbar und nachvollziehbar zu machen, gibt es Tools, die in einem zweiten Schritt die generierten Coverage-Reports aufbereiten und übersichtlich darstellen. Darunter fallen etwa SonarQube oder Codecov. Durch einen automatischen Upload der Reports kann die Berechnung der Testabdeckung in die Build-Pipeline integriert werden.

BPMN ist technisch betrachtet ebenso eine Programmiersprache, auch wenn sie ein anderes Ziel verfolgt und andere Stakeholder anspricht. Aus diesem Grund ist es auch bei automatisierten BPMN-Prozessen wichtig, eine hohe Testabdeckung zu erreichen. Hierfür gibt es bereits ein Tool, welches die Berechnung der Test-Coverage erlaubt: Camunda BPM Test Coverage (https://github.com/camunda/camunda-bpm-process-test-coverage).

Diese Bibliothek erzeugt aus Testfällen automatisch eine grafische Darstellung der Testabdeckung in Form von HTML-Dateien. Die Bereitstellung dieser Berichte für die unterschiedlichen Stakeholder, insbesondere für die fachlichen Prozessexperten, ist aufgrund des statischen Formats jedoch äußerst schwierig.

In verschiedenen Kundenprojekten hatten wir darüber hinaus immer wieder mit zusätzlichen Anforderungen zu kämpfen, die damit ebenfalls nicht umzusetzen waren:

  • Freigabe neuer Prozessversionen durch Prozessverantwortliche
  • Kollaboration und Transparenz gegenüber allen Stakeholdern
  • Nachvollziehbarkeit und Historie der Testabdeckung
  • Anreicherung der Reports mit eigenen Daten
  • Darstellung nach Commits und Branches

Aus diesen Gründen haben wir FlowCov entwickelt – eine Plattform, die genau diese Anforderungen abdeckt. Sie ermöglicht es, im Rahmen der eigenen Build-Pipeline die generierten Reports hochzuladen, um sie grafisch aufzubereiten und allen Stakeholdern zugänglich zu machen.

Bei der Entwicklung war es uns wichtig, dass die Struktur sich an der bekannten Arbeitsweise mit Git orientiert. Aus diesem Grund gibt es auch in FlowCov Repositories, Branches und Commits. Zu jedem Commit können Reports hochgeladen werden, die die Testabdeckung zum entsprechenden Zeitpunkt darstellen. Am Ende lässt sich so ein Überblick über die Entwicklung der Coverage schaffen. Dabei lässt sich die Testabdeckung nicht nur auf Commit-Ebene anzeigen, sondern sogar zu einzelnen Modellen, Testklassen und Methoden.

Der Einstieg in FlowCov ist sehr einfach und lässt sich in vier Schritten zusammenfassen:

  • Neuen Account unter https://app.flowcov.io/ anlegen
  • FlowCov-Repository anlegen
  • Die FlowCovCoverageRule statt der ProcessCoverageRule verwenden
  • Die Reports mit unserem Bash-Skript lokal oder im Rahmen der Build-Pipeline hochladen

Eine Schritt-für-Schritt-Anleitung haben wir unter https://flowcov.io/docs veröffentlicht. Ein ausführliches Beispiel inklusive GitHub-Action-Pipeline ist unter https://github.com/Nlea/NY-Cheesecake-process zu finden.

FlowCov ist momentan in einer öffentlichen Beta-Version verfügbar. Unser Ziel ist es, eine Plattform zu schaffen, die alle Stakeholder in die Entwicklung und insbesondere in die Qualitätssicherung bei der Implementierung von Prozessen einbezieht. Damit stellt FlowCov ein weiteres Tool für die kollaborative Prozessentwicklung sein.

Um dieses Ziel zu erreichen und dabei auch die Ideen der Community zu berücksichtigen, werden wir FlowCov dauerhaft kostenlos in der Cloud zur Verfügung stellen. Um auch die höchsten Datenschutzanforderungen erfüllen zu können, ist außerdem eine On-Premise-Installation im eigenen Rechenzentrum möglich. Eine separat gehostete (dedicated) Installation in der Cloud ist ebenfalls verfügbar.

Wir arbeiten ständig daran, FlowCov zu verbessern und neue Features hinzuzufügen. Bei Fragen, Ideen oder Feedback sind wir jederzeit in unserem Slack-Channel erreichbar: https://join.slack.com/t/flowcov/shared_invite/zt-gyh1d6d1-esd4cAZJnLuFObsiH7OCNA

Die nächsten Schritte auf unserer Roadmap sind bereits geplant:

  • Vollständiger Support für DMN
  • Unterstützung für Call Activities
  • Visuelle Simulation von Testmethoden

Wir freuen uns auf das Feedback und die Ideen der Community.