Quality Assurance Testing mit XRAY for Jira

Quality Assurance Testing mit Xray und Jira

Für ein IT-Unternehmen ist es besonders wichtig ein Software-Produkt mit einer hohen Qualität zu liefern. Die Verbesserung von Softwareentwicklungsprozessen und deren Automatisierung stellt eine erhebliche Herausforderung dar. Die Software muss ständig getestet und die Ergebnisse analysiert werden, um potentielle Fehler schnel zu identifizieren und beheben. Eine Testmanagement-Lösung liefert hierbei umfangreiche Möglichkeiten und Vorteile das Testen von Produkten strukturiert und organisiert zu gestalten. In diesem Blogpost geben wir einen Überblick über unser eigenes Quality Assurance Testmanagement, welches wir mit  Xray Test Management for Jira umsetzen.

Was ist Quality Assurance Testing und wofür braucht man das?

Quality Assurance Testing (Software Testing) umfasst grundsätzlich die Untersuchung eines Softwareprodukts nach Qualität und Mängeln. Bei einem Softwaretest wird ein Programm ausgeführt, mit dem Ziel, Fehler aufgrund von Softwarefehlern zu finden, Informationen bezüglich der Qualität zu sammeln und eine unabhängige Sicht auf die Software zu liefern. Eine Testmanagement-Lösung dient hier als ein zentrales Tool zur Verwaltung ausgeführter Tests sowie zur Visualisierung von ermittelten Informationen in Form eines Dashboards oder Reports. Unternehmen haben hierdurch die Möglichkeit, Risiken in der Softwareimplementierung besser einschätzen zu können. NutzerInnen der Software wird dadurch versichert, einen Produkt mit hoher Qualität geliefert zu haben.

Was wird in der Software getestet?

Die Anforderungen und Funktionen, die getestet werden, sind teils von Projekt zu Projekt sehr unterschiedlich. Es lassen sich jedoch 3 allgemeine Eigenschaften formulieren, die getestet werden. Dazu zählen:

  • Einzelne Funktionen eines Software-Produktes
  • Prozess der Installation in einer neuen Umgebung
  • Load Test (Simulation der Belastung der Software)

Warum Jira für Quality Assurance Testing verwenden?

Jira ist eine Issue- und Projekt-Tracking-Software von Atlassian, welche in den Bereichen Software-Entwicklung, Projektmanagement und Kundenkommunikation sehr beliebt wurde. Wir in der XALT verwenden Jira sowohl zur Fehlerverfolgung, Planung, Verwaltung und Dokumentation der Arbeit als auch für Software-Development, Automatisierung, Support und Testing. Ein Vorteil von Jira ist, dass es ein zahlreiches Angebot an Apps und Plugins gibt, welche in Jira integriert und genutzt werden können. 

Viele agile Teams nutzen aufgrund dieser umfangreichen Möglichkeiten Jira Software für ihr Testmanagement, sodass Software-Entwicklung und Testing übersichtlich innerhalb eines Systems bleibt. Den gleichen Ansatz verfolgen wir bei XALT ebenfalls. Wir verwenden hierfür das Plugin Xray Test Management for Jira, welches Funktionen zu Organisation, Planung und Reporting über den Testfortschritt bei Software-Testmanagement bietet.

Xray Test Management für Jira

Bei Xray Test Management für Jira handelt es sich um ein Add-On für Jira, welches auf Illustration und Reporting von Testergebnissen spezialisiert ist. Zusätzlich werden Software-Entwickler bei der Planung und Organisation von Projekten mit einer erhöhten Anzahl von Tests und komplexen Testplänen in ihrem Testmanagement weiter unterstützt. Xray Test Management für Jira basiert auf Jira und bietet zusätzlich zu den Standardfunktionen der Software von Atlassian die Umsetzung eines kompletten Testlebenszyklus inklusive Planung, Development, Ausführung und Reporting. Es besteht weiterhin die Möglichkeit, Berichte von Test-Reports in interaktiven Diagrammen darstellen zu lassen, um diese für eine Weiterverarbeitung zu nutzen. 

Wie wir das XRAY für Quality Assurance benutzen

Wir entwickeln bei der XALT Add-Ons für Jira, welche aus dem Atlassian Marketplace installiert werden können. Dabei ist es uns besonders wichtig, dass die Plugins fehlerfrei funktionieren. Daher legen wir viel Wert auf die Qualitätssicherung und deren Automatisierung. Wir entwickeln die sogenannten UI-Tests, die Benutzereingaben in Browser simulieren, um das User Interface und die Funktionalität unserer Software zu testen. Für die Entwicklung und Auswertung dieser Tests benutzen wir Xray Test Management für Jira.

Beispiel:

Planung:

Quality Assurance Testing mit XRAY

