Hallo Habr!
Ich beschloss, meine Meinung darüber zu schreiben, ob die Testautomatisierung tatsächlich die Tester ersetzen wird. Erstens, weil ich ziemlich oft eine ähnliche Meinung unter der Junior-Qualitätssicherung höre, die nur ihre ersten Schritte beim Testen unternimmt und bereits befürchtet, dass er es nicht geschafft hat, etwas zu tun.
Fairerweise besteht eine ähnliche Meinung bei älteren Kindern. Sehr oft wird angenommen, dass die Automatisierung fast die einzige Möglichkeit ist, einen manuellen Tester zu entwickeln. Über all das und vieles mehr unter dem Schnitt.
Eine kleine Klarstellung, bevor wir beginnen. In der folgenden Diskussion geht es um funktionale Autotests. Dies sind UI-Tests, die in diesem Zusammenhang nicht mit Unit-Tests verwechselt werden dürfen. Letztere wurden immer geschrieben und sollten von Entwicklern geschrieben werden, und wo dies nicht der Fall ist, ist das Thema einer völlig anderen Diskussion.Kurz über die Geschichte der Automatisierung
Ich arbeite seit einiger Zeit im Testen und habe mehrere Phasen in der Entwicklung der Testautomatisierung gesehen. Mit ihrer Entwicklung änderte sich auch ihre Einstellung zu ihr. Mal sehen, wie es war und versuchen zu verstehen - was wird das alles?
Im Jahr 2010, als ich gerade meine ersten Schritte in der IT-Welt unternahm, kannte nicht jeder ein solches Tool wie Selen. Zu dieser Zeit war die erste Version im Einsatz, die Selenium Remote Control hieß.
Ich erinnere mich, wie wir unser erstes Projekt auf Selen automatisiert haben. Dieses Tool war damals recht einfach, es konnte auf unsichtbare Elemente klicken, manchmal war es falsch, Locators zu finden und sogar beim Empfang von Text einiger kniffliger Elemente.
Ich erinnere mich noch daran, dass unser Chef sie "Stupser" nannte. Als er sah, wie wir sitzen und diese Tests schreiben, sagte er: Schreiben Sie noch einmal Ihre Stupser? Ich hätte es vor langer Zeit nicht überprüft und mit meinen Händen losgelassen.
Aber die Zeit verging, Selenium entwickelte sich, er hatte neue Möglichkeiten. Zuerst gab es eine zweite und jetzt die dritte Version. Es erschien ein Standard (Browserhersteller begannen, selbst Treiber zu schreiben), Selenium erwarb mehrere Protokolle, erwarb Wettbewerber auf dem Markt, und jetzt weiß fast jeder, der in der IT arbeitet, davon, unabhängig davon, ob es zur Qualitätssicherung gehört.
Derzeit gibt es viele Lösungen zum Testen der Automatisierung von Web- und Mobilanwendungen.
Jetzt ist dies nicht mehr nur ein Anstoß, jetzt sieht das durchschnittliche Gespräch von der Personalabteilung zur QS-Position so aus (natürlich übertrieben):
- Guten Tag. Laut Ihrem Lebenslauf ist nicht klar, ob Sie Autotests schreiben können.
"Nein, aber ich bin gut in ..."
- * schon aufgelegt *
Und wenn dies eine Führungsposition ist, hören Sie, dass sie zuerst die Automatisierung einrichten und erst dann QS-Ingenieure einstellen möchten. Oder nicht mieten. Was ist, wenn Sie es nicht tun? Nun, das sind einige Einsparungen. Selbst nachdem Sie alle Tests geschrieben haben, werden Sie entlassen. Und die Entwickler, wenn sie alles tun ... Lassen Sie auf der Website einen Button "Hier bezahlen" und lassen Sie sich in den Sonnenuntergang fallen ... Mir ist etwas schiefgegangen.
Bei solchen Trends stellt sich natürlich die Frage: Wird manuelles Testen die Automatisierung ersetzen? Und wann wird das passieren?
Autotests mit den Augen von Entwicklern
Um diese Frage zu beantworten, lohnt es sich zunächst zu überlegen - und wer schreibt Autotests? Ich habe Firmen gesehen, in denen Autotests von den Entwicklern selbst geschrieben wurden. Und ich habe Unternehmen gesehen, in denen QS-Ingenieure Autotests schreiben. Was ist Ihrer Meinung nach der grundlegende Unterschied?
Ich möchte annehmen, dass der Unterschied im Code liegt. Da sie Entwickler sind, schreiben sie Code besser. Deshalb - ihre Tests sind besser. Dies ist jedoch nicht ganz richtig.
Die Qualität des Codes ist zweifellos ein wichtiger Parameter, aber für die Entwickler selbst ist das Testen nicht die Hauptbeschäftigung. Und deshalb können sie nicht viel Zeit darauf verwenden. Tests werden in Eile geschrieben und der Code lässt oft zu wünschen übrig. Und das ist eine normale Situation, wiederhole ich - dafür sollten sie nicht einen erheblichen Teil ihrer Arbeitszeit aufwenden.
Besonders guter Code ist bei Autotests nicht das Wichtigste. Wichtiger ist, welche Fälle diese Autotests abdecken. Und hier unterscheidet sich das Denken eines QS-Spezialisten bereits erheblich von dem, wie der Entwickler das Produkt sieht.
Betrachten Sie ein Beispiel. Es ist notwendig, die Registrierung auf der Website mit automatischen Tests abzudecken. Es ist klar, dass wir zunächst einen positiven Fall behandeln werden. Wir gingen hinein, erzielten eine Form von fünf oder sechs Eingabefeldern, gingen einige zusätzliche Schritte wie die Bestätigung per Mail oder SMS durch - der Test ist fertig, Sie sind großartig!
Ich behaupte, dass 90% der Entwickler, die nicht mehr für das Schreiben von Autotests verantwortlich sind, dort aufhören werden. Sie werden einen Teil der Fälle nicht beschreiben, da sie ihrer Ansicht nach im Wesentlichen nicht anders sind als die bereits behandelten. Einige werden einfach nicht berücksichtigt. Wie auch immer: "Ich selbst habe den Produktionscode geschrieben, alles ist dort und für immer zuverlässig."
Äquivalenzklassen, Grenzwerte, negative Fälle - all dies bleibt irgendwo am Rande.
QA Engineer Approach
Der QS-Ingenieur verfolgt einen anderen Ansatz. Er hat Erfahrung, ein Verständnis für die Prinzipien des Testdesigns, genügend Zeit und vor allem, um nach Fehlern zu suchen und zu überprüfen, ob dies in seiner direkten Verantwortung liegt. Außerdem sind solche Leute meistens nur daran interessiert, etwas zu überprüfen. Was passiert, wenn Sie hier aus der Reihe stoßen? Und wenn Sie hier die Daten falsch eingeben?
Es ist der Ansatz, der den QS-Ingenieur vom Entwickler unterscheidet. Und es entsteht nicht durch die Fähigkeit, Tests zu automatisieren, sondern durch eine Denkweise. Ein schlechter Tester schreibt schlechte Tests. In diesem Fall wird ein guter Tester mehr Probleme mit der manuellen Überprüfung haben als ein schlechter mit seinen schlecht konzipierten Testfällen.
Welche Schlussfolgerung möchte ich daraus ziehen? Alles ist sehr einfach. Ein QS-Spezialist ist in erster Linie ein Verständnis der Testprinzipien und der Testerfahrung einer Person. Und nicht die Werkzeuge, die er benutzt.
Natürlich reicht es nicht aus, nur ein guter Tester zu sein. Ohne Kenntnisse der grundlegenden Tools wie Bash, Git, SQL usw. ist es unmöglich, in einem Unternehmen effektiv zu arbeiten. Sie müssen studiert werden.
Automatisierung ist das gleiche Werkzeug, sie allein ist weder gut noch schlecht. Es wird Ihre Arbeit nicht effektiver machen, nur weil Sie sie aufgegriffen haben. Er braucht noch bestimmte Fähigkeiten.
Was ist mit der manuellen Überprüfung?
Die manuelle Überprüfung wird nirgendwo hingehen. So oder so, wenn wir ein neues Feature oder ein ganzes Produkt vor uns sehen, werden wir es mit unseren Händen studieren. Wir müssen noch herausfinden, wie es funktioniert, welche Fälle Priorität haben und im Allgemeinen, ob sie jetzt funktionieren. Was bringt es, schnell einen Test zu schreiben, wenn das Produkt kaputt ist?
Und so wird es immer sein, wenn jede neue Funktion oder Änderung eingeführt wird. Zuerst wird ein manueller Überprüfungsschritt durchgeführt. Und nur dann - Berichterstattung oder Aktualisierung von Tests.
Wäre es besser, wenn manuelle Tests und das Schreiben von Autotests von einem Spezialisten durchgeführt würden oder wenn die Verantwortlichkeiten geteilt würden? Ich weiß nicht, es hängt bereits von den Merkmalen ab, wie der Prozess in Ihrem Unternehmen aufgebaut ist. Irgendwo wird es effektiv und daher vorteilhaft sein. Und irgendwo - nein.
Auf die Frage, ob es sich lohnt, Testautomatisierung zu studieren, antworte ich kategorisch mit Ja. Der QS-Ingenieur muss mit der Automatisierung vertraut sein. In der Regel haben Spezialisten mit dieser Fähigkeit mehr Lebensläufe und Gehälter und werden auf dem Markt höher bewertet. Aber wird die Automatisierung die manuelle Überprüfung und das manuelle Testen ersetzen? Natürlich nicht.
Zusammenfassung
So ist dieser Artikel entstanden. Ich teilte meine Meinung und meine Vision des Problems. Ich werde mich freuen, von Ihnen zu erfahren. Teilen Sie dies unbedingt in den Kommentaren mit!
Außerdem hat ein Kollege von Yandex einen Online-Kurs für diejenigen entwickelt, die in die Automatisierung mobiler Tests eintauchen möchten. Informationen und Links finden Sie auf meiner Profilseite. :) :)
Vielen Dank für Ihre Aufmerksamkeit!