Was ist agiles Testen? Prozess und Lebenszyklus

Was ist agiles Testen?

Agiles Testen ist eine Testpraxis, die den Regeln und Prinzipien der agilen Softwareentwicklung folgt. Im Gegensatz zur Wasserfallmethode kann Agile Testing bereits zu Beginn des Projekts mit einer kontinuierlichen Integration zwischen Entwicklung und Test beginnen. Die agile Testmethode ist nicht sequentiell (in dem Sinne, dass sie erst nach der Codierungsphase ausgeführt wird), sondern kontinuierlich.

Prinzipien des agilen Testens

Hier sind die wesentlichen Prinzipien des agilen Testens:

  • In diesem agilen Testmodell ist funktionierende Software das primäre Maß für den Fortschritt.
  • Das beste Ergebnis können die selbstorganisierenden Teams erzielen.
  • Die frühzeitige und kontinuierliche Bereitstellung wertvoller Software hat für uns höchste Priorität.
  • Softwareentwickler müssen sich während des gesamten Projekts täglich versammeln.
  • Steigerung der Agilität durch kontinuierliche technische Verbesserung und gutes Design.
  • Agile Tests stellen durch kontinuierliches Feedback sicher, dass das Endprodukt den Erwartungen des Unternehmens entspricht.
  • Beim agilen Testprozess müssen wir den Testprozess während der Implementierung ausführen, was die Entwicklungszeit verkürzt.
  • Der Testprozess in Agile sollte auf ein konsistentes Entwicklungstempo ausgerichtet sein
  • Denken Sie regelmäßig darüber nach, wie Sie effektiver werden können.
  • Die beste archiStrukturen, Anforderungen und Designs entstehen durch selbstorganisierende Teams.
  • Jedes Mal, wenn sich das Team trifft, überprüft und passt es sein Verhalten an, um effektiver zu werden.
  • Das persönliche Gespräch mit dem Entwicklungsteam ist die effektivste und effizienteste Methode zur Informationsvermittlung innerhalb des Teams.

Agile Tests umfassen verschiedene Prinzipien, die uns helfen, die Produktivität der Software zu steigern.

Lebenszyklus agiler Tests

Der agile Testlebenszyklus wird in fünf verschiedenen Phasen abgeschlossen, wie wir im Folgenden sehen könnenwing Bild:

Lebenszyklus agiler Tests

Hier sind die Schritte zum Testen agiler Prozesse:

Phase 1: Folgenabschätzung: In dieser ersten Phase sammeln wir Inputs von Stakeholdern und Nutzern. Diese Phase wird auch Feedback-Phase genannt, da sie den Testingenieuren dabei hilft, die Ziele für den nächsten Lebenszyklus festzulegen.

Phase 2: Agile Testplanung: Es ist die zweite Phase des agilen Testlebenszyklus, in der alle Beteiligten zusammenkommen, um den Zeitplan für den Testprozess und die Ergebnisse zu planen.

Phase 3: Release-Bereitschaft: In dieser Phase überprüfen wir, ob die entwickelten/implementierten Funktionen bereit sind, live zu gehen oder nicht. In dieser Phase wird auch entschieden, welche zur vorherigen Entwicklungsphase zurückkehren muss.

Phase 4: Daily Scrums: Zu dieser Phase gehört jedes morgendliche Stand-up-Meeting, um sich über den Stand der Tests zu informieren und das Ziel für den gesamten Tag festzulegen.

Phase 5: Überprüfung der Testagilität: Die letzte Phase des Agile-Lebenszyklus ist das Agility Review Meeting. Dazu gehören wöchentliche Treffen mit Stakeholdern, um den Fortschritt regelmäßig anhand der Ziele zu bewerten und zu bewerten.

Agile Testplan

Agile Testplan umfasst Arten von Tests, die in dieser Iteration durchgeführt wurden, wie Testdatenanforderungen, Infrastruktur, Testumgebungen, und Testergebnisse. Im Gegensatz zum Wasserfallmodell wird bei einem agilen Modell ein Testplan geschrieben und für jede Version aktualisiert. Typische Testpläne in Agile umfassen:

  • Testumfang
  • Neue Funktionalitäten, die getestet werden
  • Level oder Arten von Tests basierend auf den Features complexity
  • Last- und Leistungstests
  • Überlegungen zur Infrastruktur
  • Minderungs- oder Risikoplan
  • Resourcing
  • Leistungen und Meilensteine

Agile Teststrategien

Der Lebenszyklus agiler Tests umfasst vier Phasen

Agile Teststrategien

Iteration 0

Während der ersten Phase oder Iteration 0 führen Sie anfängliche Einrichtungsaufgaben durch. Dazu gehört die Identifizierung von Testpersonen, die Installation von Testtools, die Planung von Ressourcen (Usability-Testlabor) usw. Das Folgendewing Schritte werden festgelegt, um in Iteration 0 erreicht zu werden

  • Erstellen eines Business Case für das Projekt
  • Legen Sie die Randbedingungen und den Projektumfang fest
  • Skizzieren Sie die wichtigsten Anforderungen und Anwendungsfälle, die die Design-Kompromisse bestimmen
  • Skizzieren Sie einen oder mehrere Kandidaten architekturen
  • Das Risiko identifizieren
  • Kostenschätzung und Erstellung eines Vorprojekts

