Was kann ein Testengineer tun, wenn sich ein Projekt in einer frĂŒhen Phase befindet?
Ich habe immer wieder erlebt, dass in Projekten, selbst in spĂ€teren Phasen, grundlegende Annahmen entweder nicht ganz korrekt sind oder zumindest nicht verstanden und im Team infrage gestellt werden. Viele, die erst spĂ€t in das Projekt einsteigen, machen sich entweder nicht die MĂŒhe oder haben nicht das Vertrauen/den Mut, die grundlegenden Annahmen in den Anforderungen systematisch zu analysieren und zu hinterfragen. Um das Testen von Anforderungen effektiver zu gestalten, könnt ihr einen Ansatz verwenden, der als heuristisches Testen oder Testen mit einer Strategie bezeichnet wird, die sich auf vergangene Daten ĂŒber Wahrscheinlichkeiten stĂŒtzt. Diese zielgerichtete Art des Testens ermöglicht oft eine intelligentere Untersuchung der Stellen, an denen Fehler oder Probleme auftreten können, auch beim Testen von Anforderungen. Mit dieser Strategie lĂ€sst sich feststellen, welche Arten von Fehlern wahrscheinlich sind und wie hĂ€ufig Fehler in bestimmten Teilen des Codes auftreten. Es hilft auch, die Anforderungen anhand einer gesammelten Basis von Problemen zu ĂŒberprĂŒfen. Achtet darauf, dass ihr alle diese Bereiche in Anwendung abdecken: - Struktur (was das Produkt ist): Handelt es sich um ein einziges Programm oder um mehrere? Welche physischen Teile werden mitgeliefert? Kann ich es Modul fĂŒr Modul testen? - Funktion (was das Produkt macht): Was sind seine Funktionen? Welche Art von Fehlerbehandlung gibt es? Welche Art von BenutzeroberflĂ€che hat es? Gibt es etwas, das fĂŒr den Benutzer nicht sichtbar ist? Wie arbeitet es mit dem Betriebssystem zusammen? - Daten (was sie verarbeitet): Welche Arten von Eingaben werden verarbeitet? Wie sieht seine Ausgabe aus? Welche Arten von Modi oder ZustĂ€nden kann es einnehmen? Wird es mit voreingestellten Daten ausgeliefert? Ist eine der Eingaben zeit- oder sequenzierungsabhĂ€ngig? - Plattform (wovon sie abhĂ€ngt): Auf welchen Betriebssystemen lĂ€uft es? Muss die Umgebung auf besondere Weise konfiguriert werden? Ist sie von Komponenten Dritter abhĂ€ngig? - Betrieb (wie wird es verwendet): Wer wird es benutzen? Wo und wie wird sie genutzt? WofĂŒr werden sie sie nutzen? Gibt es bestimmte Dinge, die die Benutzer eher tun werden? Gibt es Benutzerdaten, die die Tests realistischer machen wĂŒrden? Ihr könnt eure eigenen Heuristiken erfinden und sie sowohl auf die gesamte Anwendung als auch auf die Anforderungsanalyse anwenden. Gute Anforderungen sollten klar und prĂ€zise sein, ohne Unklarheiten oder Mehrdeutigkeiten; sie sollten in Form von spezifischen Werten messbar sein; sie sollten prĂŒfbar und vollstĂ€ndig sein; und sie sollten keine WidersprĂŒche enthalten. Weitere LektĂŒre: https://www.softwaretestinghelp.com/how-to-test-software-requirements-specification-srs/  Um meine âVorstellungâ von QA wĂ€hrend der Projekt-/Produktentwicklung zu verdeutlichen, habe ich den folgenden Arbeitsablauf als Beispiel aufgeschrieben: - Anforderungen: Formalisiert sie, aktualisieren sie, verfolgt sie bei jedem Release, als Anwendungsfall oder User Story. - Tests definieren: Definiert, wie die User Story getestet werden soll, wobei auch RandfĂ€lle berĂŒcksichtigt werden sollten. - Werkzeuge: Findet das richtige Werkzeug/Framework/System zur Erstellung von Tests - Tests: Die Hauptarbeit der QA besteht darin, fĂŒr jede Version Tests durchzufĂŒhren oder neue Tests zu erstellen, um die meisten User Storys abzudecken. Es gibt die folgenden Testtypen: - Unit-Test: Code muss immer und ĂŒberall auf RandfĂ€lle (Null, schlimmstes Szenario) getestet werden - Integrationstest: API-Integrationstest, z. B. mit einem Tool wie Postman - Endbenutzertest: nicht automatisierbare Tests, sollten sich um die wichtigsten AnwendungsfĂ€lle kĂŒmmern und können von Hand (oder mit der Maus) durchgefĂŒhrt werden - Dokument & Retrospektive: Verfolgen von Releases, durchgefĂŒhrten / akzeptierten / fehlgeschlagenen Tests, um Einblicke in die nĂ€chsten Schritte zu erhalten, wo das Team besser werden kann Um meine Eingangsfrage beantworten: âWas kann ein Testengineer tun, wenn sich ein Projekt in einer frĂŒhen Phase befindet?â, ist fĂŒr mich - Hilfe in der Anforderungsphase: sie verstehen, helfen, sie zu verfolgen, und sicher sein, dass jede Anforderung einen Akzeptanztest haben sollte, im Klartext schreiben. Einen Weg zu finden, sie zu spezifizieren, zu verfolgen, zu organisieren und in einem "Test-Wiki/Dokument" auf dem neuesten Stand zu halten, ist eine groĂe Aufgabe. Ich habe es als nĂŒtzlich empfunden, nicht nur eine User Story/einen Use Case zu definieren, sondern eine âUser Journeyâ, um Use Cases sinnvoll miteinander zu verbinden). Das gesamte Team könnte von dieser Arbeit profitieren und der QA-Ingenieur kann besser und schneller verstehen, was das System tut und warum, und die folgenden Phasen organisieren. - fĂŒr die Definition von Tests und Werkzeugen zustĂ€ndig sein: Es ist wichtig zu entscheiden, was, wann und wo getestet werden soll! Auch hier sollte der QA-Ingenieur (natĂŒrlich mit Zustimmung des CTO!) die Verantwortung ĂŒbernehmen. Seien Sie kritisch bei der Wahl der Werkzeuge, experimentieren Sie ruhig mit anderen Werkzeugen, denn der QA-Ingenieur muss hier verantwortlich sein - Arbeit an Tests: die Kernaufgabe der QA hier. Sie sind dafĂŒr verantwortlich, dass jede Benutzergeschichte durch eine Reihe von Tests (Unit-/Integrations-/Endbenutzertests) mit einem Anteil von 70 % / 20 % / 10 % je Testart abgedeckt wird. Der kritische Pfad sollte fĂŒr jede Version der Software manuell getestet werden. - Dokumentation und Retrospektive: nicht vergessen! Helft dem Projekt-/Produktmanager, Verbesserungsmöglichkeiten zu erkennen, VorschlĂ€ge zu machen und Feedback zu Problemen zu geben, damit die Planung von Funktionen/Bildern einfacher wird. Zum Beispiel: Wir hatten eine Menge Probleme in diesem Bereich, sollten wir mehr in die Neugestaltung/Ăberarbeitung investieren? Eine Grundlage fĂŒr QualitĂ€t schaffen Im Moment bitten wir den QA-Ingenieur, die GeschĂ€ftsanforderungen des Kunden durchzugehen und die vorhandene FunktionalitĂ€t anhand dieser Anforderungen zu validieren sowie sich mit der Roadmap vertraut zu machen. Das ist fĂŒr einige SchlĂŒsselszenarien gut. DarĂŒber hinaus kann es jedoch zu einem Testaufbau fĂŒhren, der eher einer EistĂŒte als einer agilen Testpyramide Ă€hnelt, mit umfangreichen End-to-End-Selenium-Tests, die langsam und unzuverlĂ€ssig sind. Anstatt sich nur darauf zu konzentrieren, viele langsame und unzuverlĂ€ssige automatisierte UI-Tests hinzuzufĂŒgen, ist dies fĂŒr ein Unternehmen in der Anfangsphase eine Gelegenheit, das Fundament fĂŒr QualitĂ€t zu legen. SchlieĂlich werden Tests an sich ein Produkt von geringer QualitĂ€t nicht verbessern. Vor allem, wenn sie von jemand anderem geschrieben wurden. SpĂ€ter im Prozess. Um die QualitĂ€t zu verbessern und Fehler in der Software zu reduzieren, sollte ihr diese im Laufe der Zeit messen und ĂŒberwachen: - Nutzung des Produkts durch die aktuellen Produktionsbenutzer - Die Funktionen werden so genutzt, wie es sich das Unternehmen vorstellt - Es sind Messwerte fĂŒr die Nutzung durch wichtige demografische Gruppen und GerĂ€te verfĂŒgbar - Nutzung in Bezug auf Umsatz, Akzeptanz oder andere MaĂnahmen oder KPIs - LĂ€nge der Laufzeit von Testsuiten - Abdeckungsgrad der Einheitstests des Anwendungscodes - 100% sollte die allgemeine Regel sein - Test auf Parameter, die null, fehlend, leer oder nicht vorhanden sind - Durchschnittliche LOC-Methoden-/KlassengröĂen im Anwendungscode - Durchschnittliche KomplexitĂ€t der Methoden im Anwendungscode - Durchschnittlicher Zeitaufwand fĂŒr die Behebung eines Produktionsfehlers - Mittlere Zeit fĂŒr Tickets vom Eingang bis zur Bereitstellung - Mittlere Zeit zwischen Produktionsfehlern - CI UI Automation Code-Fehlerrate - Zielwert N5 (00,001%) - AnhĂ€ngige Tests - Zielwert Null - GröĂe des Backlogs - VerĂ€nderung der GröĂe des Auftragsbestands im Laufe der Zeit - Zielwert Null - Leistung der Anwendung Achtet auch auf weichere und subtilere Faktoren, die schwieriger zu messen sind, wie z.B. - Gute Benennung von Anwendungscode-Objekten - Fragen der Benutzerfreundlichkeit in Bezug auf Schriftarten, Farben und GröĂen fĂŒr alle Benutzer - Bereichsspezifische Fragen der Benutzerfreundlichkeit fĂŒr Systeme und Ăkosysteme - Maximierung der ZugĂ€nglichkeit, um den gröĂten Marktanteil zu erreichen - Maximierung der ZugĂ€nglichkeit fĂŒr Benutzer mit unterschiedlichen körperlichen FĂ€higkeiten - Emotionen im Zusammenhang mit Farbschemata - UI-Konsistenz - Verbales und interaktives Feedback von wichtigen Nutzern - All diese verschiedenen Aspekte auszubalancieren ist der Grund, warum QualitĂ€t so schwierig ist. Read the full article


