Für die Planung der Implementation der Test Cases verwenden wir die Test Pläne aus XRAY.

Implementierung:

Zu Beginn werden die Testcases geschrieben. Für unsere Plugins führen wir beispielsweise am häufigsten UI-Tests (=User Interface) durch. Für die UI-Tests benutzen wir das Selenium Webdriver Framework, welches die Simulation und Automatisierung von Benutzereingaben in Browsern ermöglicht. Um die Funktion einzelner HTML-Elemente zu überprüfen, verwenden wir JUnit (Java Unit). Hierbei handelt es sich um ein Framework, mit  welchem Unit-Tests von Klassen und Methoden in Java-Programmen durchgeführt werden können.

Ausführung:

Die Tests werden in unsere  CI-Pipeline (Continuous Integration) integriert und ausgeführt.

Analyse:

Quality Assurance Testing mit XRAY

Anschließend verwenden wir  XRAY zur Analyse und Auswertung der Testergebnisse. Für die Test-Ausführungen werden Statistiken und Diagramme generiert, welche eine detaillierte Übersicht der erfolgreichen und gescheiterten Tests liefert. Dadurch haben wir als EntwicklerInnen-Team die Möglichkeit, die einzelnen Test-Ausführungen genauer zu untersuchen.

Die einzelnen Testdurchläufe können zudem automatisiert werden. Automatisierte Tests werden gestartet, wenn es eine Veränderung in der Software gab. Dies könnte beispielsweise ein neues Feature, wie die Möglichkeit das Editieren der Bilder in unserer Image Gallery sein. Waren die Tests zur Quality Assurance erfolgreich, so wird die Veränderung automatisch implementiert und ein neues Update kann veröffentlicht werden. Sind die Testdurchläufe nicht erfolgreich, dann nutzen wir das XRAY erneut und untersuchen die Ergebnisse nach den Fehlern.

Die Testergebnisse können als Diagramme und Grafiken direkt Ihren Kunden vorgelegt werden. Damit erziehen Sie eine notwenige Transparenz und schaffen Vertrauen für eine weitere erfolgreiche Zusammenarbeit.

Fazit – Quality Assurance Tests mit XRAY

Die Software-Tests sind wichtig, um Fehler so schnell wie möglich zu identifizieren und schmerzlos zu beheben. Dadurch haben wir die Möglichkeit, unseren KundInnen eine konstant qualitativ hochwertige Software-Anwendung zu liefern. Der Vorteil von XRAY liegt vorallem darin, dass mittels Automatismen eine stätige Testumgebung vorhanden ist und Updates durchgehend auf Fehler überprüft werden.

Technische Schuld

Technischen Schulden in der agilen Software-Entwicklung

Stell dir vor du fährst Auto und merkst, dass deine Bremsen nicht mehr richtig funktionieren. Doch statt diese direkt reparieren zu lassen, entscheidest du dich zunächst dazu, dein Auto zu waschen und ein neues Radio zu installieren und deine Bremsen provisorisch mit alten Teilen instand zu setzen. So baust mit deiner Priorisierung, der Durchführung anderer Aufgaben und der quick & dirty Lösung eine Technische Schuld (Technical Dept) auf. 

Technische Schuld im Laufe der Zeit

Früher oder später rächt sich allerdings diese Herangehensweise, da die Technische Schuld nicht wie erwartet linear zunimmt, sondern mit der Zeit exponentiell wächst. 

Indem immer mehr dieser quick & dirty Herangehensweisen innerhalb der Entwicklung verwendet werden, wird der Berg an Schulden immer größer. Dies führt letztendlich dazu, dass zur Lösung der Probleme unzählige Tasks abgearbeitet werden müssen.

Geschuldet ist diese Entwicklung grundsätzlich auch der Tatsache, dass aufgrund der Verwendung von agilen Arbeitsmethoden und DevOps der Druck durch Stakeholder wächst, um in immer kürzeren Zeitspannen mehr zu erreichen. 

Im Rahmen dieses Artikels wird näher darauf eingegangen, was technische Schuld genau ist und welche Ursachen es für diese Schulden gibt. Wie sich diese auf ein Produkt oder Service auswirkt. Und wie man sie effektiv verwalten kann.

Was sind technische Schulden?

Immer dann, wenn unsaubere Wege gegangen werden, entsteht eine neue Schuld gegenüber allen beteiligten Stakeholdern. Diese Schuld wird meist dann sichtbar, wenn genutzte Systeme oder Software nicht richtig funktionieren oder instabil laufen. Um diese Fehler zu beheben, bedarf es anschließend erheblichen Mehraufwand.

Dies lässt sich zusätzlich noch weiter vereinfachen, indem man diese Schuld als Kluft zwischen einer wohlüberlegten, designten, entwickelten und getesteten Software und einer Software, die einfach mal so zusammengeschustert wurde, ansieht.

