Theoretisch sollen Testautomatisierungsprogramme oder -tools den Testern die Freizeit erleichtern und uns eine zusätzliche Entspannungsdecke für unsere Bewertungsabdeckung bieten.
Und so viele Unternehmen implementieren keine skalierbare, starke und gute Testautomatisierungsinfrastruktur, die die investierten Ressourcen zurückgibt und sie einsparen könnte. Einige haben schriftliche Testautomatisierungsjobs "weggeworfen" , andere hatten einen anhaltenden Kampf mit ihren Zielen, eine stabile Automatisierungssuite zu erhalten.
Im Laufe der Jahre habe ich beobachtet, wie viele Unternehmen versuchten, ihre Automatisierungsbemühungen auszuführen. Ich habe beobachtet, wie schriftliche Projekte weggeworfen, Frameworks gewechselt und Manager entlassen wurden, weil sie nicht das versprachen, was versprochen oder als Ziel festgelegt wurde.
Es gibt viele Gründe für ein Versagen, obwohl Automatisierung auf lange Sicht durchaus sinnvoll ist, müssen wir verstehen, dass es weitaus schwieriger ist, wie es scheint.
Im Folgenden finden Sie einige Gründe, die Sie kennen müssen, bevor Sie mit dem Aufbau Ihres Testautomatisierungsprojekts beginnen:
Fragen analysieren und stellen: Ein Testautomatisierungsjob ist ein Job wie jedes andere Anwendungsprojekt und sollte wie einer behandelt werden. Wie würden Sie die Planung eines Softwareprojekts verarbeiten? Lassen Sie sich von dieser Idee leiten, wenn Sie über die Implementierung Ihres Testautomatisierungsprojekts nachdenken. Wen würdest du für den Job auswählen? Wer wird das produzierte Produkt verwenden? Welche Sprache oder welcher Rahmen eignet sich am besten für den Job? Würden Sie die Herausforderungen und ihre Richtlinien verstehen und einen Blick darauf werfen? Würden Sie eine Architektur komponieren, von der Sie selbst nichts wissen, oder würden Sie einen Berater anrufen, der Sie mit ein paar Gedanken berät?
All diese Fragen sind einfach die Spitze dieses Eisbergs dessen, was Sie sich stellen sollten, bevor Sie eine Codezeile oder sogar eine Testsituation schreiben.
Unzureichende Fähigkeiten: Lassen Sie mich Ihnen eine Frage stellen. Würden Sie schlechteren oder unerfahrenen Programmierern erlauben, jemand, der nicht versteht, wie man einen sauberen, durchsuchbaren Code erstellt - gestalten Sie das Design Ihrer App und schreiben Sie es von Grund auf neu? Ich denke, dass die Antwort nein ist. Warum glauben so viele Unternehmen, dass Qualität von einer Evaluierungsautomatisierungsinfrastruktur ohne die Erfahrung und die Fähigkeiten implementiert werden kann? Wenn das engagierte Personal nicht über Erfahrung und Wissen verfügt und Sie nicht vorhaben, jemanden einzustellen, der dies tut, müssen Sie über die Verwendung codeloser Automatisierungstools nachdenken.
Unrealistische Erwartungen / Ansatz: Ich werde diesen in zwei Teile teilen. Das erste ist ein fehlerhaftes Verständnis des ROI (Return of Investment) der Testautomatisierung, und die zweite Komponente sind unrealistische Erwartungen pro Zeitrahmen. Es gibt einen Job, der so gut ist, wie er von Ihnen gemacht wurde, und Sie können nicht erwarten, dass etwas, ohne Zeit zu investieren, Wert liefert. Ich habe mit einem QS-Ingenieur gesprochen, der mir sagte, er habe 6 Stunden pro Woche Zeit, um eine Undercover-Infrastruktur aufzubauen. Was sollten Sie von ihm erwarten, um 6 Stunden zu erreichen?
Damit dies funktioniert, müssen Sie sich erkundigen:
- Was genau möchten Sie zusammen mit Ihrer Testautomatisierung erreichen?
- Was wäre ein fantastischer Wert für die Anstrengungen / die Zeit?
- Was sind die Kriterien für die Leistung?
- Wie viel Zeit / Geld sind Sie bereit, um dies zu erreichen?
Automatisierung ist keine "Launch and Forget" -Aufgabe. Sie möchten anerkennen, dass es sich um einen kontinuierlichen Prozess handelt, der Wartung, Gruppenarbeit und Weiterentwicklung erfordert.
Ich muss zugeben, dass einige Unternehmen nach dem, was ich gesehen habe, es leider nur als eine Möglichkeit ansehen, einem QS-Ingenieur einen Undercover-Job zu bieten, um einen Arbeiter zu erhalten oder etwas " Würze " in seine wöchentliche Routine zu stecken. Versteh mich nicht falsch, ich sage nicht, dass wir unsere Arbeiter nicht schützen oder ihnen die Zeit zum Lernen und Fortschreiten geben sollten, ich sage nur, dass es mit realistischen Erwartungen und Transparenz für den Arbeiter, das selbst, in Einklang gebracht werden sollte .
Unzureichende Planung: Ein fantastisches Automatisierungsprojekt muss mit einem übergeordneten Plan und Plan beginnen, der sich zu einem umfassenden technischen Stil entwickelt. Selbst die Strategie "Einheitsgröße" kann für Ihren Erfolg katastrophal sein. Was für ein einzelnes Unternehmen hervorragend funktioniert hat, bedeutet nicht unbedingt, dass es die Arbeit für Sie erledigen würde. Diese Ankündigung kann für eine Instrumentenwahl zutreffen. Wann immer Sie die betreffende Technologie nicht wirklich verwenden müssen, wird es zum Modewort. Dies ist immens wichtig zu beachten. Es gibt eine große Anzahl von Open Source- und kommerziellen Tools, die ein hohes Preis-Leistungs-Verhältnis bieten können, ohne auch nur die Alternativen und die Vorteile / Alternativen zu berücksichtigen, die diese Tools bieten können. Wählen Sie ein Werkzeug, das Ihren Anforderungen entspricht. Hier sind meine zwei Cent - es ist weitaus besser, für eine Lösung zu bezahlen, als viel Zeit zu verschwenden (das wird weitaus teurer als die Kosten des Programms).
Während wir nun weiter über die Art und Weise diskutieren, wie wir unser Design planen, müssen wir über unsere umfassende technische Architektur und die Geschäftsanforderungen nachdenken. Hier sind nur einige der Aspekte, die Sie berücksichtigen sollten:
- Stellen Sie sich Jobs, Module und Geschäftsabläufe vor, die die Leute untersuchen würden?
- Was ist die geplante Richtlinie für jede Ausführungsphase? (Sanity, Regression, CI / CD-Paket?)
- Was sind die wichtigsten gemeinsamen / gemeinsamen / sich wiederholenden Abläufe / Funktionen?
- Wie planen wir jeden Test für ein kurzes eigenständiges Artefakt? (SetUp und TearDown, Abhängigkeit von externen Daten anstelle von generierten Auswertungsdaten. Was muss vor jedem Test ausgeführt werden, Suite-Klasse?)
- Wie verhindern wir, dass eine Bewertung eine andere "bricht", wenn sie gleichzeitig ausgeführt wird?
- Wie können wir eine gute skalierbare, saubere und angemessene Atmosphäre schaffen? (Mock-Server, Datenbankfälle, Bereinigungsskript, Browsereinstellungen, Grid / Server-Konfigurationen, Einrichtung und Bereinigung, virtuelle Umgebung oder Docker-Container).
- Was genau bauen Tools, wenn wir verwenden?
- Wie genau könnten unsere Abhängigkeiten verwaltet werden?
- Wo ist unser Projekt gespeichert?
- Wie viele Ingenieure arbeiten an dem Projekt und wie würde das Variantenmanagement verwaltet?
- Welche CI-Tools eignen sich am besten für unsere Builds?
- Implementieren Sie den CI / CD-Workflow?
- Wo werden Sie Ihre Tests und Ressourcen ausführen, mit denen Sie Ihre eigene Ausführungsplattform entwerfen können? (Werden Ihnen die Mittel für den Kauf von Cloud-Lösungsgenehmigungen zur Verfügung gestellt? Haben Sie die Tools oder den Support, um Ihre eigene Selenium Server-Infrastruktur aufzubauen?)
- Welche Art von Tests werden bald automatisch durchgeführt? (API, visuelle Konzepte, Serverprozesse, Web- / UI-Automatisierung, Mobile - Android / IOS).
- Gibt es einige große Datensammlungen, lange Abläufe, komplizierte Prozesse und Integrationen, die eine zusätzliche Bewertung erfordern würden?
- Was sollten wir über die GUI testen und was könnte sicherer sein, über die API zu überprüfen?
- Welche Protokolle, Berichtsmechanismen, Handler und Listener müssen wir genau implementieren, um die Bewertung und das Debuggen der Grundursache einfacher zu gestalten? (Was ist eine einstündige Automatisierungssuite, wenn Sie das Ergebnis eines Tages verstehen?)
- Welche Metriken / Berichte / Ausgaben sollten die Läufe liefern?
- Welche Integrationen wollen wir genau? (Berichterstellungsprogramme, ALM-Tools, Bug-Tracker, Evaluierungsverwaltungsprogramme).
- Wer darf die Infrastruktur zusammenstellen und wer soll die Tests durchführen? (Kann es überhaupt einen Zweig zwischen beiden geben?)
- Wer ist dafür verantwortlich, den Automatisierungsingenieuren die Geschäftsabläufe / Testfälle / Geschäftslogik anzubieten, die automatisch erfolgen sollen?
- Gibt es eine POC-Phase (Proof of Concept), um zukünftige Ziele zu bestimmen?
Das sind nur einige der Fragen auf den Punkt gebracht, und was Sie daraus machen sollten, ist das
Eine geeignete Werkzeugoption, überlegene Planung / Design, wird wahrscheinlich den Unterschied zwischen Misserfolg und Erfolg erzeugen.
Alles automatisieren : Ein wichtiger Punkt ist, dass nicht das, was automatisch sein kann oder muss. Manchmal, wenn es um Wahrnehmung oder falsche Managemententscheidungen geht, automatisieren wir alles, was dem Tester in den Sinn kommt, oder konvertieren Testfälle blind in Skripte. Erstens sind nicht alle Auswertungen zur Automatisierung geeignet. Zweitens sind die Testfälle selbst für den Job nicht akzeptabel. Dies endet in einer nicht zu wartenden Reihe von automatischen Tests, die unmöglich durchzuführen sind, und leider wird dies in den meisten Fällen dazu führen, dass viele unserer schriftlichen Arbeiten markiert werden. Die Automatisierung bietet keinen zusätzlichen Wert, wenn Ihr Unternehmen nicht über die Mittel verfügt, um Automatisierungsteams mit Zehntausenden von Testinstanzen zu unterhalten, die gelegentlich dieselbe Geschäftslogik überprüfen.
Wir müssen auch einen klaren Plan darüber erstellen, was für die Wartung jedes Automatisierungsaufbaus erforderlich ist. Was ist in unserer Regression enthalten? Was wird als unsere geistige Gesundheit beschrieben? Was ist sicher und zuverlässig genug, um in unsere CI / CD-Pipeline einzutreten?
Test-Automation erfordert solide Planung, Verständnis, Engagement und Engagement, um einen angemessenen Wert zu erzielen.
Mangel an Fähigkeiten / richtigen Anweisungen, falsche Auswahl der Werkzeuge, unzureichende Ressourcen, mangelnde Vorbereitung, unrealistische Vorfreude, die ein Projekt zum Scheitern bringen können.
Ich hoffe, dass dieser Bericht positive Auswirkungen hat und einigen von Ihnen hilft, eine produktive Denkweise zu verfolgen.