Zurück zur Schule: So schulen Sie manuelle Tester im Umgang mit automatisierten Tests

Vier von fünf QA-Bewerbern möchten den Umgang mit automatisierten Tests erlernen. Nicht alle Unternehmen können diesen Wunsch manueller Tester während der Arbeitszeit erfüllen. Wrike veranstaltete eine Automatisierungsschule für Mitarbeiter und verwirklichte diesen Wunsch für viele. Ich habe an dieser Schule genau als QA-Schüler teilgenommen.

Ich habe den Umgang mit Selenium gelernt und unterstütze nun selbstständig eine bestimmte Anzahl von Autotests praktisch ohne fremde Hilfe. Und basierend auf den Ergebnissen unserer gemeinsamen Erfahrung und meinen persönlichen Schlussfolgerungen werde ich versuchen, die Formel für die idealste Automatisierungsschule abzuleiten.

Wrikes Erfahrung bei der Organisation einer Schule

Als die Notwendigkeit einer Automatisierungsschule klar wurde, fiel die Organisation an Stas Davydov, den technischen Leiter der Automatisierungsabteilung. Wer sonst als er kann erklären, warum sie diese Initiative ins Leben gerufen haben, ob sie Ergebnisse erzielt haben und ob sie die aufgewendete Zeit bereuen? Erteilen wir ihm das Wort:

— Im Jahr 2016 haben wir ein neues Framework für Autotests geschrieben und es so gestaltet, dass es einfacher wird, Tests zu schreiben: Es erschienen normale Schritte, die Struktur wurde viel verständlicher. Wir hatten eine Idee: Wir müssen alle einbeziehen, die neue Tests schreiben möchten, und um das Verständnis zu erleichtern, haben wir eine Vortragsreihe erstellt. Wir haben gemeinsam einen Themenplan erstellt, jeder der zukünftigen Dozenten hat sich einen ausgesucht und einen Bericht darüber verfasst.

— Welche Schwierigkeiten hatten die Schüler?

— Hauptsächlich natürlich Architektur. Es gab viele Fragen zum Aufbau unserer Tests. Im Feedback wurde viel zu diesem Thema geschrieben und wir mussten zusätzliche Vorträge halten, um es genauer zu erklären.

— Hat sich die Schule gelohnt?

- Ja auf jeden Fall. Dank ihr waren viele Leute am Schreiben von Tests beteiligt, und im Krankenhaus begann im Durchschnitt jeder besser zu verstehen, was Autotests sind, wie sie geschrieben werden und wie sie gestartet werden. Auch die Belastung der Automatisierungsingenieure ist gesunken: Wir erhalten jetzt um ein Vielfaches weniger Anfragen nach Hilfe bei der Analyse von Tests, da Tester und Entwickler begonnen haben, dies in fast allen Situationen selbst zu bewältigen. Nun, es gibt mehrere interne Vorteile für die Abteilung: Wir haben Erfahrung mit Präsentationen und Vorträgen gesammelt, dank derer es einigen Automatisierungsingenieuren bereits gelungen ist, Präsentationen auf Konferenzen zu halten, und wir haben außerdem ein leistungsstarkes Set an Videos und Präsentationen für das Onboarding von Neueinsteigern erhalten.

In meinem eigenen Namen möchte ich hinzufügen, dass die Kommunikation zwischen unseren Abteilungen auf ein geradezu lächerlich einfaches Niveau vereinfacht wurde. Jetzt muss ich zum Beispiel praktisch nicht mehr darüber nachdenken, welche Fälle und auf welcher Ebene der Atomizität ich automatisieren soll. Dadurch kümmern sich alle Interessenten vollumfänglich um die Testabdeckung, die stetig wächst. Niemand verlangt von anderen das Unmögliche.

Generell sind die Auswirkungen auf die Arbeit der Teams durchaus positiv. Vielleicht denken Kollegen, die diesen Artikel lesen, auch darüber nach, etwas Ähnliches zu tun? Dann ist der Ratschlag einfach: Es lohnt sich, wenn automatisierte Tests für Sie Priorität haben. Als nächstes werden wir über eine komplexere Frage sprechen: Wie kann man das alles so richtig wie möglich organisieren, damit die Kosten für alle Parteien minimal und der Output maximal ist?

Tipps zur Organisation

Die Schule war nützlich, aber wie Stas zugab, gab es einige Schwierigkeiten, weshalb zusätzliche Vorlesungen organisiert werden mussten. Und als ich gerade Student war und mich selbst – in Unwissenheit – mit mir selbst verglich, formulierte ich die folgenden Schritte, um meiner Meinung nach den idealen Weg zu schaffen, Testern beizubringen, automatisierte Tests zu verstehen.

Schritt 0. Erstellen Sie ein Wörterbuch

Natürlich ist dieser Schritt nicht nur für die Qualitätssicherung erforderlich. Ich möchte es jedoch deutlich machen: Die Automatisierungscodebasis muss in einer lesbaren Form gehalten werden. Programmiersprachen – nicht zuletzt Sprachen, und von hier aus können Sie Ihren Tauchgang beginnen.