Woran erkennt man technische Schulden?

  • Fehlende oder keine Dokumentation: Heutzutage soll schnell und agil gearbeitet werden. Da bleibt die Dokumentation oftmals liegen. Dies führt jedoch dazu, dass meist nur wenige wissen, welchen Stand das Projekt bereits hat. Andere oder neue Mitarbeiter bleiben da außen vor und arbeiten stur darauf los. 
  • Wir kümmern uns später darum: Klar, Projekte müssen abgeschlossen werden. Doch wie sagt man so schön? “Machs’ gleich richtig, sonst machst du’s doppelt”.
  • Copy & Paste aus anderen Projekten
  • Abkürzungen und Einsparungen: Qualitätskontrolle und Testings werden beispielsweise aufgrund von Deadlines nicht durchgeführt
  • Bugfix und kleinere Anpassungen benötigen länger zur Implementierung

Welche Ursachen gibt es für den Aufbau von technischer Schuld?

Fehlende Vision oder Konzept der fertigen Software

Es sollte von Anfang an klar sein, was entwickelt werden soll. Fehlt dies, kommt es sehr oft zu Nacharbeiten am Design, User Interface, der Architektur oder Infrastruktur. Die führt während des gesamten Projektes zu Problemen und Qualität am Code.

Fehlende oder mangelhafte Dokumentation von Requirements

Oft sind Software-Anforderungen nur vage oder wenig beschrieben. Dies führt dazu, dass Teams und Mitarbeiter nicht zu 100 % wissen, was genau erreicht werden soll. Dadurch entsteht zusätzliche Belastung und damit neue technische Schuld.

Fehlende Kommunikation und hohe Erwartungshaltung durch das Management

Bei Projektstart, neuen Teams oder bei der Zusammenarbeit mit externen Dienstleistern kann es vorkommen, dass eine zu hohe Erwartungshaltung an das Projekt-Team vorherrscht und möglichst schnell erste Resultate erzielt werden sollen. Deshalb gilt möglichst frühzeitig den maximalen Workload zu kommunizieren und so auf Qualität statt Quantität zu setzen.

Unzureichende Zusammenarbeit der Mitarbeiter

Heutzutage wird in der Software-Entwicklung meist mit agilen Methoden wie SCRUM gearbeitet. Dadurch geht man davon aus, dass alle beteiligten Mitarbeiter diese Methodik beherrschen und auf Anhieb miteinander zusammenarbeiten können. Dies ist oft nicht der Fall und führt schnell zu Misskommunikation und Frust im Team. Tickets bleiben liegen und / oder werden nur spärlich bearbeitet. Und täglich kommen neue Issues hinzu.

Flaschenhalseffekt – Fehlende Mitarbeiter, Zeit und zu viele Tasks als Hindernis

Problematisch wird es weiterhin, die „Schulden“ abzubauen, wenn Mitarbeiter selbst zum Flaschenhals im Unternehmen werden. Oftmals kann es der Fall sein, dass nur wenige Mitarbeiter sich in Systemen auskennen und diese zu pflegen wissen. Sind diese Mitarbeiter dann verhindert, krank oder kündigen im schlimmsten Fall das Arbeitsverhältnis, kennt sich niemand mehr im System aus und es kommt zu einem vollständigen Stillstand. Ein solcher Fall sollte bereits frühzeitig erkannt werden und aktiv dagegen angegangen werden.

Wechsel der verwendeten Technologie oder einer neuen Version

Täglich gibt es Updates, welche Veränderungen im Code und der Herangehensweise verursachen. Dadurch kann es vorkommen, dass existierende Code-Bausteine überflüssig werden, nicht mehr benötigt werden oder Probleme verursachen. Dies muss erst in einer weiteren Iteration behoben werden und führt wiederum zu technischer Schuld.

Fehlender Prozess zur Qualitätskontrolle

Sowohl bei kleinen als auch großen Teams ist Qualität im Code stets zu überprüfen, um herauszufinden, ob am Ende alle Teile perfekt zusammenarbeiten. Fehlende Prozesse zur Qualitätssicherung verursachen letztendlich zusätzliche Arbeit und weitere Tasks zur Problembekämpfung.

Die Ursachen, die dazu führen, dass technische Schuld aufgebaut wird, können vielfältig sein. Die hier aufgelisteten sind ein erster Anhaltspunkt, um direkt und proaktiv zu handeln.

Wie kann mit technischer Schuld umgangen und diese abgebaut werden?

Unabhängig davon, wie technische Schuld zustande kommt, gibt es einige Handlungsempfehlungen, um die Entstehung proaktiv zu vermeiden.

Priorisierung von Tasks

