Spruch, der insbesondere auch das Software Engineering betrifft

Standard

Wer hohe Türme bauen will, muss lange am Fundament verweilen.

 

Wird heutzutage im Zeitalter der Agilität leider allzu oft vergessen. Ein gutes Konzept und ein stabiles Framework sind die Grundlagen langfristigen Erfolgs.

Advertisements

Über die Kunst Software anwendergerecht zu testen

Standard
Es gibt sie, die Anwender mit den „goldenen“ Fingern. Alles ist fertig. Die Software ist getestet und abgenommen. Dann passiert’s. Die Anwender klagen über Fehler. Der Kundenbetreuer ist verzweifelt, der Projektleiter wütend über die Entwickler, die Entwickler verstehen das nicht. Geht doch alles.
Woran liegt’s, das ist hier die Frage.
Oder doch nicht? Lag’s nur am Softwareerstellungsprozess?
Muss: der Anwender-Stakeholder beschreibt vor Beginn der Implementierung zusammen mit dem Softwareprojektleiter was rauskommen soll. D.h., Anwenderprozess, Use cases. Was soll an Bedienung möglich sein, was nicht. Der Softwareprojektleiter achtet auf das „Außenherum“ und macht den Stakeholder auf Abhängigkeiten und Einschränkungen aufmerksam.
Muss: der Softwareprojektleiter gibt dem Entwickler die Beschreibung weiter, ergänzt und erläutert diese. Weißt auf Abhängigkeiten hin. Prüft, ob der Entwickler das verstanden hat. Er definiert Tests, die eine Verifikation der Realisierung der neuen Anforderung zulassen.
Muss: Code review mit einem erfahrenen Entwickler. Der Ersteller des neuen Codes erklärt, was dieser tun soll.
No go: der Entwickler checkt sein Werk ein. Es compiliert ja.
Muss: der Entwickler testet, dass das, was er entwickelt hat, prinzipiell geht.
Herausforderung: Automatisierung von Tests zur Minimierung des Aufwandes und für Nachvollziehbarkeit. Interne Algorithmik gerne mit Unit Tests. Die müssen allerdings vor der Implementierung geschrieben sein und auch verifiziert werden. Sonst nutzen sie dem Entwickler nichts. Anwenderprozesse, schwierig. Aufgezeichnet über Makros. Zwar nachvollziehbar, aber sie können nicht die Umgebung und die Kreativität von Anwendern abbilden. Daher aufwendig und weniger brauchbar.
No go: nur der Entwickler testet. Denn, der weiß, welche Algorithmik er programmiert hat und deshalb testet er nur auch den Weg, der funktioniert.
Muss: Test durch einen Softwaretester. Der Projektleiter erklärt die Anforderung und die Use Cases, sowie die Abhängigkeiten und in welchen Prozess beim Kunden das Ganze eingebettet ist. Ebenso übergibt er die Liste der definierten Tests. Der Softwaretester verifiziert an Hand der Tests und muss dann in einem begrenzten Zeitraum versuchen, mögliches und unmögliches zu tun, um Fehler zu provozieren. Alles sollte nachvollziehbar dokumentiert werden.
No go: Damit wird die Software für die produktive Umgebung freigegeben.
Muss: Anwendertest mit echten Endkundenanwendern auf einem Testsystem. Beurteilung der Bedienbarkeit und testen durch ganz normales Arbeiten.
No go: Anwender testen nicht, weil zu mühsam, keine Zeit, keine Lust, eh unnötig.
Muss: alle Beteiligen (Stakeholder, testende Key User, Projektleiter Softwaretester) müssen aus ihrer Sicht das Go geben.
Ergebnis: einen Monat später Fehlermeldung durch Anwender im fernen Timbuktu. Feststellung Daten korrupt. Nicht erklärbar, oder doch. Andere Länder, andere Denkweisen. Wurde leider nicht in den Key User Test einbezogen. Hat ganz andere Vorgehensweise. Wurde im Test nie überprüft und genau da sitzt der Bug.