Programmierblog von Johannes Dienst

Software QS-Tag 2017

Posted by in Konferenz, Softwarequalität, Testverfahren

Der Software QS-Tag 2017 wird von der imbus AG organisiert und war wie schon letztes Jahr vollgepackt mit vielen interessanten Vorträgen. Neu war der Veranstaltungsort: Das Sheraton Hotel am Frankfurter Flughafen. Nachdem letztes Jahr praktisch Überfüllung angesagt war, war es diesmal nicht ganz so kuschlig, dafür aber mit umso mehr Teilnehmern. Gefallen hat mir die perfekte Organisation und die Betreuung als Sprecher! Auch die Speakers Corner war eine super Idee, die gerne beibehalten werden darf. Aufgrund der vielen Vorträge, die ich mir angehört habe, werde ich nur kurz auf die,…read more

0

Code Coverage am Beispiel: Pfadüberdeckung (Path Coverage)

Posted by in Grundlagen, Java, Softwarequalität, Testverfahren

In den letzten beiden Blogposts ging es um die Überdeckungsmaße Zweigüberdeckung und Zeilenüberdeckung. Die Zweigüberdeckung ist ein stärkeres Maß für die Qualität der Abdeckung, da sie die Zeilenüberdeckung enthält. Sie ist also eine echte Obermenge. Die Pfadüberdeckung ist wiederum eine echte Obermenge der Zweigüberdeckung und ist damit als das härteste Maß der Überdeckungsmessung zu betrachten. In diesem Post wird zuerst wieder an einem Beispiel die Pfadüberdeckung vorgestellt. Ziel ist es, eine vollständige Pfadüberdeckung durch die vorhandene Testsuite zu erreichen. Auf los geht’s los 🙂 Pfadüberdeckung die Theorie: Vollständig Die Pfadüberdeckung…read more

0

Code Coverage am Beispiel: Zweigüberdeckungs (Branch Coverage)

Posted by in Grundlagen, Java, Softwarequalität, Testverfahren

Im letzten Blog ging es um Zeilenüberdeckung. Ich habe gezeigt, wie man sie am Beispiel des Game of Life von Conway einsetzt, um bessere Tests zu schreiben, die jede Anweisung mindestens einmal ausführen. In diesem Teil möchte ich zuerst zeigen, warum die Zeilenüberdeckung zwar eine sinnvolle Metrik ist, aber doch nicht ausreicht, um die Qualität der Testsuite abzusichern. Das lässt sich sehr leicht an einem Fehler zeigen, den die bisherigen Tests nicht gefunden haben. Als Zweites möchte ich auf die Zweigüberdeckung eingehen. Diese ist eine echte Obermenge der Zeilenüberdeckung und…read more

0

Code Coverage am Beispiel: Zeilenüberdeckung (Line Coverage)

Posted by in Grundlagen, Softwarequalität, Testverfahren

Wie letzte Woche angekündigt, werde ich diese Woche beginnen, die verschiedenen Überdeckungsmaße für Code vorzustellen. Als Beispielprojekt habe ich mir das Game of Life von Conway ausgesucht, was als interessante Übungsaufgabe Einiges an Logik hergibt. Eine einfache Zelle Die Regeln für Conways Game of Life sind sehr einfach: Eine tote Zelle wird in der nächsten Generation belebt, wenn sie genau drei lebende Nachbarzellen hat Eine lebende Zelle lebt in der nächsten Generation weiter, wenn sie genau drei oder weniger als drei lebende Nachbarzellen besitzt Eine lebende Zelle stirbt in der…read more

0

Das Ziel von Mutationstesten

Posted by in Softwarequalität, Testverfahren

Mit das Interessanteste an einem Vortrag sind die anschließenden Fragen. Beim letzten Mal hatte ich das Gefühl die Fragen zum Mutationstesten nicht zufriedenstellend beantwortet zu haben. Deswegen versuche ich das, in den nächsten Blogs nachzuholen. Die ersten beiden Fragen waren: Kann durch eine Mutation nicht etwas Gutes entstehen? Was passiert, wenn sich zwei Mutationen gegenseitig ausschalten? Gutes durch Mutationen? Mutationstesten führt Änderungen in den Sourcecode ein, die syntaktisch korrekt sind. Diese Änderungen verändern jedoch die Semantik der Codebasis auf jeweils kleine Weise. Danach wird für jede einzelne Mutante überprüft, ob…read more

0

Mutationstesten: Abgrenzung zu anderen Testverfahren

Posted by in Softwarequalität, Testverfahren

Mutationstesten ist ein Verfahren, um Tests aussagekräftiger zu machen. Es ist quasi der Goldstandard unter den Testabdeckungsmetriken. Warum? Es prüft nicht nur, ob eine Zeile Code abgedeckt wurde, sondern auch, ob der/die dazugehörige(n) Test(s) tatsächlich Fehler in dieser Zeile finden können. Dazu werden kleine absichtlich kleine Fehler in den Code eingebaut (Mutationen), die von der Testsuite gefunden werden sollten. Wie das alles genau aussieht, werde ich demnächst beschreiben. Heute geht es mehr um die Platzierung von Mutationstesten im Vergleich zu anderen Testverfahren, wie zum Beispiel Unit-Tests. Was Mutationstests nicht sind…read more

0