Automatisierbarkeit von Softwaretests 4

4.2.3. Testeffektivität
Die Testeffektivität ergibt sich aus der Testüberdeckung, der Fehlerfindungsrate und dem Testaufwand. Je mehr Methoden bzw. Prozeduren ein Testfall durchläuft, desto höher ist die Testfalleffektivität. Gemessen wird dies durch die Instrumentierung des Codes. So kann festgestellt werden, welche Pfade durch den Code während des Testlaufs ausgeführt werden und welche nicht. Dadurch kann die Testüberdeckung genau ermittelt werden. Zu beachten ist jedoch das anfangs genannte Beispiel mit der Funktion Zahlen zu addieren. Hier würde die Testabdeckung auch 100% ergeben, wenn nur ein Test mit zwei positiven Zahlen gemacht wird, obwohl das als Test kaum ausreichend ist.

4.3. Mehr Testen
Wenn ein automatischer Test vorliegt, wird automatisch mehr getestet, da der Entwickler nicht manuell seine Änderungen durchklicken und Testen muss. Stattdessen startet er den automatischen Test und ist nach einem Bruchteil der Zeit fertig. Hierbei muss jedoch die Aussagekräftigkeit des Tests beachtet werden.

4.4. Aufwandsminimierung
Der Testaufwand lässt sich insbesondere durch verringern. Wichtig bei automatisierten Tests ist es, das Richtige zu testen. Hierfür werden die Tests von den Geschäftsanforderungen abgeleitet. Die Komponenten mit hoher Komplexität und kritischen Stellen sollen besonders getestet werden. Die Komponenten die ggf. Seiteneffekteund eine Systemänderung nach sich ziehen ebenfalls. Hierfür werden ganzheitliche, integrative Lösungen für Tester benötigt, die die Planung, Steuerung, Kontrolle und Analyse unterstützen, bzw. automatisieren. Es muss ein Testsystem mit minimaler jedoch ausreichender Größe mit einer Selektion von Testdaten aus dem Produktivsystem erstellt werden. Hierbei gilt es zu beachten, dass die Daten des Produktivsystems durch den Test nicht verändert werden dürfen, bzw. nur sehr bedingt. Eine Löschfunktion für User oder News-Artikel sollte nicht durch einen automatischen Test in der Produktiven Umgebung ausgeführt werden. Daher empfiehlt sich ein abgeschlossenes Testsystem, welches nach dem Testlauf wieder in den Ausgangszustand versetzt werden kann. Dies kann Beispielsweise durch Snapshots einer Virtuellen Maschine oder ein Datenbank-Backup realisiert werden.

4.5. Sicherheit für den Entwickler
Ein wiederholter Test des gesamten Systems etwa nach Korrektur eines Fehlers, oder Einbau einer Erweiterung kann durch einfacher realisiert werden. Dadurch können unerwünschte Seiteneffekte durch diese Änderung aufgedeckt und behoben werden. Der Entwickler, der die Änderungen nach dem Test auf das Produktivsystem überträgt, kann bei einer gut getesteten Software viel beruhigter sein, als bei einer ungetesteten. Er kann fast sicher sein, dass seine Änderung den produktiven Einsatz der Software nicht negativ beeinträchtigt. Schon das schreiben der Tests führt dazu, dass der Entwickler nochmal über die erstellte Funktion nachdenkt und ggf. logische Fehler entdeckt, wie etwa ein größer-Zeichen, statt einem größer-gleich-Zeichen.

5. Negative Auswirkungen der Automatisierung
Ein schlecht erstellter Test, der eine komplexe Funktion mit nur einem Aufruf als fehlerfrei deklariert, ohne diverse eventuelle Fehlerquellen abzudecken, wie etwa leere Eingaben, negative Zahlen etc., kann unter Umständen zu schlechterer Software führen, als wenn es keinen automatischen Test gäbe. Der Entwickler kann sich hierbei nicht auf das Ergebnis des Testlaufs verlassen und die Aussagekraft des Tests ist nicht gewährleistet.

nächster Teil

Dieser Beitrag wurde unter Sonstiges abgelegt und mit , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.