Software-Testing

Software automatisiert zu testen ist einer der Grundpfeiler von agilem Software-Development. Jede Änderung eines anderen Team-Mitglieds kann den Rest beeinflussen, um eine negative Beeinflussung einzugrenzen müssen entsprechende Tests entwickelt werden.

Mit dem Projekt I can see Aliens (JSP) habe ich den Einstieg in die Welt von Arquillian gemacht und zeitgleich diverse Formen von Tests. Nachdem ich die JSP-Variante fertig hatte, habe ich angefangen das ganze mittels JSF umzusetzen, allerdings hat sich hier die Umsetzung mehr als umständlich gezeigt. Nicht nur die Transition von den JSF-Tags war hier schrecklich, auch die Erstellung der entsprechenden Tests war dem Aufwand gegenüber nicht gerecht und hat mir verdeutlicht, dass die Technologie JSF nicht mehr dem aktuellen Stand der Technik entspricht.

Unterstützung durch Software

Für eine grobe Orientierung habe ich mich mit Sonarqube angefreundet, welches im aktuellen Zustand out-of-the-box viele Metriken ermittelt und auch ohne Tests einen Anhaltspunkt für kritische Punkte in der entwickelten Applikation, unter anderem gibt es hier auch Metriken für die Testabdeckung.

Ich bin kein Freund von einer 100%-Testabdeckung, denn sobald eine einzige Änderung am System dazu führt, dass 500 Tests angepasst werden müssen, gibt es mehrere Fragen, denen man sich stellen muss:

Entgegen der allgemeinen Auffassung bin ich auch kein Freund von der Testpyramide, bei der mehr Unittests als Integrationstests geschrieben werden sollen, allerdings liegt dies auch eher daran, dass durch CDI und JavaEE viele Elemente durch den umliegenden EE-Container bereitgestellt werden und erst in Kombination eine Einheit bilden.

Letzten Endes kommt es aber auch immer auf das Projekt an, ob man ein Produkt erstellt, oder aber eine kleine Komponente einer komplexen vorhandenen Infrastruktur entwickelt. Alle haben jedoch gemeinsam, dass durch Automatisierung und generelles Vorhandensein von Tests die resultierende Qualität erheblich gesteigert bzw. überhaupt erst ermöglicht wird.

work in progress