2010-04-17 5 views
7

Gibt es einen Grund für die Automatisierung von Tests, die sich auf GUI (und nicht auf die darunter liegenden Dinge) konzentrieren? Meiner Meinung nach sollte GUI (und Änderungen daran) immer von einer realen Person getestet werden.Sollten GUIs eigene automatisierte Tests haben?

Was können Sie mit den automatisierten GUI-Fokussiertests erzielen? Meine eigene Erfahrung ist, dass GUI-Fokussiertests fast immer kaputt sind, weil jemand aus einem ganz guten Grund etwas verändert hat. Sie scheinen selten etwas Interessantes zu finden.

Antwort

4

Dies ist eine schwierige Frage. Automatisierte Test-Tools und Frameworks leisten gute Arbeit und sind den Aufwand wert, solange sich die Benutzeroberfläche nicht zu sehr ändert. Das Problem beim automatisierten Testen ist, dass es genau dann bricht, wenn Sie es am meisten brauchen: wenn sich die GUI während eines Entwicklungszyklus schnell ändert.

Als Ergebnis habe ich einen hybriden Ansatz für die Projekte, die ich führe und führe, festgelegt. Ich verwende gerne manuelle Tests für Bereiche der GUI, die sich während eines Entwicklungszyklus schnell ändern. Sobald die Dinge ziemlich stabil sind, führen wir automatisierte GUI-Tests durch (z. B. Selenium für Web-Apps), die wir in den Build-Prozess einbetten, um zukünftige Regressionen zu vermeiden. Wenn möglich, schreiben die QA-Leute die automatisierten Tests. Manchmal müssen Entwickler mit QA-Testern zusammenarbeiten, um dies zu tun, wenn das automatisierte Tool zu Code-intensiv ist.

Dieser hybride Ansatz scheint gut zu funktionieren, solange wir gute Entwurfspraktiken verwenden, die Probleme ordnungsgemäß trennen, sodass Komponententests die gesamte zugrunde liegende Logik korrekt ausführen können. Die einzige Sache, die Sie vermeiden müssen, ist das Weben der Anwendungslogik in die GUI-Ebene.

+0

Ich stimme Ihrem Ansatz "Erstellen Sie automatisierte Tests spät im Entwicklungszyklus" zu, wenn die GUI stabiler ist. Das Schreiben automatisierter Tests für eine GUI ist auf einer sich ständig ändernden GUI sehr schwierig. –

0

Hängt von "was" Teil der GUI Sie testen. Testen Sie das Verhalten des Systems mit einem GUI-Test oder möchten Sie testen, ob Ihre GUI immer korrekt angezeigt wird.

In letzterem Fall kommt es auf Ihre Anwendung an. Wenn Layout und Design wichtig sind, stimme ich zu. Wenn es sich jedoch um eine App handelt, deren Kernfunktionalität nicht das Layout selbst ist, ist es nicht sinnvoll, Zeit für das Testen des Layouts zu investieren. Es wäre besser, einen GUI-Test zu schreiben, der die Funktionalität mit Hilfe der GUI anstelle einiger Funktionsaufrufe testet. Auf diese Weise wird echtes Verhalten besser simuliert.

0

Menschen sind großartig beim Testen von GUIs. Sie sind jedoch teuer. Automatisierte Test-Tools reduzieren zumindest theoretisch die Kosten für das Testen von UIs. Wenn Sie häufig freigeben, kann die manuelle UI-Testzeit sehr schnell durch das Dach gehen.

Ich persönlich habe noch nie automatisierte UI-Test-Tools Pay-Pack ihre Setup-Kosten gesehen, für die Projekte, die ich schon war. Ihre Tests neigen dazu, spröde zu sein und reagieren nicht gut auf Layoutänderungen. Aus diesem Grund zögere ich, ihnen viel Vertrauen zu schenken. Ich würde mich jedoch darüber freuen, falsch erwiesen zu werden.

0

Das ist möglich. Für den Browser haben Sie Testanzüge wie Selen, die mit dem Browser interagieren.

2

Kommt drauf an.

Wenn Ihre GUI eine relativ dünne Schicht über Ihrer Geschäftslogik ist und kleinere Bugs in der GUI für Ihr Unternehmen nicht kritisch sind, dann sollten Sie Ihre GUI nicht unbedingt mit Komponententests testen. Diese Zeit könnte vielleicht besser in das Testen von kritischem Code investiert werden.