Konstruktionsiterationen

Die zweite Phase der agilen Testmethodik sind Konstruktionsiterationen. Der Großteil der Tests findet in dieser Phase statt. Diese Phase wird als eine Reihe von Iterationen betrachtet, um ein Inkrement der Lösung zu erstellen. Um dies zu erreichen, müssen Sie in jeder Iteration Folgendes tun: Das Team setzt um eine Mischung aus Praktiken aus XP, Scrum, agiler Modellierung und agilen Daten usw.

Bei der Konstruktionsiteration folgt das agile Team der priorisierten Anforderungspraxis: Bei jeder Iteration übernimmt es die wesentlichsten verbleibenden Anforderungen aus dem Workitem-Stapel und setzt sie um.

Die Konstruktionsiteration wird in zwei Kategorien eingeteilt: Bestätigungstests und Untersuchungstests. Konzentrate für Bestätigungstests bei der Überprüfung, ob das System die dem Team bisher beschriebene Absicht der Stakeholder erfüllt und vom Team umgesetzt wird. Während die Untersuchungstests das Problem erkennen, hat das Bestätigungsteam das Problem übersprungen oder ignoriert. Bei investigativen Tests ermittelt der Tester die potenziellen Probleme in Form von Fehlerberichten. Investigative Tests befassen sich mit häufigen Problemen wie Integrationstests, Last-/Stresstests und Sicherheitstests.

Auch bei Bestätigungstests gibt es zwei Aspekte Entwicklertests und Agile Akzeptanztests. Beide sind automatisiert, um kontinuierliche Regressionstests während des gesamten Lebenszyklus zu ermöglichen. Bestätigungstests sind das agile Äquivalent zum Testen gemäß der Spezifikation.

Agile Akzeptanztests sind eine Kombination aus traditionellen Funktionstests und traditionellen Akzeptanztests, da das Entwicklungsteam und die Beteiligten sie gemeinsam durchführen. Während Entwicklertests eine Mischung aus traditionellen Unit-Tests und traditionellen Service-Integrationstests sind. Entwicklertests überprüfen sowohl den Anwendungscode als auch das Datenbankschema.

Release-Endspiel oder Übergangsphase

Das Ziel von „Release, End Game“ ist die erfolgreiche Bereitstellung Ihres Systems in der Produktion. Zu den Aktivitäten in dieser Phase gehören die Schulung von Endbenutzern, Supportmitarbeitern usw operationale Menschen. Darüber hinaus umfasst es die Vermarktung der Produktveröffentlichung, die Sicherung und Wiederherstellung sowie die Fertigstellung der System- und Benutzerdokumentation.

Die letzte Testphase der agilen Methodik umfasst vollständige Systemtests und Abnahmetests. Um Ihre letzte Testphase ohne Hindernisse abzuschließen, sollten Sie das Produkt während der Konstruktionsiterationen gründlicher testen. Während des Endspiels werden die Tester an den Fehlergeschichten arbeiten.

Produktion

Nach der Freigabephase geht das Produkt in die Produktionsphase über.

Die Agile-Testing-Quadranten

Die Agile-Testing-Quadranten

Die Quadranten für agiles Testen unterteilen den gesamten Prozess in vier Quadranten und helfen zu verstehen, wie agiles Testen durchgeführt wird.

Agiler Quadrant I

Die interne Codequalität steht in diesem Quadranten im Mittelpunkt und besteht aus Testfällen, die technologiegetrieben sind und zur Unterstützung des Teams implementiert werden

  • Unit-Tests
  • Komponententests

Agile-Quadrant II

Es enthält Testfälle, die geschäftsorientiert sind und zur Unterstützung des Teams implementiert werden. Dieser Quadrant konzentriert sich auf die Anforderungen. Die Art des Tests, der in dieser Phase durchgeführt wird, ist

  • Testen von Beispielen möglicher Szenarien und Arbeitsabläufe
  • Testen von Benutzererfahrungen wie Prototypen
  • Paartests

Agiler Quadrant III

Dieser Quadrant liefert Feedback zu den Quadranten eins und zwei. Die Testfälle können als Grundlage für die Durchführung von Automatisierungstests verwendet werden. In diesem Quadranten werden viele Iterationsüberprüfungsrunden durchgeführt, die das Vertrauen in das Produkt stärken. Die Art der Tests, die in diesem Quadranten durchgeführt werden, ist

  • Usability-Tests
  • Versuchsforschung
  • Paartests mit Kunden
  • Kollaboratives Testen
  • User Acceptance Testing

Agiler Quadrant IV