Wurden Versäumnisse ausgemacht, gilt es zunächst, diese zu dokumentieren und anschließend zu priorisieren. Wie diese Versäumnisse priorisiert und angegangen werden, hängt letztendlich von den geschaffenen Rahmenbedingungen (Team, Arbeitsmethode, strategische Entscheidungen oder den verwendeten Tools) ab. 

In agilen Teams ist es meist bereits der Fall, dass in täglichen Meetings oder Sprints die Priorität von Tasks festgelegt wird. Wiederkehrende Issues und andere Tickets werden daher meist höher eingestuft und zeitnah bearbeitet. Zusätzlich ergibt sich die Priorisierung von Tasks auch durch den Impact des Problems auf die ganzheitliche Unternehmung (z.B. Impact auf Usability, Umsatz oder Experience) oder wie wichtig eine Lösung für die Performance des Produkts oder der Software ist. Die restlichen Tickets (z.B. Irrelevant für den derzeitigen Sprint) sollten im Backlog an höchster Stelle abgelegt werden und in den nächsten Meetings mit in den Sprint aufgenommen werden. 

Entwicklung eines Code-Styleguides

Eine einfache Möglichkeit technische Schulden nicht entstehen zu lassen, ist es bereits vor Projektstart Richtlinien festzulegen. Dadurch soll sichergestellt werden, dass nicht mehrere verschiedene Herangehensweisen verwendet werden.

Diese sollten im Optimalfall definieren, wie Code genau aussehen soll. Das heißt beispielsweise an welche Stelle Kommata, Breaks oder Klammern gesetzt werden müssen. Dies bietet zusätzlich den wesentlichen Vorteil, dass die Struktur und Layout des Codes übersichtlich sind.

Code Refactoring

In der Hitze des Gefechts kann es schon mal vorkommen, dass Code einfach so geschrieben wird, ohne auf dessen Struktur oder Lesbarkeit zu achten. Dies erschwert im weiteren Projektfortschritt den Überblick zu behalten, Bugs zu fixen oder neue Features zu implementieren. Um Herr der Lage zu werden, bietet das Code Refactoring eine Herangehensweise den vorhandenen Code Schritt für Schritt zu optimieren und zu überarbeiten.

Tools zur Visualisierung von technischer Schuld

Mit Hilfe von einigen Tools lassen sich Versäumnisse oder Strukturprobleme im Code bereits von Anfang an vermeiden oder zumindest im Nachhinein überprüfen und optimieren. Eines davon ist SonarQube.

Dieses Tool analysiert deinen Code auf Qualität, Sicherheit und gibt an, an welchen Stellen Code-Segmente zum Beispiel doppelt enthalten sind. Weiterhin gibt es eine zeitliche Einschätzung an, wie lange der Abbau von technischen Schulden innerhalb des Codes dauert.

SonarQube bietet die Möglichkeit zukünftige technische Schulden bereits beim Build Prozess der Software zu erkennen und kann so konfiguriert werden, dass Builds den Status “failed” erhalten, wenn die technische Schuld zu groß ist.

Keine Individual Code Ownership zulassen

Wie oben bereits angesprochen, ist es keine gute Idee, nur eine bzw. wenige Person(en) / Entwickler für wichtige System verantwortlich (und unersetzbar) sind. Wenn es ein Problem mit der Web-Anwendung gibt, ist der Code-Eigentümer die Person, die es beheben muss. Code Ownership ist schlecht für Code-Eigentümer, weil es ihr und das Unternehmens-Wachstum bremst. Außerdem verursacht Code Ownership Probleme für die Organisation und für die Code Owner. Wenn niemand weiß, wie ein System funktioniert, kann niemand effektive Code-Reviews geben. Schlimmer noch, der Code wird vielleicht gar nicht überprüft.

Wenn das Team für den Code verantwortlich ist, kann jeder dabei helfen, Designentscheidungen zu treffen. Jeder kann sich an der Diskussion über das Systemdesign beteiligen, Ideen einbringen und die Verantwortung für diese Entscheidungen mittragen. Weiterhin ist es nicht mehr so schlimm, wenn ein Mitarbeiter nicht mehr am Porjekt beteiligt oder krank ist. 

Zusammenfassung

Man muss sich im Klaren sein, dass “technical debt” zunächst keinen offensichtlichen und spürbaren Mehrwert bietet und es gewisse Zeit in Anspruch nimmt diesen abzubauen. Weiterhin werden die meisten Ergebnisse erst mit der Zeit messbar und sichtbar. Jedoch bedeutet dies nicht, auf der faulen Haut liegen zu bleiben und auf das Beste zu hoffen. Man sollte sich am Ende also die Frage stellen, für welche Schulden ist es sinnvoll, diese abzubauen, welche haben den größten Impact auf geschäftliche oder wirtschaftliche Faktoren und bei welchen würde ein Abbau keinerlei Auswirkungen haben.