how implement efficient test automation agile world
Automatisierung in Agile ist sehr wichtig.
Denken Sie an die vielen Funktionen, die in jedem Sprint hinzugefügt und bereitgestellt werden. Es muss eine Möglichkeit geben, um sicherzustellen, dass die neu hinzugefügte Funktion die vorhandenen Funktionen nicht beeinträchtigt.
Aufgrund der geringen Sprintdauer ist es praktisch unmöglich, den gesamten Anzug jedes Mal auszuführen, wenn das Produkt am Sprintende erhöht wird. Ein automatisierter Testanzug würde hier definitiv eine größere Rolle spielen.
Die Einführung und Reifung in die Automatisierung würde jedoch definitiv einige Zeit in Anspruch nehmen. Eine anfängliche Investition in die Planung und Gestaltung der Automatisierungsaktivität würde sich auf lange Sicht definitiv auszahlen.
In diesem dritten Teil der erweiterten Serie von Agile Testing versuche ich, einige Hinweise zu nennen, die ich aufgrund meiner Erfahrung berücksichtigen sollte, wenn Sie Ihr Projekt automatisieren.
Lesen Sie auch Teil 1 und Teil 2 zuerst, um das Thema besser zu verstehen.
Was du lernen wirst:
Was muss in Agile automatisiert werden?
Wann immer wir planen, Automatisierung in unsere Projekte einzuführen, stimmen die meisten von uns sofort dafür, dass entweder der Anzug „Rauchtests“ oder der Anzug „Regressionstests“ der beste ist Kandidat für die Automatisierung . Natürlich sind sie es, aber wenn wir an die Automatisierungstestpyramide denken, können wir daraus schließen, dass es sich nur um die oberste Schicht der Pyramide handelt, über die wir sprechen.
Abgesehen von der obigen Schicht haben wir noch die Serviceschicht und das Einheitsschicht das sind wichtiger.
wie man sort in java benutzt
Welche Tests außer Rauch- und Regressionstests können gute Kandidaten für die Automatisierung sein?
# 1) Builds und Bereitstellungen
In traditionellen Umgebungen haben wir vordefinierte Builds, die wöchentlich, vierzehntägig oder manchmal sogar monatlich sein können. Einer der Gründe ist, dass diese Bereitstellungen Zeit benötigen. Das Problem bei diesem Ansatz ist, dass wir auf die vordefinierten Daten warten müssen, um die Fehler zu beheben oder die neuen Funktionen zu implementieren, sodass es zu Verzögerungen kommt.
Der zweite Grund war: Bis die Tester mit dem Testen fertig sind und Fehler und Defekte feststellen, sind die Programmierer zu verschiedenen Implementierungselementen übergegangen und haben weniger Interesse daran, die Fehler der älteren Anwendung zu beheben. Dieser Ansatz verzögert auch die Zeit für die Bereitstellung des Features in der Produktion.
Erstellen und Bereitstellen sind die Entitäten, die sich wiederholen und manchmal langweilig sind. Die Bereitstellung eines Builds kann auch Stunden dauern, wodurch das Testen und eventuell das Feedback verzögert werden. Als sich wiederholende Aufgabe werden Bereitstellungen zu einem guten Kandidaten für die Automatisierung.
Lesen Sie auch=> Der Release- und Deployment-Management-Prozess
Fragen und Antworten zu Qualitätssicherungsinterviews
Einige der Vorteile einer automatisierten Build-Bereitstellung sind:
- Es besteht keine Möglichkeit, Bereitstellungsfehler zu machen (menschliche Fehler wie das Kopieren der falschen Datei oder das Kopieren der Datei an den falschen Speicherort können vermieden werden).
- Fehler / Funktionen können getestet werden, sobald sie behoben sind
- Tester haben mehr Zeit zum Testen
- Die Funktion kann in kürzerer Zeit in die Produktion übernommen werden
- Schnelles Feedback
# 2) Unit Tests / Komponententests
Ich habe bereits darüber gesprochen, wie wichtig es ist, die Einheitsschicht mithilfe der zu automatisieren TDD-Ansatz in meinem letzten Tutorial .
Dies bildet die unterste Schicht der Pyramide, daher muss das Fundament und jedes Fundament steinhart sein. Das Entwicklungsteam sollte zusammenarbeiten und zusammenarbeiten, um den größten Teil des Tests in dieser Ebene unterzubringen.
# 3) API / Web Service-Tests
Webdienste sind das Medium, in dem zwei Anwendungen die Daten oder Informationen in Bezug auf Anforderung und Antwort austauschen, ohne sich um die zugrunde liegende Architektur oder Technologie zu kümmern. Einfacher ausgedrückt: Eine Anfrage zu stellen und die Antwort zu validieren, ist das, was wir normalerweise beim Testen von Webdiensten tun.
Testen der Webdienste Das Schreiben von Programmen zum Aufrufen dieser Webdienstmethoden und das Überprüfen der zurückgegebenen Werte. Wir können die Dienste sogar auf verschiedene Permutationen und Kombinationen testen. Haben Sie alle Testdaten in der Excel-Tabelle und Ihr Programm kann die Daten lesen und den testbaren Dienst aufrufen, indem es die Testdaten als Parameter übergibt und die Ergebnisse validiert.
Diese spezielle Prüfung ist Teil der mittleren Schicht der Pyramide. Die meisten Funktionstests können in diese Schicht verschoben werden. Das Beheben von Fehlern, die in dieser Ebene auftreten, lässt sich leicht beheben und wird erst verschoben, wenn die Benutzeroberfläche verfügbar ist.
# 4) Testen hinter der GUI
Die Automatisierung der Tests hinter der GUI ist vergleichsweise einfacher als die Automatisierung der eigentlichen GUI. Ein weiterer Vorteil ist, dass die Funktionalität unabhängig von den Änderungen an der Benutzeroberfläche erhalten bleibt. Selbst wenn ein Teil des UI-Elements geändert wird, ändert sich die Funktionalität der Funktion nicht. Diese Technik konzentriert sich hauptsächlich auf die Geschäftslogik und -regeln.
Die Testfälle werden meist in Tabellenform oder in einer Tabelle geschrieben, und Fixtures / Code-Snippets werden geschrieben, die die Eingaben aus diesen Tabellen akzeptieren und die Ergebnisse zurückgeben. Die Ergebnisse werden sofort generiert und bieten den nicht-technischen Stakeholdern eine hervorragende Plattform, um diese Tests durchzuführen und die erwarteten Ergebnisse zu erzielen. Eines der Werkzeuge, um diese Technik zu erreichen, ist Fitness .
# 5) Nichtfunktionale Prüfung
Dies nicht funktionale Testtechnik beinhaltet im Wesentlichen die Last-, Leistungs- und Stresstests. Auf dem Markt sind verschiedene Tools verfügbar, mit denen diese Tests automatisiert werden können.
# 6) Datenvergleiche
Bei vielen unserer Tests müssen wir Datendateien vergleichen, einschließlich Textdateien, CSV- oder Excel-Dateien
- Diese Dateien können mit Basislinien für die Datenvalidierung verglichen werden
- Vergleiche können von denselben Daten, aber von einem anderen Format sein. Dies geschieht im Grunde genommen, wenn zwei gleiche Dateien aus zwei verschiedenen Quellen generiert wurden
Diese Vergleiche können sich wiederholen und daher automatisiert werden.
# 7) Suchen
Das Suchen nach einer bestimmten Entität aus einer großen Anzahl von Dateien kann ebenfalls mühsam sein, und Gott hilft uns, wenn sich dies wiederholt. Ein Beispiel ist das Durchsuchen von Protokolldateien. Wenn dies auch eine mühsame und sich wiederholende Aufgabe ist, sollten wir darüber nachdenken, sie zu automatisieren.
# 8) Wiederholte Aufgaben
Jede Aufgabe, die mit der Interaktion mit Endbenutzern beginnt oder Geschichten schreibt, um sie zu entwickeln, sollte bei der Automatisierung berücksichtigt werden, wenn sie sich wiederholt. Wir sollten verstehen, dass Automatisierung nicht bedeutet, dass ein ausgeklügeltes Werkzeug / eine hochentwickelte Technologie erforderlich ist. Es kann ein einfaches VB-Makro oder ein Java-Programm mit einem Javascript sein, um den Zweck zu lösen.
Wo soll man anfangen?
Es gibt keine Aufzählungspunkte oder eine Schritt-für-Schritt-Anleitung, die angibt, wo mit der Automatisierung begonnen werden soll. Um die Automatisierung für das Team zu starten, müssen Sie ein Brainstorming durchführen und sich Gedanken darüber machen, welche Aspekte Sie automatisieren möchten oder was das ultimative Ziel der Automatisierung ist.
Sie können beginnen mit:
- Identifizieren der sich wiederholenden Aufgaben,
- Identifizierung der Schmerzbereiche der Anwendung
- Identifizieren der Testherausforderungen
Wenn Sie im Tourprojekt / -team keine Automatisierung haben, können Sie wahrscheinlich einen mehrschichtigen Ansatz wählen, bei dem die Komponententests zuerst gezielt automatisiert werden können. Dies würde Ihnen den höchsten ROI geben.
Gleichzeitig können Tester mit der Arbeit am Rauchtestanzug und dann an der Regression beginnen. Sobald das Team die Fähigkeiten erworben hat und sich wohl fühlt, können Sie die anderen sich wiederholenden Aufgaben schrittweise automatisieren.
Steigen Sie nicht direkt in den Kauf eines neuen Werkzeugs ein, ohne Ihre Bedürfnisse zu bewerten. Wie ich bereits sagte, kann ein einfaches Programm oder ein Makro Ihren Zweck lösen, einige der sich wiederholenden Aufgaben zu automatisieren. Bevor Sie sich für ein Werkzeug entscheiden, mach den POC und bewerten Sie, ob die Verwendung dieses Tools effektiv wäre.
Bitte gehen Sie diese Dokumente durch, in denen ich in den folgenden Artikeln weitere Details zur Auswahl der richtigen Testfälle für die Automatisierung und einige Einblicke in die Schätzung des Automatisierungsaufwands bereitgestellt habe Handbuch zu Herausforderungen bei Automatisierungstests und Testschätzung des Selenautomatisierungsprojekts.
Sobald der Umfang der Automatisierung und des Tools abgeschlossen ist, müssen Sie als Nächstes das Framework entwerfen.
Denken Sie daran, dass in Agile das Framework weiterentwickelt wird. Versuchen Sie NICHT, zuerst das gesamte Framework zu entwerfen und dann zu implementieren. Entwerfen und implementieren Sie das MVP (Minimum Viable Product) und erweitern Sie das vorhandene Framework um weitere Funktionen. Sie müssen auch eine gute Codierungs- und Entwicklungspraxis anwenden, wenn Ihre Automatisierungssuite robust sein soll.
VR-Headset kompatibel mit Xbox One
Einige Best Practices
- Ziel ist es nicht, 100% auf einmal zu automatisieren. Fangen Sie klein an. Denken Sie daran, es ist ein sich entwickelnder Prozess
- Befolgen Sie die gleichen agilen Vorgehensweisen wie bei jeder Softwareentwicklung. Die Automatisierung erfordert auch eine ordnungsgemäße Planung und Gestaltung. Sie möchten Ihre technischen Schulden bei der Automatisierung nicht erhöhen
- Erstellen Sie Ihr Testautomatisierungs-Backlog. Dieser Rückstand kann von der Implementierung einer neuen Funktion bis zur Verbesserung einer vorhandenen Funktion reichen. Geben Sie Ihren identifizierten Elementen Story-Punkte und weisen Sie sie entsprechend zu. Bringen Sie diese Backlog-Elemente zu Ihrem Sprint und verfolgen Sie sie mit einem Kanban-Board
- Schreiben Sie die Akzeptanzkriterien für Ihre Automatisierungsgeschichten. Diese Akzeptanzkriterien können Folgendes umfassen:
- Integration der Testsuite in CI
- Portieren des Anzugs an einen zentralen Ort
- Senden Sie die Ergebnisse per E-Mail
- Bereitstellung des Versendens der Fehlerprotokolldateien, wenn der Test fehlschlägt
- Andere Kriterien….
- Verbringen Sie keine Zeit damit, ein neues Werkzeug zu evaluieren. Sie können eine priorisierte Checkliste erstellen, die alles enthält, was Sie vom neuen Tool erwarten, und einen Zeitplan für die Bewertung festlegen. Wenn Sie Ihre Ergebnisse nicht in der festgelegten Zeit sehen, fahren Sie mit der nächsten fort
- Treffen Sie eine vernünftige Entscheidung darüber, was automatisiert werden soll. Nicht jede Automatisierung ist effektiv und führt zu einem positiven ROI. Automatisieren Sie nicht nur aus Gründen der Automatisierung
- Nutzen Sie die richtige Entwicklungsumgebung. Bewahren Sie den Code nicht in Ihrer Nähe auf. Haben Sie ein Repository, in dem Sie Ihren Code aufbewahren können, und machen Sie es sich zur Gewohnheit, Ihren Code am Ende des Tages zu überprüfen
- Versuchen Sie auf ähnliche Weise, Ihre automatisierten Tests von einem zentralen Ort aus auszuführen. Machen Sie es Person unabhängig. Es sollte sein, dass jeder aus dem Team die Skripte von seinem Computer aus auslösen kann und die Ergebnisse per E-Mail erhalten werden
Welche agilen Prinzipien können auf die Automatisierung angewendet werden?
Einige sehr einfache Tipps:
- Halte die Dinge einfach. Mach was nötig ist. Ich habe viele Fälle gesehen, in denen wir eine Implementierung mit Zuckerüberzug liefern, was die Automatisierung unnötig kompliziert macht. Vermeiden wir die Dinge, die nicht benötigt werden
- Einfache Dinge zu tun bedeutet nicht, die einfachsten Dinge zu tun. Dies bedeutet, kleine Schritte zu unternehmen, um Ihre Automatisierungsziele zu erreichen. Sie können eine einfache Funktion zur Automatisierung verwenden, aber es kann vorkommen, dass sich die Implementierung der Automatisierung als komplex herausstellt
- Wenden Sie den gesamten Teamansatz an . Ich glaube, jeder ist ein Tester in einem agilen Team. Beschränken wir den Automatisierungsjob nicht nur auf die Tester oder nur auf die Entwickler. Jede der Disziplinen muss sich gegenseitig unterstützen, um eine Automatisierung für das Projekt zu erreichen. Dieser Ansatz wäre auch effektiv, um alle technischen Probleme zu lösen, die mit der Implementierung einhergehen
- Das Framework wurde in Agile entwickelt . Versuchen Sie nicht, zu viele Funktionen bereitzustellen, die die Automatisierung unnötig komplex machen könnten
- Nehmen Sie sich Zeit, um es richtig zu machen. Nehmen Sie sich etwas Zeit, um es richtig zu gestalten, um die technischen Schulden zu vermeiden
- Erhalten Sie häufiges Feedback
- Wenden Sie die richtigen Codierungsstandards und -praktiken an. Das Design sollte einfach sein, die OOPS-Konzepte anwenden und versuchen, die Tests unabhängig voneinander zu halten. Berücksichtigen Sie Faktoren wie die „Wartbarkeit“ des Testanzugs
Sehe ich bei der Automatisierung in Agile irgendwelche Herausforderungen?
Automatisierung in der agilen Welt gehört dazu seine eigenen Herausforderungen ::
- Wir müssen wirklich gut planen. Für die Auswahl der geeigneten Testsuite, des Tools, des Frameworks und des Ansatzes ist eine geeignete Strategie erforderlich. Wir sollten jedoch daran denken, NICHT zu viel zu planen. Beachten Sie das MVP (Minimal Viable Product)
- Kompromisse bei der Qualität des Codes eingehen, weil wir schnell liefern wollen: Wir müssen uns daran erinnern, dass technische Schulden auch in der Automatisierung eine gute Rolle spielen
- Team Die meisten Teams folgen nicht dem „Whole-Team-Approach“ und überlassen die gesamte Verantwortung für die Codierung und Wartung der automatisierten Suite den Testern, was die Verantwortung der Tester erhöht
- Die Automatisierung der Funktionstests ist schwieriger als die Automatisierung der Benutzeroberfläche
Unter all diesen Herausforderungen besteht die wichtigste Herausforderung darin, die Fähigkeiten der Tester zu verbessern.
Die Automatisierung für ein Team durchzuführen und aufrechtzuerhalten, ist fast wie eine Programmier- (Entwicklungs-) Aktivität, die die Programmierer (Entwickler) ausführen. Nicht nur die Implementierung, sondern auch die Integration des automatisierten Anzugs in CI ist wichtig und erfordert, dass Tester neue Fähigkeiten erlernen und anwenden sowie neue Werkzeuge und Technologien erlernen.
Einige Open Source Tools, die in Agile passen
- Selenium WebDriver - Für die Benutzeroberfläche
- Selengitter - Zur parallelen Ausführung
- Gurke - Für BDD
- JMeter - Für Leistungstests
- SEIFE - Für Webdienste
- WireMock - Testen des Webdienstes, wenn der Webservice nicht verfügbar ist.
- Epochen - für Mobile
Lassen Sie mich mit den berühmten Agile-Testquadranten schließen:
Quadrant 1 ist der Unit- und der Komponententest, der mit dem TDD-Ansatz automatisiert werden kann.
Quadrant 2 spricht über die Funktionstests, bei denen wir den BDD-Ansatz anwenden können.
Quadrant 3 ist der einzige Quadrant, der manuell getestet werden kann.
Quadrant 4 spricht im Grunde über die Tests, die mit einigen Tools erreicht werden können. Dies kümmert sich um die Lasttests, Stresstests, Volumentests und Sicherheitstests.
Fazit
Abgesehen von den Rauch- und Regressionstests gibt es viel Automatisierungsspielraum. Daher müssen wir uns von dem Konzept lösen, die Automatisierung nur auf diese Testarten zu beschränken, was wiederum bedeutet, dass die Fähigkeiten eines Testers in Agile mehr erfordern als nur das Auffinden von Fehlern und Defekten.
Tester müssen kooperativer sein und ihre Programmier- / Automatisierungsfähigkeiten verbessern. Wenn immer mehr Tests automatisiert werden, haben die Tester mehr Zeit, sich anspruchsvolleren und herausfordernderen Aufgaben zu widmen.
Über den Autor: Dieser Artikel ist von STH-Teammitglied Shilpa. Sie arbeitet seit über 10 Jahren im Bereich Softwaretests in Bereichen wie Internetwerbung, Investment Banking und Telekommunikation.
Bitte teilen Sie Ihre Kommentare und Gedanken unten.
Literatur-Empfehlungen
- AutoIt-Tutorial - AutoIt-Download, Installation und grundlegendes AutoIt-Skript
- Verlieren Tester aufgrund von Automatisierung ihren Einfluss auf das Testen?
- Herausforderungen beim manuellen und automatischen Testen
- Beste Software-Test-Tools 2021 (QA Test Automation Tools)
- 10-stufiger Automatisierungstestprozess: So starten Sie den Automatisierungstest in Ihrer Organisation
- Sind Sie ein Experte für manuelle oder Automatisierungstests? Teilzeit für uns arbeiten!
- 11 besten Automatisierungstools zum Testen von Android-Anwendungen (Android App Testing Tools)
- Top 10+ Best Software Testing Books (Handbuch und Handbuch für Automatisierungstests)