Wir analysieren im Detail, wie manuelle Tests durchgeführt werden können, wenn dies besser ist als automatisierte Tests, was Tester tun müssen und wie sie ihre Karriere vom Junior bis zum Testleiter aufbauen können. Der Leitfaden wurde gemeinsam mit dem Leiter der Testabteilung von Agima Darina Gordeeva erstellt.

Hallo! Ich heiße Darina Gordeeva. Ich arbeite seit fast 3 Jahren in der Firma AGIMA als Abteilungsleiter. Im Bereich Prüfung und Qualitätssicherung seit mehr als 6 Jahren. Während dieser Zeit wechselte sie von einem Junior zum Abteilungsleiter, testete Eisen sowie mobile und Webanwendungen und automatisierte und konfigurierte QS-Prozesse. Heute werde ich Ihnen die Funktionen, Fähigkeiten und versteckten Probleme des manuellen Testens erläutern.
Denken Sie daran, dass jeder Leser, der das Habr-Promo-Wort verwendet hat, einen Rabatt von 10.000 Rubel für seinen Lieblingskurs erhalten kann, während der fleißigste und aufmerksamste einen Rabatt von 25.000 Rubel erhalten kann, indem er Rätsel aus Materialien löst, die gemeinsam mit der Agentur Agima erstellt wurden:
Effizienz, Flexibilität, Improvisationsmöglichkeit und andere Vorteile
Heute gibt es viele Test-Frameworks, die fast alle vorhandenen Sprachen unterstützen. Es scheint - Sie können nehmen und automatisieren. Aber auch jetzt sind manuelle Tests wichtig.
Eine der Erklärungen für ihre Notwendigkeit ist, dass wir durch manuelles Testen der Funktion viel schneller Informationen über den Zustand des zu analysierenden Produkts und über die Qualität der Entwicklung erhalten können. Darüber hinaus müssen während der Automatisierung vorgefertigte Fälle häufig geändert und aktualisiert werden, und das Schreiben von Autotests dauert einige Zeit.
Gleichzeitig kann es während des Entwicklungsprozesses zu Rückmeldungen des Kunden kommen, wenn er eine Funktion im fertigen Produkt sieht, die er vor der Veröffentlichung ändern möchte. Wenn Sie bereits Softwaretests dafür vorbereitet haben, müssen Sie diese neu schreiben. Das Aktualisieren von Fällen, Autotests und deren Überprüfung nimmt wertvolle Zeit in Anspruch, die zum Aktualisieren dieser Funktion selbst verwendet werden kann.
All dies bedeutet, dass das Hauptziel manueller Tests darin besteht, zunächst sicherzustellen, dass die deklarierte Funktionalität funktionsfähig ist, keine Fehler aufweist und die erwarteten, geplanten Ergebnisse liefert. Ohne sie können Sie nicht sicher sein, ob Sie daran arbeiten können. Dies gilt insbesondere für Funktionen, für deren Implementierung die spätere Entwicklung gebunden ist. In diesem Fall wird der Aufwand bei der Erstellung von Autotests für diese Funktionen zu einem blockierenden Faktor für die gesamte Produktentwicklung, wodurch Termine verschoben und Termine unterbrochen werden. Der Moment, in dem die Zeit für die Automatisierung von Fällen gekommen ist, wird früher oder später kommen - aber versuchen Sie nicht, sie künstlich einzusetzen, um die völlige Ausnahme der Handarbeit zu erreichen.
Darüber hinaus kann die Automatisierung in den frühen Phasen der Anwendungsentwicklung recht teuer sein. Sie benötigen einen Spezialisten mit bestimmten Qualifikationen (und möglicherweise mehr als einer). Um die Tests ständig auf dem neuesten Stand zu halten, sind Ressourcen bis zur Veröffentlichung der Funktion erforderlich. Und die Monate der Inaktivität, in denen ein Autotest geleckt wird, werden die Motivation des Teams treffen.
Wenn Sie regelmäßig neue Funktionen hinzufügen und mit den Aktionen der Wettbewerber Schritt halten möchten, überprüfen Sie die Produktfunktionen vor dem Erstellen von automatischen Tests immer manuell. Nur weil manuelles Testen Ihre Prozesse beschleunigt.
Dies gilt insbesondere für die mobile Entwicklung. Die meisten dieser Projekte werden derzeit in kurzen Sprints entwickelt, was bedeutet, dass Funktionen schneller implementiert werden. Unter solchen Bedingungen können Sie durch manuelle Tests dem Team so schnell wie möglich Feedback geben: um das Vorhandensein von Fehlern zu melden - oder um es mit der Tatsache zufrieden zu stellen, dass alles in Ordnung ist und Sie weitermachen können. Sie können später eine Reihe von Autotests durchführen, die mit ihrer Hilfe große Codearrays abdecken. Manuelle Tests helfen bei der Vorbereitung von Fällen für diesen Test.
Mit Autotests können Sie nicht überprüfen, ob es bequem ist, die neuen Funktionen der Anwendung zu verwenden. Usability-Tests werden immer manuell durchgeführt.
Skillbox empfiehlt: Der Fullstack-Onlinekurs ist ein mobiler Entwickler .
In manuellen Tests können Sie improvisieren und verrückte Kombinationen von Aktionen erstellen, die dem Benutzer nie einfallen, aber von ihm versehentlich begangen werden können. Auf diese Weise können Sie neue Fälle erstellen.
Neue Fälle treten auch auf, weil sich der Tester ständig die Frage stellt, was wäre wenn? So findet er originelle Möglichkeiten zur Interaktion mit der Anwendung - auch wenn sie nicht in den Basisszenarien enthalten waren.

