Relativer Wert von manuellen und automatisierten Tests

8

Die Organisation, für die ich arbeite, hat kürzlich einen Testbeauftragten eingestellt, um manuelle Tests durchzuführen. Als ich jedoch darum bat, Zeit als Entwickler für das Schreiben von Komponententests zu haben, war die Antwort, dass die manuellen Tests einen größeren Gewinn bringen würden. Das fühlt sich für mich falsch an und ich suche nach einem Mittel, um manuelle und automatisierte Tests gegeneinander zu bewerten, das wissenschaftlicher ist als ein Bauchgefühl. Ich sage nicht, dass es keinen Platz für manuelle Tests gibt - aber automatisierte Tests scheinen mir zumindest einige der sich wiederholenden und langweiligeren Aufgaben zu beseitigen. Wir haben einen Build-Server, auf dem einige Komponententests und einige Selentests ausgeführt werden. Die Idee des automatisierten Testens ist also kein Problem, sondern wird nur als geringerer Return on Investment angesehen.

Ich kann verstehen, dass jemand, der einen vollständigen End-to-End-Test eines Systems durchführt, das Endprodukt testet, und das ist letztendlich alles, was den Benutzer interessiert, aber es geht langsam voran und wiederholt sich sehr oft. Manuelle Regressionstests bedeuten, dass alle vorherigen Tests wiederholt werden und bestätigt wird, dass sich nichts geändert hat. Wenn es 4 Pfade durch einen Prozess gibt, sind dies 4 manuelle Tests, die jeweils 5 Minuten dauern können.

Gibt es also überprüfbare Fakten und Zahlen, anhand derer ich die Budgetierungszeit für automatisierte Tests begründen kann? Was sind die Nachteile automatisierter Tests, die über die im Link angegebenen hinausgehen?

Simon Martin
quelle
1
Zum Schließen abstimmen - Es gibt nicht genügend Informationen (und wahrscheinlich auch nie) zu den Details der Organisation und Software, die getestet werden müssen, um eine aussagekräftige Antwort zu erhalten. Jede aussagekräftige Antwort wird wahrscheinlich zu spezifisch für die allgemeine Gemeinschaft sein
mattnz
@mattnz Ich weiß zu schätzen, dass eine vollständige Antwort Kenntnisse über die Organisation, die Kultur, die Finanzen usw. erfordern würde, aber konzeptionell würde ich gerne wissen, ob es objektive Argumente gibt, mit denen ich mich für automatisiertere Tests aussprechen kann.
Simon Martin

Antworten:

14

Ich würde überhaupt vorsichtig sein, wenn ich über "manuelle" Tests im Vergleich zu "automatisierten" Tests in einem Return-on-Investment-Kontext (ROI) nachdenke. Es ist eine Form des trügerischen Denkens, wenn der Wert der Automatisierung diskutiert wird (siehe Abschnitt "Zeitmaschine" dieses Links).

Der Time Machine-Irrtum lautet wie folgt: Der einzige Weg, den ROI eines Testansatzes wirklich zu bestimmen, besteht darin, eine Zeitmaschine zu haben, mit der Sie die Zukunft besuchen und sehen können, was passiert ist. Da Sie dies (höchstwahrscheinlich) nicht können, sollten ROI-Schätzungen bestenfalls als Heuristik und nicht als harte Regel angesehen werden. Verwenden Sie aktuelle Informationen, um eine fundierte Entscheidung über einen bestimmten Testaufwand zu treffen. Dies ist für Ihr Team hilfreich oder nicht.

Überlegen Sie sich stattdessen beim Testen, welche Bereiche Ihres Produkts die größte Aufmerksamkeit erfordern und wo die größten Risiken bestehen können. Möglicherweise wurde festgestellt, dass End-to-End-Integrationstests die meisten Probleme mit Ihrer App verursachen. Selbst wenn Unit-Tests Vorteile bringen, sind diese Vorteile möglicherweise nicht die damit verbundenen Kosten wert (Entwickler kaufen, Tests schreiben und ausführen usw.). Versuchen Sie auch, beim Testen über Nutzen / Kosten statt über Vor- / Nachteile nachzudenken.

