DIE GRÖSSTEN HERAUSFORDERUNGEN FÜR TECH LEADS IM PROJEKT
Ich war schon immer ein großer Fan von Softwaretests. Warum? Sie geben mir das Selbstbewusstsein, den Code umzuschreiben, und meinem Team die Möglichkeit zur Softwareverteilung in kürzeren Abständen.
Bei der ständigen Arbeit mit automatisierten Tests, sind mir aber ein paar interessante Dinge aufgefallen:
Tests sind leicht einzubauen, aber schwer wieder zu entfernen.
Mein Team hatte schon des Öfteren die Gelegenheit, eine Codebasis zu übernehmen. Das heißt meist eine neue Business Domain, einen neuen Tech-Stack, neue Stakeholder.
Aber das Herausnehmen eines Tests – selbst eines offensichtlich schlechten – verursacht oft ein Gefühl der Unsicherheit: vielleicht gibt es den Test ja aus einem guten Grund – den wir nur nicht verstehen.
Tests sind manchmal zu schlau.
Wenn das Ergebnis ist, dass sich der Code nicht ändert, dürfen Tests im Grunde nicht anschlagen. Sie tun es aber trotzdem häufig, und die Behebung solcher Fehler ist ein Produktivitätskiller. Was hier fehlt, ist das richtige Abstraktionsniveau. Teilst Du manchmal Deinen Bildschirm, um Modultests für Deine neue Methode zu schreiben – Code links, Test rechts? Das kann dazu führen, dass Du Tests schreibst, die zu schlau sind.
Nur echte Daten sind gute Daten.
Wie oft arbeitest Du in Deinen Tests mit selbst erstellten, fiktiven Testdaten? Sehen die wirklich so aus, wie echte Produktionsdaten?
Wenn die Testdaten nicht realistisch sind – welchen Wert hat dann der Testbericht?
Fehler werden erst relativ spät bei der Integration entdeckt – das macht sie besonders teuer.
Falsch positive Ergebnisse gibt es immer dann, wenn die hypothetischen Testdaten in dieser Form in der Produktion nie vorkommen.
Realistische Testdaten helfen mir außerdem, die Business Domain hinter dem Code zu verstehen, vor allem bei großen Codebasen.
Consumer-Driven Contracts (CDC) setzen eine entsprechende Ausbildung voraus.
Als Engineers sind wir es gewohnt, Funktionstests zu schreiben. CDC-Tests haben aber einen anderen Zweck und erfordern im Design eine andere Herangehensweise. Ohne gezielte Weiterbildung auf diesem Gebiet sehen die CDC-Tests dann eher aus wie unbeholfene funktionale Integrationstests.