Manuelle Testprobleme und deren Lösungen
Der größte Nachteil des manuellen Testens ist der menschliche Faktor. Natürlich betrifft es alles, was im Team passiert - sowohl die Arbeit der Teilnehmer als auch die Ereignisse auf der Kundenseite. Im Fall der Qualitätssicherung kann der Grund dafür, dass der Tester schwach in den Prozess eingetaucht ist und einen potenziellen Fehler übersieht, alles sein - mangelnde Erfahrung, familiäre Probleme oder Kopfschmerzen.
Zwei Tester können dasselbe Szenario auf unterschiedliche Weise testen. Was tun? Es ist wichtig, dass jedes unerwartete oder andere Ergebnis als Fall aufgezeichnet wird. Damit jeder Tester es testen kann, indem er die gleichen Aktionen ausführt. Dies reicht jedoch möglicherweise nicht aus - wenn der Fall nicht detailliert genug ist und der Tester die Beschreibung nicht versteht. Natürlich ist es unmöglich, den absoluten Ausschluss des menschlichen Faktors zu garantieren - aber Sie können versuchen, die Wahrscheinlichkeit der dadurch verursachten Probleme zu minimieren.
Dies wirkt sich auch negativ auf die Lieferbedingungen für Merkmale in Bezug auf Produktions- und Arbeitskosten aus: Schließlich werden jetzt „knifflige“ Fälle, die von Testern im Prozess erfunden wurden, zu regelmäßig durchgeführten Basisfällen und Regressionen hinzugefügt.
Die Situation wird durch die Wahrscheinlichkeit verschärft, dass einige der aufgetretenen Fehler noch nicht genau beschrieben werden, da die Gründe für ihr Auftreten noch nicht klar sind. Wie gehe ich mit solchen Retests um? Finden Sie entweder die Fehlerquelle und beseitigen Sie sie, oder - automatisieren Sie immer noch die Weitergabe von Problemfällen - in diesem Fall ist der Übergang zu Softwaretests sowohl zeitlich als auch finanziell gerechtfertigt. (Nein, dies widerspricht nicht dem Vorstehenden - da solche Situationen bereits im Verlauf der aktiven Entwicklung auftreten und Sie zu diesem Zeitpunkt auf jeden Fall automatische Testprozesse bereitstellen werden).
In jedem Fall ist das Auftreten der ersten Fälle, für die Regressionstests oder die Freigabe der zweiten Version der Anwendung erforderlich sind, und die Skalierung des Teams entsprechend diesen Ereignissen der Moment, in dem die Automatisierung relevant wird (schließt jedoch das manuelle Testen neuer Funktionen nicht aus). Zu diesem Zeitpunkt wird die Automatisierung bereits Zeit sparen: Der Entwickler selbst kann bereits vor der Übertragung an die QS-Abteilung die Regressionstests der neuen Funktion ausführen, um sicherzustellen, dass die vorhandene Funktionalität nicht beeinträchtigt wird, und der Tester muss nicht die erneut langweiligen Basisfälle durchlaufen. Ein weiterer Vorteil der Implementierung von Autotests in dieser Phase besteht darin, dass Sie sie nach einem bestimmten Zeitplan ausführen können - jede Nacht, an den Tagen nach dem Ende der Sprints oder beim Veröffentlichen neuer Builds der Anwendung.
Gleichzeitig sollte man einige Dinge nicht vergessen:
- Das Erstellen von Fällen und das Schreiben von Autotests wird einige Zeit in Anspruch nehmen - legen Sie es in Sprints;
- Stellen Sie sicher, dass der Autotest-Fall gut geschrieben und detailliert ist und ein mögliches Problem oder ein vorhandenes Szenario in seiner Gesamtheit beschreibt.
- Überprüfen Sie, ob der Autotest ordnungsgemäß funktioniert und ob er wirklich überprüft, was benötigt wird, und dies qualitativ.
Wir fassen zusammen: Manuelle Tests bieten in der Anfangsphase einen großen Vorteil in Bezug auf Geschwindigkeit und Arbeitskosten. Wenn die Anwendung wächst und eine große Anzahl von Regressionstests erscheint, wird sie in einem separaten Sprint in die Kategorie „Betriebstests“ neuer Funktionen eingestuft. Es ist relevant und überprüft bei Bedarf dringend, wie die Anwendung auf Änderungen im Betriebssystem oder auf die Aktualisierung der Umgebung reagiert.
Testphasen: was, wann und wie
Wenn Sie den Entwicklungsprozess als Ganzes und das Testen als einen seiner Teile betrachten, werden Sie bei richtiger Planung immer verstehen, was und wann bereit sein wird. Auf diese Weise können Sie die Zeit bestimmter Aktionen besser planen, da einige Ereignisse logisch anderen folgen und Sie die Möglichkeit haben, sie entsprechend Ihren Erwartungen in Ketten anzuordnen.
Der Tester wird gerade in der frühen Phase der Erstellung der Anwendung angezeigt. Hier hat der Kunde eine bestimmte Idee, Business Analysten sammeln aus dieser Anforderung - und Tester beginnen bereits zu diesem Zeitpunkt zu arbeiten und prüfen diese Anforderungen.
Wie läuft das Sie stellen Fragen zur beabsichtigten Funktionalität. Sie versuchen sich vorzustellen, wie die Anwendung aussehen wird, wenn sie implementiert wird. Wenn wir über eine neue Funktion in einem vorhandenen Produkt sprechen, finden sie heraus, wie sie mit vorhandenen Funktionen interagiert. Nachdem die Entwickler die Komplexität der Ideen des Kunden bewertet und festgestellt hatten, wie viel Zeit für ihre Implementierung erforderlich ist.
Danach beginnt die Entwurfsphase. Hier muss verstanden werden, wie Übergänge zwischen Bildschirmen ausgeführt werden, bestimmte Felder validiert werden müssen, wie die Anwendung oder ihre separate Funktion im Allgemeinen mit dem Endbenutzer interagieren. Bei Features ist es wichtig zu verstehen, wie sie in die Architektur einer vorhandenen Anwendung aufgenommen werden.
In der Entwurfsphase , wenn eine Karte der Übergänge zwischen Bildschirmen erstellt wird, klärt der Tester das Verhalten der einzelnen Elemente, aus denen sie bestehen, und welche visuellen Effekte bestimmte Benutzeraktionen begleiten. Darüber hinaus überprüft der Tester die Layouts auf Vollständigkeit und bestätigt, dass sie alles anzeigen, was zur Implementierung der beabsichtigten Funktionalität erforderlich ist. Es ist auch nützlich, die Layouts unabhängig auf Übereinstimmung mit den Richtlinien zu überprüfen.
Skillbox empfiehlt: Online-Kurs Mobile App Design
Mit Beginn der Entwicklung beginnen QS-Spezialisten sofort mit dem Schreiben von Testfällen. In verschiedenen Entwicklungsstadien können sie einen unterschiedlichen Detaillierungsgrad aufweisen. Am Ende ist es jedoch wünschenswert, eine maximale Abdeckung der gesamten Produktfälle sicherzustellen, damit Sie nach Erhalt der Baugruppe sofort mit dem Testen beginnen können.
Der erste Schritt der Prüfung selbst ist die Rauchprüfung: eine Bewertung, dass die Anwendung oder ihr neuer Teil im Allgemeinen zur Überprüfung bereit ist. Ein Rauchtest ist ein Test, ob eine Anwendung oder eine bestimmte Funktion im Prinzip gestartet wird.
Ein Rauchtest ist ein schneller Weg, um festzustellen, ob wir überhaupt mit Funktionstests beginnen können. Der Begriff stammt von den Herstellern von Leiterplatten und Mikroschaltungen, die zunächst sicherstellen mussten, dass die neue Schaltung nicht brennt - daher der Name: geraucht / nicht geraucht.
Dies ist ein schneller Weg, um sicherzustellen, dass wir die Aufgabe wirklich bestanden haben und dass sie in Arbeit genommen und nicht an die Programmierer zurückgesendet werden kann.
Am Beispiel des Autorisierungsformulars bewertet ein Rauch, ob Sie sich überhaupt anmelden können, ohne anzugeben, ob die in die Felder eingegebenen Daten gültig sind, ob zusätzliche Funktionen wie Kennworterinnerungen und andere Funktionen funktionieren. Wenn wir uns grundsätzlich anmelden konnten, können wir mit der weiteren eingehenden Überprüfung dieses Moduls fortfahren: Negative Fälle, Grenzwerte, Bewertung der Einhaltung der festgelegten Validierungsregeln.
In der nächsten Phase werden Regressionstests durchgeführt. Im manuellen oder automatischen Modus wird die vorgeplante Haupttestreihe durchgeführt.
Regressionstests sind gut, da Sie damit Fehler auch an Orten finden können, an denen zuvor alles in Ordnung war. Dies liegt an der Tatsache, dass Regression eine Bewertung der Funktionalität eines Standardsatzes von Fällen während der Implementierung jedes neuen Moduls und jeder Anwendungsänderung ist. Wenn Entwickler neue Funktionen hinzufügen, kann die aktuelle Version beschädigt werden oder eine neue Funktion kann mit vorhandenen in Konflikt stehen.
Das Hinzufügen neuer Bildschirme und damit das Ändern der Navigation kann beispielsweise die Funktion des Menüs stören oder zumindest anzeigen. Andererseits kann das globale Refactoring von Anwendungscode unangenehme Überraschungen bringen - danach müssen auch Regressionstests durchgeführt werden.
Probleme können verursacht werden, indem die von der Anwendung verwendete Bibliothek aktualisiert und die Umgebung geändert wird, in der sie funktioniert. Je öfter Sie die Anwendung aktualisieren, desto wichtiger sind die Regressionsprüfungen. Beschränken Sie sich nicht auf eine einmalige Überprüfung, die durchgeführt wird, wenn die Funktion bereits implementiert ist - überprüfen Sie alle Änderungen. Die Automatisierung von Regressionstests hilft Ihnen dabei - einfach, weil manuelle Regressionstests für eine neue Funktion, die in nur einer Woche erstellt wurde, zwei oder sogar mehr dauern können und die Testabteilung einfach daran hängen bleibt.
Eine vollständige Überprüfung wird natürlich durchgeführt, wenn der Release-Kandidat mit einem oder mehreren Features bereit ist, in die Produktion eingeführt zu werden. Es ist jedoch weiterhin erforderlich, bestimmte relevante Fälle in bestimmten Entwicklungsstadien anzuwenden.
Alles endet mit dem Testen des Endmontagekandidaten . Dies umfasst die Überprüfung der Beta-Version durch interne Tester, Geschäftstests - Bewertung des resultierenden Produkts durch den Kunden und Erhalt von Feedback von ihm sowie die Einladung einer bestimmten Benutzergruppe, sich mit der Alpha-Version der Anwendung vor der Veröffentlichung oder ihren neuen Funktionen vertraut zu machen. Danach kann die Anwendung in die Produktion eingeführt werden.
Die Arbeit des QS-Spezialisten endet jedoch nicht damit - er muss Anwendungsaktualisierungen und deren Kompatibilität mit früheren Versionen testen, Fälle zur Überprüfung von Innovationen zusammenstellen und gegebenenfalls die Weitergabe dieser Szenarien automatisieren.
Parallel dazu beteiligen sich Tester an der weiteren Analyse von Statistiken, die von Analysten gesammelt wurden, und überwachen das Verhalten der Anwendung und die Interaktion der Benutzer mit ihr. Auf diese Weise können Sie nicht nur die Ergebnisse ihrer Arbeit live verfolgen, sondern manchmal auch neue Szenarien und unbekannte Fehler entdecken, die zum Absturz der Anwendung führen.
Rebus-Zeit: Erraten Sie es und ein Rabatt von zehn Prozent auf einen Skillbox-Kurs wartet gerade auf Sie oder zeigen Sie Ausdauer und sammeln Sie Antworten auf alle Rebusse - diese Rabatte summieren sich (jedoch ohne weitere Rabatte auf Skillbox-Kurse).
Sie sollten jedoch nicht zu viel zögern - die Aktion funktioniert bis zum 30. August 2018. Denken Sie daran, dass das Thema des Rätsels ein Handy ist und englische Wörter hier das Russische stören können. Seien Sie also vorsichtig! Reichen Sie eine Bewerbung für den Kurs ein, und wenn der Manager Sie kontaktiert, geben Sie ihm eine Nachricht, die in einem Rebus (oder einigen!) Verschlüsselt ist.
Testformalisierung: Testplan, Format der Fehlerberichte, Berichterstellung
Zur Vorbereitung auf Funktionstests erstellt ein QS-Ingenieur einen Testplan. Dies ist die Dokumentation, die er zum Testen des Produkts benötigt, eine Liste der Aktionen, die er ausführen muss. Der Testplan gibt den Zeitpunkt des Tests an, beschreibt das Produkt oder eine bestimmte Aufgabe, um genau zu bestimmen, was überprüft werden muss. Alle Haupttestfälle werden ausführlich beschrieben. Listet die Arten von Tests auf, die erforderlich sind: funktionale und zum Beispiel Stress. Das Verfahren zur Automatisierung bestimmter Fälle und die Phasen, in denen sie automatisiert werden, werden beschrieben.
Der Testplan endet mit einer Beschreibung des Berichtsformats: Sie müssen im Voraus erklären, in welcher Form das Ergebnis bereitgestellt wird. Das gebräuchlichste Berichtsformat ist eine Liste von Testfällen mit dem Status ihrer Passage. Wenn wir wissen, wie Fälle das gesamte Anforderungsvolumen abdecken, und nachdem wir den Bericht gelesen haben, können wir auf den aktuellen Stand der Anwendungsentwicklung schließen. Dazu reicht es zu sehen, wie viele von ihnen in der einen oder anderen Baugruppe erfolgreich abgeschlossen wurden.
Die letzte Freigabe, die anzeigt, dass das Produkt bereit ist, ist der Status "Alle Anforderungen werden durch Fälle abgedeckt, alle Fälle werden erfolgreich abgeschlossen."
Darüber hinaus formalisiert der Testplan das Format des Fehlerberichts. Dies kann eine Fehlerliste sein, eine Liste von Aufgaben im Tracker.
Die Aufgabe des Testers besteht darin, allen Teammitgliedern die umfassendsten Informationen über die Qualität des Produkts zur Verfügung zu stellen.
Was Sie wissen und in der Lage sein müssen, Tester zu werden
Zuallererst muss der Tester in der Lage sein zu denken und aufmerksam und gewissenhaft zu sein. Erfahrung ist wichtig - sie ermöglicht es Ihnen, bestimmte Erfolge zu sammeln, das Wissen über Testprozesse zu festigen und sie in Fähigkeiten umzuwandeln.
Ein manueller Testspezialist muss nicht in der Lage sein, Code zu schreiben und ein tiefes Verständnis der Architektur zu haben. Dies hindert ihn nicht daran, die Funktionalität zu überprüfen und die Prinzipien der Interaktion zwischen der Anwendung und dem Server auf Anwendungsebene zu verstehen.
Ein Spezialist für automatisierte Tests ist ein eigenständiger Beruf mit völlig anderen Kenntnissen.
Hochwertige Selbsttests sind nicht nur Skripte, sondern auch ein Verständnis dafür, wie die Anwendung von innen aufgebaut ist, und spezifische Fähigkeiten, z. B. das Wissen, wie Tests parallelisiert oder in der Cloud oder auf mehreren Servern ausgeführt werden. Nur mit einem solchen Kompetenzpool können wir uns stolz als „Automatisierungsingenieur mit Großbuchstaben“ bezeichnen. Ohne Kenntnisse der Sprachen, ihrer Rahmenbedingungen, der Prinzipien der OOP und einer sorgfältigen Überwachung der Entwicklung von Technologien kann dieser Autotester dies nicht.
Der Pfad jedes Testers beginnt damit, die theoretischen Grundlagen des Testens zu beherrschen und erste Ideen darüber zu erhalten, wie die Anwendung mit dem Server und der Umgebung interagiert. Wenn dieses Wissen vorhanden ist und die Person damit eine sehr ernsthafte Absicht hat, zu studieren, kann sie bereits als Junior-Tester betrachtet werden. Einer Gruppe solcher Neuankömmlinge mit leuchtenden Augen wird ein leitender Spezialist zugewiesen - entweder ein führender Tester oder, wenn das Unternehmen es sich leisten kann, ein Trainer, der gezielt seine Schutzzauber pumpt. Sie erklären Junioren unverständliche Momente und geben schmerzhafte Aufgaben wie das Ausführen von Funktionen in Testfällen. Dabei lernt eine Person, Testfälle zu lesen und beherrscht die praktischen Grundlagen des Funktionstests. Zu diesem Zeitpunkt müssen die Junioren noch die Qualität ihrer Tests überprüfen und sie nach ihnen bestehen.Der nächste Schritt besteht darin, einen individuellen (oder kollektiven, je nach Größe des Unternehmens) Entwicklungsplan zu erstellen, nach dem der unerfahrene Tester in der ihm dafür vorgesehenen Zeit neues Wissen entwickeln und bestimmte Ergebnisse erzielen muss. Dies ist genau der Weg, um ein Spezialist auf mittlerer Ebene zu werden.Ein mittlerer Tester ist eine Person, die bereits in der Lage ist, die ihm zugewiesenen Aufgaben unabhängig zu erfüllen, Lösungen zu finden und seine Arbeit im Allgemeinen bewusst auszuführen, anstatt blindlings etablierten Algorithmen zu folgen.Mit der Entwicklung von Testdesignfähigkeiten, Kenntnissen in den funktionalen und angewandten Bereichen sowie der Entwicklung neuer Testmethoden, die nun unabhängig entwickelt werden müssen, erfolgt eine schrittweise Umwandlung in einen führenden Spezialisten. Jetzt können sie ihm die Wartung und Unterstützung derselben Junioren anvertrauen, die er selbst zuvor war.Die nächste Stufe ist eine Testleitung. Er kann bereits das Team leiten, das Vertreter aller drei vorherigen Kategorien umfasst, deren Prozesse er kontrolliert und dessen Zeit er verwaltet, unter anderem durch die Teilnahme an der Planung globaler Entwicklungsprozesse, die Bewertung der Arbeitskosten und die Budgetierung seiner Teams.Ein weiteres vertikales Wachstum des Teamleiters ist das Management der Abteilung oder der Übergang zum Produktmanagement. Wenn eine Person jedoch nach neuem Wissen und nicht nach neuen Verwaltungspositionen strebt, kann sie eine Entwicklung, Analyse oder eine Richtung wie DevOps wählen, in der die Verantwortlichkeiten eines Systemadministrators, Testers und Programmierers kombiniert werden.Testen ist nur einer von vielen Bereichen der mobilen Entwicklung, die wir im Rahmen des Kurses „Fullstack-Mobile Developer“ in Betracht ziehen. Die Branchenfachleute, die mit uns zusammenarbeiten, teilen ihre Erfahrungen mit Ihnen und überprüfen Ihre Hausaufgaben. Das Ergebnis der Schulung kann die Annahme eines Praktikums in einem großen Unternehmen sein. Komm zu uns zum Lernen!
Skillbox empfiehlt: