Besseres Software Testen mithilfe von Social Transparency

In ihrem ersten Real-World-Projekt haben unerfahrene Software Entwickler oft Schwierigkeiten ihr theoretisches Software Test Wissen konkret anzuwenden. Neue Software Engineering- und Kollaborationsaufgaben führen dazu, dass systematisches Testen gar nicht oder nur teilweise durchgeführt wird. Wenn kein systematisches Testen vorgenommen wird, kann sich ein Missverständnis über dessen vermeintlich geringen Wert und desssen vermeintlich geringe Wichtigkeit in kommerziellen Softwareprojekten festsetzen. Dies hindert die erfolgreiche Karrierebildung des angehenden Ingenieurs.

Was hält junge Entwickler vom systematischen Testen ab?

Verschiedene Gründe begünstigen die Nichtausführung von systematischem Testen. Konzeptuelle Schwierigkeiten bereiten den unerfahrenen Entwicklern Schwierigkeiten. Zum Beispiel wird GUI Automatisierung oft nur mit Überprüfung der korrekten Anzeige von GUI Elementen assoziiert (a la: "Wird der Button an der richtigen Position angezeigt?"). Das ist in einigen Fällen nützlich, jedoch kann und sollte die GUI Automatisierung auch für die Automatisierung von Interaktionen genutzt werden. Ein anderes Beispiel ist der Einsatz von JUnit: Unerfahrene Entwickler verwenden JUnit ausschließlich zur Überprüfung von mathematischen Funktionen. Der Abgleich von nicht-numerischen Sollwerten erscheint schwierig. Hinzu kommen technische Hürden (z.B. zu komplexe Tool-Ketten) oder Einschränkungen der Umwelt, die den unerfahrenen Entwickler beim systematischen Testen im Weg stehen. Die online verfügbaren Tutorials zum Testen sind nicht so leicht auf die eigene Situation übertragbar. Das Auffinden von geeigneten Lernmaterialien gestaltet sich schwer.

Model of the influences of an inexperienced developer's testing behavior.

Bild: Ein Modell der Einflüsse auf das Testverhalten von unerfahrenen Software Entwicklern.

 

Wie gehen die Software Firmen mit Testproblemen von Neulingen um?

Wie gehen die Software Firmen mit Testproblemen von Neulingen um? Irgendwo werden unerfahrene Software Entwickler sich bewerben müssen - dann wollen diese Software Firmen so schnell wie möglich produktive Entwickler beschäftigen.

Wir untersuchen

Social Transparency kann hier helfen!

Social Transparency kann helfen, das Gefälle zwischen erwarteten Testfähigkeiten und den gelieferten Testfähigkeiten zu verringern. Social Transparency beschreibt die "Fähigkeit Interaktionen anderer Benutzer innerhalb und zwischen Internetapplikationen zu beobachten" (Übersetzung) [3]. Die Social Coding Site github.com ist ein lebhaftes Beispiel für eine Kollaborationsplattform mit einem hohem Grad an Social Transparency: jeder Benutzer hat ein eigenes Profil und lädt sein Software Projekt in ein Online-Repository. Projekte können anhand von Attributen gesucht und Änderungen an diesen Projekten können abonniert werden. Teilnahme an einem fremden Projekt kann mit mehreren Browser-Clicks eingeleitet werden. Sämtliche Entwicklungsartefakte (z.B. Source-Code, Commits, Dokumente, Diskussionen,...) können verfolgt, kommentiert und diskutiert werden.

 

Model of the influences of an inexperienced developer's testing behavior.

Bild: Teilnahme-Prozess mit hohem Maß an Social Transparency auf github.com; der Diamand repräsentiert da Software Projekt des Projektbesitzers (PO), das Paket  the package are the newly added improvements by an unknown contributor (C).

Software Teams auf github.com kommunizieren die Testkultur ihres Teams an teils unbekannte Beitragende oder neue Teammitglieder auf verchiedenen Wegen. Klare Testsignale machen Neulingen klar, dass nur getestete Beträge zum Projekt angenommen werden. Z.B. ein bestimmtes Abzeichen auf der Projektseite zeigt anderen Benutzern, dass dieses Projekt Continuos Integration mit automatisierten Tests verwendet. Beitragende zum Projekt verwenden den existierenden Testcode sehr intensiv zur Gestaltung von eigenen Tests: Ähnliche Tests werden kopiert und angepasst. Die offene Umgebung und Social Transparency Eigenschaften machen es einfacher für Beitragende die vorherschende Testkultur zu verstehen und sie zu adaptieren.

Diese Effekte von Social Transparency können eingesetzt werden, um das Onboarding von unerfahrenen Entwicklern zu verbessern. Für Neulinge ist es hilfreich, direkt und nah mir erfahrenen Entwicklern zusammenzuarbeiten und zu verstehen, welche Lösungen sie warum und wie erarbeiten. Eine starke Zusammenarbeit - z.B. in Form von Mentoring - hat Einfluss auf die Produktivität des Mentors. Ein hoher Grad an Social Transparency könnte diesen Informationsaustausch erleichtern: Der Neuling könnte den Testcode des Mentors selbst aufrufen und analysieren - oder ihn benutzen, um technische Fragen zu klären. Klare Testsignale helfen dem Neuling in der Onboarding Phase die vorherrschende Test Kultur zu verstehen und zu adaptieren. Die Entwicklungsumgebung des Neuling könnte mit Zügen von Social Transparency aufgewertet werden und ihm helfen, relevante (z.B. firmeninterne) Lösungen zum Testen oder geeignete Ansprechpartner zu finden.

Kontakt

Die systematische Verwendung von Social Transparency zur Verbesserung bzw Förderung der Testfähigkeiten von unerfahrenen Entwicklern in der Onboarding Phase wird gerade von Raphael Pham (Link zum Profil) untersucht. Bei Interesse können Sie mich kontaktieren (Raphael.Pham@inf.uni-hannover.de).

Tiefergreifende Lektüre

In [1] berichten wir über die Testverhalten von unerfahrenen Entwicklen und welche Faktoren das systematische Testen erleichtern oder behindern.

In [2] haben wir das Testverhalten von Softwareteams auf github.com untersucht. Leif Singer hat darüber einen Blog-Post geschrieben. Dieses Forschungsergebnis wurde auf der ICSE 2013 in San Francisco vorgestellt. Davon gibt es ein Video, dass hier eingesehen werden kann.

 

Referenzen

  • 2014
  • [1] Raphael Pham, Stephan Kiesling, Olga Liskin, Leif Singer, Kurt Schneider: Enablers, Inhibitors, and Perceptions of Testing in Novice Software Teams, In 22th International Symposium on the Foundations of Software Engineering (FSE 2014), Hong Kong, China, 2014, Bibtex. Abstract. PDF herunterladen
  • 2013
  • [2] Raphael Pham, Leif Singer, Olga Liskin, Fernando Figueira Filho, Kurt Schneider: Creating a Shared Understanding of Testing Culture on a Social Coding Site, In Proceedings of the 35th International Conference on Software Engineering (ICSE 2013), pages 112 - 121, San Francisco, USA, 2013, Bibtex. Abstract. PDF herunterladen Link