EinfĂŒhrung
Guten Tag, liebe Habr-Benutzer. KĂŒrzlich habe ich eine Testaufgabe fĂŒr die Stelle als QA Lead bei einem Fintech-Unternehmen bearbeitet. Die erste Aufgabe bestand darin, einen Testplan mit einer vollstĂ€ndigen Checkliste und Beispielen fĂŒr TestfĂ€lle zur ĂberprĂŒfung eines elektrischen Wasserkochers zu erstellen, was sich als recht trivial herausstellte:
Einen besseren Testplan mit einer vollstÀndigen Checkliste zu entwickeln, ist kaum möglich.
Die zweite Frage lautete: "Gibt es Probleme, die allen Testern gemeinsam sind und die die Effizienz ihrer Arbeit beeintrÀchtigen?"
Das erste, was mir in den Sinn kam, war, alle mehr oder weniger bemerkenswerten Probleme aufzulisten, mit denen ich beim Testen konfrontiert wurde, unwichtige Punkte herauszufiltern und den Rest zu verallgemeinern. Doch schnell wurde mir klar, dass die induktive Methode die Frage nicht fĂŒr "alle", sondern bestenfalls fĂŒr "die meisten" Tester beantworten kann. Daher entschloss ich mich, die deduktive Herangehensweise zu wĂ€hlen, und hier ist, was dabei herauskam.
Definitionen
Das Erste, was ich normalerweise tue, wenn ich eine neue Aufgabe angehe, ist, zu versuchen, zu verstehen, worum es dabei geht. Dazu muss ich die Bedeutung der Begriffe, mit denen sie formuliert ist, begreifen. Die SchlĂŒsselbegriffe, die es zu klĂ€ren gilt, sind:
- ein Problem
- Tester
- Arbeit eines Testers
- Effizienz der Arbeit eines Testers
Schauen wir in die Wikipedia und auf den gesunden Menschenverstand:
(altgriechisch ÏÏÏÎČληΌα) bedeutet im weitesten Sinne - eine komplexe theoretische oder praktische Frage, die Studium und Lösung erfordert; in der Wissenschaft - eine widersprĂŒchliche Situation, die durch gegensĂ€tzliche Positionen in der ErklĂ€rung bestimmter PhĂ€nomene, Objekte und Prozesse gekennzeichnet ist und eine adĂ€quate Theorie zu ihrer Lösung benötigt; im Leben wird das Problem in einer fĂŒr die Menschen verstĂ€ndlichen Form formuliert: âIch weiĂ, was ich will, aber ich weiĂ nicht, wieâ. Das bedeutet, dass bekannt ist, was erreicht werden muss, aber unklar bleibt, wie man es erreichen kann. Der Begriff stammt aus dem spĂ€ten Lateinischen problÄma, aus dem Griechischen ÏÏÏÎČληΌα ânach vorne geworfen, voran gestelltâ; von ÏÏÎżÎČÎŹÎ»Î»Ï ânach vorne werfen, sich prĂ€sentieren; anklagenâ.
Im Grunde genommen bedeutet âProblemâ nicht viel, es ist einfach âirgendetwas, das geklĂ€rt werden mussâ.
â Fachkraft (wir unterscheiden nicht nach Arten, da uns alle Tester interessieren), die an der PrĂŒfung eines Komponenten oder Systems beteiligt ist, deren Ergebnisse sind:
â eine Reihe von AktivitĂ€ten, die sich auf das Testen beziehen.
(lat. effectivus) â das VerhĂ€ltnis zwischen dem erreichten Ergebnis und den eingesetzten Ressourcen (:2015).
â die Konsequenz einer Reihe von Handlungen oder Ereignissen, die qualitativ oder quantitativ ausgedrĂŒckt werden. Mögliche Ergebnisse umfassen Vorteil, Unannehmlichkeit, Nutzen, Verlust, Wert und Sieg.
Wie bei dem "Problem" hat dies wenig Sinn: etwas, das am Ende der Arbeit herausgekommen ist.
â quantitativ messbare FĂ€higkeit, irgendeine TĂ€tigkeit eines Menschen oder von Menschen auszufĂŒhren; Bedingungen, die es ermöglichen, durch bestimmte Transformationen das gewĂŒnschte Ergebnis zu erzielen. Ein Tester ist ein Mensch, und gemÀà der Theorie der Vitalressourcen besitzt jeder Mensch vier wirtschaftliche Vermögenswerte:
Finanzen (Einkommen) â eine erneuerbare Ressource;
Energie (Lebensenergie) â eine teilweise erneuerbare Ressource;
Zeit ist eine feste und prinzipiell nicht erneuerbare Ressource;
Wissen (Information) ist eine erneuerbare Ressource, ein Teil des Humankapitals, das sowohl wachsen als auch abbauen kann..
Ich möchte anmerken, dass die Definition von Effizienz in unserem Fall nicht ganz korrekt ist, da die Effizienz sinkt, je mehr Wissen wir nutzen. Daher wĂŒrde ich Effizienz als "VerhĂ€ltnis zwischen erzieltem Ergebnis und eingesetzten Ressourcen" neu definieren. Dann ist alles korrekt: Wissen wird bei der Arbeit nicht verbraucht, reduziert jedoch die Kosten der einzigen prinzipiell nicht erneuerbaren Ressource eines Testers â seiner Zeit.
Lösung
Lassen Sie uns also die globalen Probleme der Tester untersuchen, die die Effizienz ihrer Arbeit beeintrÀchtigen.
Die bedeutendste Ressource, die bei der Arbeit eines Testers aufgebraucht wird, ist seine Zeit (alle anderen können irgendwie darauf zurĂŒckgefĂŒhrt werden), und damit wir von einer korrekten Berechnung der Effizienz sprechen können, muss auch das Ergebnis in Bezug auf die Zeit betrachtet werden.
Dazu betrachten wir ein System, dessen LebensfÀhigkeit durch die Arbeit eines Testers gewÀhrleistet wird. Ein solches System ist ein Projekt, in dem ein Tester Teil des Teams ist. Der Lebenszyklus des Projekts lÀsst sich grob in folgendem Algorithmus darstellen:
- Arbeiten mit Anforderungen
- Erstellung des Pflichtenhefts
- Entwicklung
- Testen
- Produktionsfreigabe
- Support (zurĂŒck zu Punkt 1)
Dabei kann das gesamte Projekt rekursiv in Teilprojekte (Features) untergliedert werden, die denselben Lebenszyklus aufweisen.
Aus Sicht des Projekts ist die Effizienz seiner Umsetzung umso gröĂer, je weniger Zeit dafĂŒr aufgewendet wird.
Somit gelangen wir zu der Definition der maximal möglichen Effizienz eines Testers aus Projektsicht â dies ist der Zustand des Projekts, in dem die Testzeit gleich null ist. Das allgemeine Problem fĂŒr alle Tester besteht darin, dass dieser Zustand nicht erreicht werden kann.
Wie sollte man damit umgehen?
Die Schlussfolgerungen sind durchaus offensichtlich und werden von vielen bereits lange genutzt:
- Entwicklung und Test sollten praktisch zeitgleich beginnen und enden (in der Regel wird dies von der Abteilung ). Eine ideale Lösung besteht darin, dass alle entwickelten Funktionen zum Zeitpunkt der Fertigstellung bereits durch automatisierte Tests abgedeckt sind, die in eine Regressionstestsuite (und wenn möglich, auch in Pre-Commit-Tests) organisiert sind, basierend auf einem bestimmten .
- . Je mehr Funktionen ein Projekt hat (je komplexer es ist), desto mehr Zeit muss aufgewendet werden, um sicherzustellen, dass die neuen Funktionen die alten nicht beschÀdigen. Daher gilt: Je komplexer das Projekt, desto mehr Automatisierung ist erforderlich. .
- . Jedes Mal, wenn wir einen Bug in die Produktion ĂŒbersehen und ein Benutzer ihn findet, mĂŒssen wir zusĂ€tzliche Zeit aufwenden, um den Projektlebenszyklus ab Punkt 1 (Arbeit mit Anforderungen, in diesem Fall den Benutzern) zu durchlaufen. Da die GrĂŒnde fĂŒr das Ăbersehen eines Bugs im allgemeinen unbekannt sind, bleibt uns nur ein Weg zur Optimierung: Jeder von Benutzern gefundene Bug sollte in die Regressionstests aufgenommen werden, um sicherzustellen, dass er nicht erneut auftritt.
Quelle: habr.com