Zurück zur Schule: So schulen Sie manuelle Tester im Umgang mit automatisierten Tests

Hier ist ein Screenshot einer Aufgabenansicht mit den Namen der Elemente. Stellen wir uns vor, Sie testen Taskview als Blackbox und haben Selenium noch nie in Ihrem Leben gesehen. Was macht dieser Code?

Zurück zur Schule: So schulen Sie manuelle Tester im Umgang mit automatisierten Tests

(Spoiler – die Aufgabe wird im Namen des Administrators per Rest gelöscht, und dann sehen wir, dass es im Stream eine Aufzeichnung davon gibt.)

Allein dieser Schritt bringt die QAA- und QA-Sprachen näher zusammen. Für Automatisierungsteams ist es einfacher, die Ergebnisse eines Laufs zu erklären; manuelle Tester müssen weniger Aufwand für die Erstellung von Fällen aufwenden: Sie können weniger detailliert gestaltet werden. Trotzdem versteht sich jeder. Den Gewinn erhielten wir bereits vor Beginn des eigentlichen Trainings.

Schritt 1. Wiederholen Sie die Sätze

Lassen Sie uns die Parallele zur Sprache fortsetzen. Wenn wir als Kinder sprechen lernen, beginnen wir nicht mit Etymologie und Semantik. Wir wiederholen „Mama“, „kaufe ein Spielzeug“, gehen aber nicht sofort auf die proto-indogermanischen Wurzeln dieser Wörter ein. So ist es hier: Es hat keinen Sinn, in die Tiefen der technischen Merkmale von Autotests einzutauchen, ohne zu versuchen, etwas zu schreiben, das funktioniert.
Es klingt ein wenig kontraintuitiv, aber es funktioniert.

In der ersten Lektion lohnt es sich, eine Grundlage dafür zu geben, wie man Autotests direkt schreibt. Wir helfen beim Einrichten der Entwicklungsumgebung (in meinem Fall Intellij IDEA) und erklären die minimalen Sprachregeln, die erforderlich sind, um mithilfe der vorhandenen Schritte eine andere Methode in einer vorhandenen Klasse zu schreiben. Wir schreiben mit ihnen ein oder zwei Tests und geben ihnen Hausaufgaben, die ich so formatieren würde: ein vom Master abgezweigter Zweig, von dem aber mehrere Tests entfernt wurden. Nur ihre Beschreibungen bleiben übrig. Wir bitten die Tester, diese Tests wiederherzustellen (natürlich nicht über show diff).

Dadurch wird derjenige, der zugehört und alles getan hat, in der Lage sein:

  1. lernen, mit der Schnittstelle der Entwicklungsumgebung zu arbeiten: Zweige, Hotkeys, Commits und Pushs erstellen;
  2. Beherrschen Sie die Grundlagen der Struktur der Sprache und der Klassen: wo Injektionen eingefügt und wo importiert werden, warum Anmerkungen benötigt werden und welche Art von Symbolen dort außer Schritten zu finden sind;
  3. den Unterschied zwischen Aktion, Warten und Prüfen verstehen, wo was verwendet werden soll;
  4. Beachten Sie den Unterschied zwischen Autotests und manuellen Prüfungen: Bei Autotests können Sie den einen oder anderen Handler ziehen, anstatt Aktionen über die Schnittstelle auszuführen. Senden Sie beispielsweise einen Kommentar direkt an das Backend, anstatt eine Aufgabenansicht zu öffnen, die Eingabe auszuwählen, Text einzugeben und auf die Schaltfläche „Senden“ zu klicken.
  5. Formulieren Sie Fragen, die im nächsten Schritt beantwortet werden.

Der letzte Punkt ist sehr wichtig. Diese Antworten können leicht im Voraus gegeben werden, aber es ist ein wichtiger Lehrgrundsatz, dass Antworten ohne formulierte Fragen nicht im Gedächtnis bleiben und nicht verwendet werden, wenn sie letztendlich benötigt werden.

Es wäre ideal, wenn ihm zu diesem Zeitpunkt ein Automatisierungsingenieur aus dem QA-Team die Aufgabe zuweisen würde, ein paar Tests im Kampf zu schreiben, und ihm erlauben würde, diese an seinen Zweig weiterzugeben.

Was Sie nicht geben sollten:

  1. vertiefte Kenntnisse über die Funktionalität der Entwicklungsumgebung und der Programmiersprache selbst, die nur bei der eigenständigen Arbeit mit Branches erforderlich sind. Man wird sich nicht daran erinnern, man muss es zwei- oder dreimal erklären, aber wir schätzen die Zeit von Automatisierungsingenieuren, oder? Beispiele: Konflikte lösen, Dateien zu Git hinzufügen, Klassen von Grund auf erstellen, mit Abhängigkeiten arbeiten;
  2. alles rund um xpath. Ernsthaft. Darüber muss man gesondert, einmal und sehr konzentriert sprechen.

Schritt 2. Schauen Sie sich die Grammatik genauer an

