Engineering meets Design: Testing
Bei Greenliff arbeiten wir auf unseren Projekten in interdisziplinären Teams, um eine Aufgabenstellung aus verschiedenen Blickwinkeln zu betrachten. So behalten wir den Blick fürs grosse Ganze und stellen sicher, dass wir eine optimale ganzheitliche Lösung finden.
In dieser Blog-Serie wollen wir herausfinden, welche unterschiedlichen Sicht- und Herangehensweisen Teammitglieder aus unterschiedlichen Bereichen auf ein bestimmtes Thema haben. Wir untersuchen, welche Gemeinsamkeiten und Unterschiede es gibt, was das für die Zusammenarbeit bedeutet und viele weitere spannende Aspekte.
Das erste Themengebiet, mit welchem wir uns auseinandersetzen, ist Testing. Testing ist bei unseren Projekten ein wichtiger Bestandteil, der sich von der Konzeption bis zur Umsetzung durchzieht. Wir haben Konstantin, Software Entwickler, und Dominique, Head of Digital Product Design, zum Interview getroffen und ihnen einige Fragen dazu gestellt.
Was versteht ihr unter Testing? Welches Ziel verfolgt ihr, wenn ihr testet?
Dominique: Im Design testen wir, um herauszufinden, wie sich ein digitales Produkt anfühlt und welche Erfahrungen ein User damit macht - wir testen sozusagen die User Experience. Weil jede Anwendung und jeder Mensch, also jeder Benutzer anders ist, gibt es im Design nicht eine korrekte mathematische Lösung. Als Designer muss ich mich mental und emotional in der gleichen Welt bewegen wie der Benutzer. Deshalb beziehen wir so oft wie möglich die User in den Designprozess mit ein, um besser auf deren Bedürfnisse einzugehen.
Konstantin: Im Engineering verstehen wir darunter die Überprüfung auf Korrektheit und die Sicherstellung, dass sich Komponenten und Systeme so verhalten, wie man es im Vorfeld definiert hat – also dass die Software nicht fehlerhaft ist. Wenn wir beispielsweise an einer Stelle im Code etwas ändern, achten wir darauf, dass dadurch keine Probleme an anderer Stelle auftreten.
Zu welchem Zeitpunkt im Projekt wird bei euch getestet?
Dominique: Design ist ein iterativer Prozess und Testing ist deshalb ein integrativer Bestandteil von Anfang an. Wir versuchen bereits möglichst früh zu testen, um sicherzustellen, dass das Design für den Benutzer funktioniert und gut ankommt. Dadurch kann man im Verlauf des Projekts viel Zeit und Geld sparen.
Konstantin: Im Engineering gibt es verschiedene Ansätze, wann getestet wird und hängt stark von der Art des Projekts ab. Bei manchen Projekten arbeiten wir sogar testgetrieben, dass heisst, wir definieren Tests im Vorfeld und führen diese während der Entwicklung immer wieder aus. Die Ergebnisse aus diesen Tests beeinflussen dann wiederum die Entwicklung. Beim iterativen Vorgehen passen wir die Tests jeweils an die neuen Features an und führen die Tests am Ende eines Sprints aus. Bei anderen Projekten entwickelt man zuerst und schreibt am Schluss des Projekts die Tests - der Umfang hängt dann meistens von Zeit und Budget ab.
Was passiert, wenn ihr bei einem Projekt das Testing weglassen würdet?
Dominique: Im Design kann das sehr fatal sein. Deshalb testen wir regelmässig sowohl mit unserem Auftraggeber als auch mit den Endusern und holen uns Feedback ab. Wenn man das nicht macht, dann kann es sein, dass man ein Projekt über einen langen Zeitraum entwickelt und am Ende funktioniert das fertige Produkt beim Enduser nicht. Dadurch verliert man sehr viel Geld und schlimmstenfalls schadet man sogar der Marke des Auftraggebers, beispielsweise bei einem Rebranding, wenn ein Design nicht zu den Werten des Unternehmens passt oder die Lösung kein wirkliches Problem im Leben der User löst. Mit regelmässigem Prototyping und Testing stellen wir sicher, dass so etwas nicht passiert.
Konstantin: Man hat immer das Gefühl, man könne Entwicklung und Testing trennen. Aber bei uns im Engineering ist das gar nicht möglich. Zumindest informell testen wir bereits während der Entwicklung alle paar Minuten. Wenn neuer Code hinzugefügt wurde, müssen wir diesen ausführen um zu sehen, ob etwas Unvorhergesehenes geschieht. Es kommt nie vor, dass man 10.000 Zeilen Code schreibt ohne sie jemals auszuführen, also effektiv auch zu testen.
Dominique: Wichtig ist auch immer, sich möglichst früh Feedback vom Engineering einzuholen, sonst entstehen schnell Unstimmigkeiten. Die technische Machbarkeit ist ein wichtiges Thema - kann das entwickelte Design überhaupt im vorgegebenen Zeitrahmen umgesetzt werden? Wenn man das nicht macht, kommt schnell Stress auf.
Was kann Design / Entwicklung in Bezug auf Testing noch lernen?
Dominique: Es ist zum Teil eine komplett andere Welt. Design hat viel damit zu tun, wie sich etwas anfühlt für den Kunden. Wenn man aus der technischen Welt kommt, sind diese Aussagen zu manchmal nicht so einfach nachvollziehbar. Die Aufgabe des Designs ist es in Projekten immer wieder die Userperspektive einzubringen und für die Engineers nachvollziehbar darzustellen. User Research und User Testing ist dafür ein sehr hilfreiches Mittel sein.
Konstantin: Engineers und Designer nutzen häufig eine unterschiedliche Terminologie. Deshalb muss man sicherstellen, dass man sozusagen “dieselbe Sprache spricht”, um nicht aneinander vorbei zu reden. Designer haben meist mehr Flexibilität, um kurzfristige Anpassungen vorzunehmen. Beim Engineering lassen sich manche Sachen nicht mehr ändern, ohne das ganze neu aufzubauen. Hier muss man sich genau abstimmen, bis wann Änderungen seitens Design möglich sind und ab wann final übergeben werden muss.
Stellt euch vor, ihr seid beim Kunden. Der Kunde hat nur einen Budgetposten fürs Testing – also entweder Design oder Entwicklung. Wie überzeugt ihr ihn, das verfügbare Budget bei euch zu investieren?
Konstantin: Es macht keinen Sinn, das Budget nur auf einen Bereich zu begrenzen. Software und User Experience gehen quasi Hand in Hand. Ist die Software fehlerhaft, dann wirkt sich das auch entsprechend negativ auf die User Experience aus, z.B. durch Bugs oder Abstürze, egal wie gut es vom Design her ist.
Dominique: Ich finde auch, es braucht sicher beides. Wenn in der Designphase nicht getestet wird, fallen in der Entwicklung extrem hohe Kosten an. Mit frühem und schnellem Testen, können wir garantieren, dass das Produkt wirklich bei der Zielgruppe ankommt und dann in der Entwicklung auch entsprechend effizient umgesetzt werden kann.
Konstantin: Ja, es ist leider schon zu häufig passiert, dass Produkte auf den Markt gekommen sind, die tolle Features hatten und gut aussahen und die Leute wollten es nutzen, aber es war einfach grauenvoll fehlerhaft. Genauso andersrum: wer will ein unbenutzbares hässliches Entlein, das vielleicht technisch total abgefahren ist, aber aber keine gute User Experience bietet. Wenn man keine Bauchlandung machen möchte, sollte man schon auf beides achten.
Was sind die Trends im Testing? Wohin geht die Reise?
Dominique: Digitale Kanäle ermöglichen es Design immer besser und präziser zu testen. Ein typisches Beispiel sind A/B-Testings, bei denen man verschiedene Varianten an die Zielgruppe ausspielt und dann schaut, welche besser performt. Dadurch, dass man heutzutage viel mehr Daten zur Verfügung hat, ist Design messbar geworden, was früher nicht der Fall war. Uns Designern hilft dies, Produkt immer optimaler zu gestalten und mehr über das Verhalten der User zu lernen. User können so quasi direkt in den Designprozess involviert werden. Ein anderer Trend ist, dass Design und Engineering immer mehr zusammenwachsen und die Entwicklung digitaler Produkte immer interdisziplinärer wird. Greenliff als Full-Service-Agentur legt grossen Wert auf diese enge Zusammenarbeit. Wir können so viel schneller auf Userbedürfnisse und Einflüsse vom Markt reagieren, und Produkte entwickeln, die nahtlos funktionieren.
Konstantin: Die Trends gehen dahin, dass wir möglichst robuste Tests schreiben, um viel automatisiert abzudecken und zusätzlich noch einige manuelle Tests durchzuführen. Es gibt neue Analysetools, die einem helfen, unbekannte Probleme recht früh zu sehen und zu beseitigen. Man versucht momentan Werkzeuge und Sprachen so zu entwerfen, dass Fehler unwahrscheinlicher werden. Das Design dieser Werkzeuge ist so gestaltet, dass man sie kaum falsch einsetzen kann, dass man viel seltener grobe Schnitzer macht. Das geht sogar so weit, dass man bestimmte Dinge in Form einer Beweisführung implementiert und dann Code dazu generiert. Das verhindert tendenziell, dass logische Fehler drin sind.