Dieser Quadrant konzentriert sich auf die nicht-funktionalen Anforderungen wie Leistung, Sicherheit, Stabilität usw. Mit Hilfe dieses Quadranten wird der Antrag gestellt, die nicht-funktionalen Qualitäten und den erwarteten Wert zu liefern.

  • Nichtfunktionale Tests wie Stress- und Leistungstests
  • Sicherheitstests in Bezug auf Beglaubigung und hacken
  • Infrastrukturtests
  • Tests der Datenmigration
  • Skalierbarkeitstests
  • Lastprüfung

QA-Herausforderungen bei der agilen Softwareentwicklung

  • Die Fehlerwahrscheinlichkeit ist bei agilen Methoden höher, da der Dokumentation weniger Priorität eingeräumt wird und das QA-Team letztendlich stärker unter Druck gesetzt wird
  • Neue Funktionen werden schnell eingeführt, was die Zeit verkürzt, die den Testteams zur Verfügung steht, um festzustellen, ob die neuesten Funktionen den Anforderungen entsprechen und ob sie wirklich den Geschäftsanforderungen gerecht werden
  • Tester müssen oft die Rolle eines Halbentwicklers übernehmen
  • Testausführungszyklen sind stark komprimiert
  • Sehr wenig Zeit für die Erstellung des Testplans
  • Für Regressionstests benötigen sie nur minimale Zeitvorgaben
  • Veränderung ihrer Rolle vom Torwächter der Qualität zum Partner der Qualität
  • Anforderungsänderungen und -aktualisierungen sind Teil einer agilen Methode und werden zur größten Herausforderung für die Qualitätssicherung

Risiko der Automatisierung in agilen Prozessen

  • Automatisierte Benutzeroberflächen bieten ein hohes Maß an Vertrauen, sind jedoch langsam in der Ausführung, anfällig in der Wartung und teuer in der Erstellung. Die Automatisierung verbessert die Testproduktivität möglicherweise nicht wesentlich, es sei denn, die Tester wissen, wie man testet
  • Unzuverlässige Tests sind ein großes Problem beim automatisierten Testen. Die Behebung fehlgeschlagener Tests und die Lösung von Problemen im Zusammenhang mit spröden Tests sollten oberste Priorität haben, um falsch positive Ergebnisse zu vermeiden
  • Wenn die automatisierten Tests manuell und nicht über CI (Continuous Integration) initiiert werden, besteht das Risiko, dass sie nicht regelmäßig ausgeführt werden und daher zum Scheitern der Tests führen können
  • Automatisierte Tests sind kein Ersatz für explorative manuelle Tests. Um die erwartete Qualität des Produkts zu erreichen, ist eine Mischung aus Testarten und -niveaus erforderlich
  • Viele im Handel erhältliche Automatisierungstools bieten einfache Funktionen wie die Automatisierung der Erfassung und Wiedergabe manueller Testfälle. Ein solches Tool fördert das Testen über die Benutzeroberfläche und führt zu von Natur aus spröden und schwer zu wartenden Tests. Außerdem führt das Speichern von Testfällen außerhalb des Versionskontrollsystems zu unnötigem Aufwandplexity
  • Um Zeit zu sparen, ist der Automatisierungstestplan oft schlecht geplant oder ungeplant, was dazu führt, dass der Test fehlschlägt
  • Ein Testaufbau und -abbau wird bei der Testautomatisierung normalerweise übersehen, während die Durchführung manueller Tests mit einem Testaufbau und -abbau reibungslos klingt
  • Produktivitätsmetriken wie die Anzahl der pro Tag erstellten oder ausgeführten Testfälle können schrecklich irreführend sein und dazu führen, dass große Investitionen in die Durchführung nutzloser Tests getätigt werden
  • Mitglieder des agilen Automatisierungsteams müssen effektive Berater sein: zugänglich, cooperaaktiv und einfallsreich, sonst wird dieses System schnell scheitern
  • Die Automatisierung schlägt möglicherweise Testlösungen vor und liefert sie, die im Verhältnis zum bereitgestellten Wert zu viel laufende Wartung erfordern
  • Bei automatisierten Tests fehlt möglicherweise das Fachwissen, um effektive Lösungen zu konzipieren und bereitzustellen
  • Automatisierte Tests können so erfolgreich sein, dass ihnen die wichtigen zu lösenden Probleme ausgehen und sie sich daher unwichtigen Problemen zuwenden.

Zusammenfassung

Bei der agilen Methodik beim Softwaretesten geht es darum, so früh wie möglich zu testen Lebenszyklus der Softwareentwicklung. Es erfordert eine hohe Einbindung des Kunden und das Testen des Codes, sobald er verfügbar ist. Der Code sollte stabil genug sein, um ihn für Systemtests zu verwenden. Um sicherzustellen, dass die Fehler behoben und getestet werden, können umfangreiche Regressionstests durchgeführt werden. Vor allem die Kommunikation zwischen den Teams macht agile Modelltests zum Erfolg!!!