Erinnern wir uns an den Taskview-Screenshot aus Schritt 0. Wir haben einen Schritt namens checkCommentWithTextExists. Unser Tester versteht bereits, was dieser Schritt bewirkt, und wir können in den Schritt hineinschauen und ihn ein wenig zerlegen.

Und drinnen haben wir Folgendes:

onCommentBlock(userName).comment(expectedText).should(displayed());

Wo onCommentBlock ist

onCommonStreamPanel().commentBlock(userName);

Jetzt lernen wir, nicht „Kauf ein Spielzeug“ zu sagen, sondern „Kauf ein Spielzeug im Detsky Mir-Laden, der sich im blauen Schrank im dritten Regal von oben befindet.“ Es muss erklärt werden, dass wir von größeren Elementen nacheinander auf ein Element verweisen (Stream -> Block mit Kommentaren einer bestimmten Person -> der Teil dieses Blocks, in dem sich der angegebene Text befindet).

Nein, es ist immer noch nicht an der Zeit, über XPath zu sprechen. Erwähnen Sie nur kurz, dass alle diese Anweisungen von ihnen beschrieben werden und die Vererbung über sie erfolgt. Aber wir müssen über all diese Matcher und Kellner sprechen; sie beziehen sich speziell auf diesen Schritt und sind notwendig, um zu verstehen, was passiert. Aber überfordern Sie sich nicht: Ihr Schüler kann später selbst komplexere Aussagen lernen. Höchstwahrscheinlich sollten waitUntil, display();, exist();, not(); ausreichen.

Die Hausaufgabe liegt auf der Hand: Ein Zweig, in dem die Inhalte mehrerer Schritte entfernt wurden, die für eine bestimmte Anzahl von Tests notwendig sind. Lassen Sie die Tester sie wiederherstellen und den Lauf wieder grün machen.

Wenn das Testteam außerdem nicht nur neue Funktionen, sondern auch einige Fehlerkorrekturen vornimmt, können Sie ihn bitten, sofort Tests für diese Fehler zu schreiben und sie zu veröffentlichen. Höchstwahrscheinlich wurden bereits alle Elemente beschrieben, es fehlen möglicherweise nur ein paar Schritte. Das wird das perfekte Training sein.

Schritt 3. Vollständiges Eintauchen

So vollständig wie möglich für einen Tester, der weiterhin seinen direkten Aufgaben nachgehen wird. Abschließend müssen wir über xpath sprechen.

Lassen Sie uns zunächst klarstellen, dass alle diese onCommentBlocks und Kommentare durch sie beschrieben werden.

Zurück zur Schule: So schulen Sie manuelle Tester im Umgang mit automatisierten Tests

Total:

"//div[contains(@class, ‘stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

Die Reihenfolge der Geschichte ist sehr wichtig. Zuerst nehmen wir einen beliebigen vorhandenen XPath und zeigen, dass die Registerkarte „Elemente“ genau ein Element enthält. Als nächstes sprechen wir über die Struktur: wann Sie WebElement verwenden müssen und wann Sie eine separate Datei für ein neues Element erstellen müssen. Dadurch können Sie die Vererbung besser verstehen.

Es muss explizit angegeben werden, dass ein einzelnes Element die gesamte Aufgabenansicht ist, es ein untergeordnetes Element enthält – den gesamten Stream, der ein untergeordnetes Element enthält – einen separaten Kommentar usw. Untergeordnete Elemente befinden sich sowohl auf der Seite als auch in der Struktur des Autotest-Frameworks innerhalb übergeordneter Elemente.

Zu diesem Zeitpunkt sollte das Publikum genau verstanden haben, wie sie vererbt werden und was nach dem Punkt bei onCommentBlock eingegeben werden kann. An dieser Stelle erklären wir alle Operatoren: /, //, ., [] und so weiter. Wir fügen der Ladung Wissen über die Verwendung hinzu @class und andere notwendige Dinge.

Zurück zur Schule: So schulen Sie manuelle Tester im Umgang mit automatisierten Tests

Die Schüler sollten verstehen, wie man xpath auf diese Weise übersetzt. Konsolidieren - das ist richtig, Hausaufgaben. Wir löschen die Beschreibungen der Elemente und lassen sie die Arbeit der Tests wiederherstellen.

Warum gerade dieser Weg?

Wir sollten eine Person nicht mit komplexem Wissen überlasten, aber wir müssen alles auf einmal erklären, und das ist ein schwieriges Dilemma. Dieser Weg wird es uns ermöglichen, die Zuhörer zunächst dazu zu bringen, Fragen zu stellen und etwas nicht zu verstehen, und sie im nächsten Moment zu beantworten. Wenn Sie über die gesamte Architektur sprechen, sind die wichtigsten Teile davon aufgrund ihrer Unverständlichkeit bereits vergessen, wenn das Thema Schritte oder XPath analysiert wird.

Einige von Ihnen werden jedoch wahrscheinlich ihre Erfahrungen weitergeben können, wie der Prozess noch weiter optimiert werden kann. Ich freue mich über ähnliche Vorschläge in den Kommentaren!

Source: habr.com

Kommentar hinzufügen