Wenn Ihre GUI sehr anspruchsvoll ist und ein großes Verkaufsargument für Ihre Anwendung ist, möchten Sie möglicherweise Zeit investieren, um sie sowohl automatisch als auch manuell zu testen. Automatisches Testen ersetzt manuelle Tests nicht vollständig, da Sie immer noch menschliche Tester benötigen, um sicherzustellen, dass die GUI korrekt aussieht und dass die Oberfläche klar und intuitiv ist.

Weitere Informationen zum Testen von GUIs finden Sie unter Wikipedia - zum Beispiel durch Maus- und Tasteneingabe und Wiedergabe. Es gibt auch a list of software, die Ihnen beim Erstellen von GUI-Unit-Tests helfen kann.

+0

Ich habe noch nie von einer * unwichtigen * GUI gehört. –

+2

@Robert Harvey: Eine GUI, die nur von internen Mitarbeitern - vielleicht nur von anderen Entwicklern - verwendet wird, erfordert möglicherweise weniger Tests als eine GUI, die an Ihre Kunden geliefert wird. Sie sollten eine Kosten-Nutzen-Analyse durchführen. –

0

Meine Herangehensweise in dieser Situation ist in der Regel Unit-Layer ohne Unit-Test zu testen, so weit wie möglich automatisierte Tests für die GUI zu verwenden und dann manuell alles zu testen, was übrig ist. Ich verwende auch manuelle Tests zur Ad-hoc-Fehlererkennung, um fehlende Testfälle zu identifizieren.

Für mich bietet dies das beste Verhältnis von Testabdeckung zu Kosten. Letztendlich hängt es davon ab, was Sie erreichen wollen - ist das eine geschäftskritische Software oder eine einfache App, bei der das Scheitern nur eine Unannehmlichkeit ist?

0

Sie sind besser, wenn der Usability-Test an erster Stelle steht. Außerdem, wie gehst du GUI-Einheit testen? Was wäre die Ausgabe? Wenn jemand etwas anklickt und bekommt, wonach er "anfänglich" gesucht hat? Was sollte als nicht akzeptiertes Verhalten betrachtet werden?

Sie werden Tonnen von Bullcrap durchschauen. Benutzerfreundlichkeit ist ein großes Wort, aber einfacher Usability-Test ist die Einstellung eines Kumpels von Ihnen (vorzugsweise nicht jemand, den Sie kennen, ein Freund eines Freundes), die Sie in der Anwendung "Zielgruppe" sein könnten. Ein Camtasia/Camstudio (Desktop-Aufnahme-Software, könnte gut sein, sein Gesicht aufzunehmen). Gib ihm einige Aufgaben auf einem Blatt Papier (oder persönlich, manchmal ist Papier besser, weil du dich nicht einmischst - lebensechteres Szenario). Und schau was er macht!

Wenn er Hilfe benötigt, dann sehen Sie Abschnitte der Aufmerksamkeit für die zukünftige Entwicklung. Niemals versuchen, den Kerl zu beeinflussen, der ihm Dinge wie "aber schau hier ist dieser Knopf, ich dachte es ist so bequemer" sagt.

Sie werden eine viel bessere Ausgabe eines solchen Tests erhalten, anstatt Ihre Zeit mit Computer-zu-Computer-Tests zu verschwenden. GUI ist eine Schnittstelle zwischen Mensch und Computer. Unit Test Gui ist wie der Versuch, das Buch, das Sie gerade geschrieben haben, zu analysieren und zu sehen, ob es gut ist. Sicher wird es Rechtschreibfehler zum Beispiel zu beseitigen, aber es ist eine sehr kleine Sache -> im Vergleich zu realen Zielen des Buches.

+0

Usability-Tests sind nicht wirklich dasselbe wie automatisierte Tests und haben nicht die gleichen Ziele. –

+0

Ich bin mir sicher. Aber ich sehe wenig Sinn in Unit-Test-Schnittstelle. Zu viele Operationen adn Daten, um irgendwelche Ergebnisse zu erhalten. Ich weiß, dass es Unternehmen gibt, die solche Tests durchführen. Große Supercomputer zu drehen, um alles Mögliche in Formulare zu schreiben - für mich ist es immer noch Zeitverschwendung. –

0

Ja, natürlich sollte GUis dort eigene Unit Tests haben. Siehe zum Beispiel IcuTest.

Das Problem ist, dass GUI-Test kompliziert ist. Sobald du das gelöst hast, gehört dir die Welt.

0

Wenn Sie wiederholte monotone Aufgaben im GUI-Test haben und dies für mehrere Kombinationen von Browsern und Betriebssystemen tun müssen, lohnt sich die Automatisierung der GUI. Mit der Pflege von Techniken kann die berühmte Frage "UI-Änderungen werden Automatisierung irrelevant machen" beantwortet werden.