joshin4colours
quelle
3
Es wartet eine +1 auf Sie, wenn Sie eine Zusammenfassung des Punktes, auf den Sie verlinken, in Ihre Antwort aufnehmen können ...
Vaughandroid
Die +1 gehört dir! :)
Vaughandroid
4
+1 von mir auch, obwohl ich denke, dass es eine gute Chance gibt, dass derjenige, der dem OP sagte, dass "manuelle Tests den größeren Knall für das Geld bieten", auch einige trügerische Überlegungen anstellte.
Doc Brown
10

Zunächst sollten Sie Unit-Tests und andere automatisierte Tests klar unterscheiden . Das sind zwei verschiedene Dinge mit unterschiedlichen Zielen.

Unit-Tests sind Tests zur Validierung sehr kleiner Teile Ihres Codes. Dies sind in der Regel White-Box-Tests, die von einem Entwickler geschrieben wurden, der den Quellcode "im Test" kennt. In TDD werden sie auf Test-First-Weise von einem Entwickler geschrieben, der den Quellcode schreiben wird, nachdem er den Test geschrieben hat. Diese Art von Tests kann von Natur aus nicht an einen "Testbeauftragten" übertragen werden. Wenn Ihre Organisation nicht völlig fehlgeleitet ist, sollten Sie Ihren Chef nicht fragen müssen, ob und wann Sie sie schreiben dürfen - so wie Sie es nicht sollten Fragen Sie Ihren Chef, ob und wann Sie Kommentare in Ihren Quellcode schreiben dürfen.

Integrationstests, Abnahmetests und andere Black-Box-Tests sind etwas anderes. Wenn Sie einen Testbeauftragten haben, der diese Tests nur manuell anwendet und die gleiche Art von Tests immer wieder wiederholen muss, sollte die Notwendigkeit der Automatisierung von ihm und nicht von Ihnen angefordert werden (natürlich sollten Sie dies tun) Machen Sie ihm klar, welche Art von Tests Sie automatisieren können und welche nicht. Er sollte Ihnen sagen, für welche Art von Tests er glaubt, dass Automatisierung sinnvoll ist und für welche nicht. Vielleicht wird er die Automatisierung selbst durchführen und dabei ein Regressionstest-Tool verwenden, oder er wird Sie um Hilfe bitten, um einige Tools für ihn zu erstellen.

Wenn Sie denken, wenn er nicht erfahren oder klug genug ist, um selbst zu diesem Schluss zu kommen, sollten Sie natürlich mit ihm sprechen (und wenn das nicht hilft, vielleicht mit Ihrem Chef). IMHO sollten Sie dies jedoch nur tun, wenn Sie den Eindruck haben, dass Ihr Testbeauftragter aufgrund einer fehlenden Testautomatisierung einen Engpass in Ihrer Produktion darstellt.

Doc Brown
quelle
3

Jeder möchte immer externe Beispiele und Studien, aber diese sind nicht sehr effektiv, um das Management zu überzeugen. Wenn manuelles Testen in Ihrem Unternehmen wirklich ein Engpass ist, haben Sie alle internen Beispiele, die Sie benötigen:

Ein Käfer geht versehentlich aus der Tür. Sie geben an, dass es früher funktioniert hat, und fordern, dass es zu den Regressionstests hinzugefügt wird. Der manuelle Tester gibt an, dass Regressionstests zu lange dauern werden. Sie bieten an, einen automatisierten Test dafür durchzuführen. Manueller Tester begrüßt die Idee, weil er sich überfordert gefühlt hat und mehr Zeit möchte, um sich auf die "interessanteren" Testfälle zu konzentrieren. Mit den Stimmen verärgerter Kunden, die immer noch in ihren Ohren klingeln, beginnt das Management, Ihren Standpunkt zur Testautomatisierung zu verstehen.

Wenn in Ihrem Unternehmen keine derartigen Besprechungen stattfinden, sind keine externen Studien für Sie von Belang.

Karl Bielefeldt
quelle