Heute ist das Testen von Software einer der Schlüsselprozesse für die Erstellung eines Produkts. Es spielt keine Rolle, welche Methodik, Vorgehensweise, Prozess oder Softwaretests Sie in irgendeiner Weise verwenden, die immer in Ihrem Prozess vorhanden sind. In den letzten Jahren (und vielleicht sogar in einem Jahrzehnt) hat sich das Testen von Software zu einem separaten Bereich der IT entwickelt, der sich in der globalen Gemeinschaft ständig weiterentwickelt.
Und ja, heute sprechen wir über gewöhnliche manuelle (funktionale) Tester ohne Vorurteile in Bezug auf Automatisierung, Arbeitsbelastung und andere technische Testarten!Jetzt ist der Beruf eines manuellen Testers einer der beliebtesten IT-Prozesse und eine der einfachsten Möglichkeiten, in die IT einzusteigen.
Warum?
Da Tester nichts tun, benötigen sie kein Wissen. Jeder kann testen!Weil der Beruf eines manuellen Testers in der Anfangsphase keine spezifischen Kenntnisse und Fähigkeiten erfordert. Das wichtigste „Wissen“ für den Tester ist die Fähigkeit, „zu zerstören“ und analytisches Denken. Und vor allem - eine nicht standardmäßige Denkweise zu haben, nicht triviale Lösungen für die Aufgaben zu finden. Ein bestimmtes Monster, das weiß, wie man zerquetscht und bricht :)
Harte Fähigkeiten können immer vermittelt werden, aber leider sind weiche Fähigkeiten sehr schwer zu vermitteln, da dies der Charakter der Person, ihre Einstellung zu etwas usw. ist. Normalerweise sehe ich Manager schief an, die Spezialisten für manuelle Tests auf harte Fähigkeiten einstellen. Warum machst du das ??? (Sie können Antworten in den Kommentaren hinterlassen) Nun, okay, lass uns fortfahren :)
Wenn wir die technischen Merkmale des Testens berücksichtigen, die ein manueller Tester kennen sollte, dann können sie in zwei Hauptteile unterteilt werden,
vielleicht stimmen viele nicht mit mir überein, sie schreien so, Sie irren sich, das Testen ist sehr schwierig - es ist Vorbereitung auf das Testen und Testen.
Wir werden den interessantesten und faszinierendsten Teil des Testens betrachten - die Vorbereitung auf das Testen. In diesem Teil des Testprozesses hängt es davon ab, wie gut und korrekt Sie den Test selbst durchführen, die erforderlichen Fehler finden und das
zufriedene Gesicht des Kunden (oder des Produkts des Partners) sowie die Qualität der Aufgabe nach der Implementierung sicherstellen.
Viele von Ihnen, die auf die eine oder andere Weise am Testen beteiligt waren, bereiteten sich auf das Testen vor. Der Unterschied besteht normalerweise nur darin, wie stark Sie diese Phase des Testprozesses formalisieren. Wenn Sie Forschungstests durchführen, schreiben Sie keine Testskripte, sie
geben Ihnen ein System und Sie stürzen sich sofort in den Kampf, trotzdem bereiten Sie sich auf das Testen vor. Bei einfachen Projekten bemerkt der Tester dies häufig nicht, da die Phase der Analyse und Vorbereitung auf das Testen auf einer unbewussten Ebene stattfindet. Trotzdem ist er immer noch da.
Und in dieser Artikelserie werden wir darüber sprechen.
An meinem Arbeitsplatz biete ich häufig Schulungen für Handheld-Tester an und stoße auf Situationen, in denen anscheinend jeder von Testdesign-Techniken gehört hat, diese aber bei der Arbeit von niemandem verwendet werden.
Es sieht so aus:
- Warum brauchen wir Testdesign-Techniken?
- Um Validierungen für Tests korrekt zu identifizieren.
- Verwenden Sie sie in Ihrer Arbeit?
- Ausdrücklich nicht, wir selbst bestimmen, was überprüft werden muss.
Warum passiert das? Schließlich sind Testdesign-Techniken die Grundlage für das Schreiben von Testskripten. Dies ist das Gleiche wie Autofahren, ohne die Verkehrsregeln zu kennen. Warum verwenden Tester sie nicht in ihrer Arbeit?
Die Antwort ist einfach.
Erstens, wenn Tester in Testkursen (oder im Selbststudium an Büchern und Artikeln) unterrichtet werden, wird ihnen erklärt, wie sie Testdesign-Techniken auf elementare Beispiele anwenden können. Das Hauptproblem einer solchen Schulung besteht darin, dass Tester das erworbene Wissen nicht auf ihre eigentlichen Aufgaben übertragen können. Verwenden Sie also Testdesign-Techniken in der täglichen Arbeit.
Zweitens ist dieser Prozess beim Unterrichten von Testdesign-Techniken sehr formalisiert, was so aussieht, als müsste ein Tester alles in seiner Arbeit formalisieren. Und normalerweise braucht das niemand für jemanden.
Mit einfachen Worten, die Testdesign-Techniken sind eine Reihe von Regeln, mit denen Sie die Liste der zu testenden Prüfungen korrekt bestimmen können. Und das Wichtigste ist,
diese Regeln immer und überall zu verwenden :) , um diese Regeln auf einer intuitiven Ebene anwenden zu können. Es ist die Fähigkeit, „Analysen im Kopf durchzuführen“, die einen guten Tester auszeichnet!
In meiner Organisation sind die Aufgaben des Testdesigns neben allgemein anerkannten Standards und Praktiken:
- Testanforderungen und Risikoanalyse
- Definieren von Prüfungen zum Testen
- Formalisierung von Prüfungen in Form von Testskripten
- Priorisierung von Schecks
- Testansätze definieren
In dieser Artikelserie werde ich versuchen, Ihnen nicht nur die Testdesign-Techniken zu erläutern, sondern auch, wie Sie ALLE (dh alle zusammen und nicht ein oder zwei bestimmte) in der Praxis einsetzen können, einschließlich des Beispiels für die Funktionalität unserer Bank. Generieren von Testprüfungen mithilfe von Testdesign-Techniken für große Systeme und Prozesse. Und vor allem erhalten Sie eine Antwort darauf, wann und in welchen Tests Testdesign-Techniken angewendet werden sollen.
Also fangen wir an.
Und wir werden mit der einfachsten beginnen, nämlich mit zwei grundlegenden Testdesign-Techniken, von denen jeder gehört hat, und ich bin sicher, dass sie angewendet wurden, aber höchstwahrscheinlich auf einer intuitiven Ebene in ihrer Arbeit.
Dies sind Äquivalenzklassen und Grenzwerte.
Was sind Äquivalenzklassen?
Die Äquivalenzklasse ist ein Satz von Eingabe- (oder Ausgabe-) Softwaredaten, die von einem Programm gemäß einem Algorithmus verarbeitet werden oder zu einem Ergebnis führen.
Das heißt, dies ist eine bestimmte Menge von Werten, die Sie im Programm ersetzen können, um das gleiche Ergebnis zu erzielen. Das Ergebnis können nicht nur bestimmte Werte, Programmaktionen, sondern auch nur der Umfang sein. Daher sind die einfachsten Äquivalenzklassen, in die die Tests unterteilt sind, zwei Hauptklassen: positive und negative Szenarien.
Sie sind immer da. Jeder Tester unterteilt die Schecks in diese Klassen, aber nicht jeder Tester weiß, warum er das tut. Die Antwort sind Äquivalenzklassen.
Ferner kann jede Äquivalenzklasse in zusätzliche Klassen usw. unterteilt werden. Bis die Überprüfungen nicht zu punktuellen und spezifischen Testergebnissen führen.
Betrachten Sie ein Beispiel:Das Bewertungssystem berechnet den Zinssatz für einen Kredit für einen Kunden basierend auf seinem Alter, der in der folgenden Form eingegeben wird:
- Von 18 bis 25 Jahren - 18%
- 25 bis 45 Jahre alt - 16%
- Über 45 Jahre - 20%
Wir definieren 2 Hauptklassen - dies sind
positive und negative Szenarien.
Positive Szenarien sind alle Werte, die zum Ergebnis führen, negative Szenarien sind die Werte, deren Ergebnisse nicht als erwartetes Ergebnis beschrieben werden.
Als nächstes teilen wir die Klasse der positiven Szenarien in 3 Klassen von Eingabewerten 18-24, 25-44 und 45 + ein
In der Klasse der negativen Szenarien bilden wir Werte basierend auf der Notwendigkeit, nach Programmfehlern zu suchen, sodass wir 0, 1-17, negative Werte, Zeicheneingabe usw. haben.
Das Ergebnis dieser Partition ist ein Wert oder Wertebereich, in dem nur eine Prüfung mit einem Wert aus dem Datenbereich durchgeführt werden muss. Situationen wie ein einzelner Wert in einem Bereich können auftreten. Dies ist auch eine separate Äquivalenzklasse und muss ebenfalls überprüft werden.
Insgesamt haben wir.
- Positive Prüfungen: Eingabe von Werten: 19, 30, 48 (Werte können aus einem bestimmten Bereich der Klasse stammen)
- Negative Prüfungen: 0, 3, -1, A usw.
Es ist sehr wichtig, dass Testdesign-Techniken nicht unabhängig von den anderen angewendet werden! Jetzt betrachten wir sie separat, aber am Ende werde ich Ihnen beibringen, wie man sie zusammen verwendet.
Ein weiteres Merkmal von Äquivalenzklassen ist ihre Anwendung. Ich unterscheide 3 Ebenen der Anwendung von Testdesign-Techniken, um mich auf das Testen vorzubereiten.
- Die erste Ebene überprüft die Elemente des Systems (z. B. Felder, Kontrollkästchen, Schaltflächen usw.).
- Die zweite Ebene - Überprüfung der Logik des Systems beim Kombinieren von Daten in den Elementen des Systems
- Die dritte Ebene überprüft den Geschäftsprozess des Systems und die Logik des Programms.
Optisch sieht es so aus:
Äquivalenzklassen sind für die 1. Ebene relevanter und werden zum Testen von Programmelementen verwendet. Ideologisch kann dieser Ansatz jedoch auf andere Ebenen angewendet werden.
Ein wesentlicher Bestandteil der Überprüfung eines Elements ist eine andere Technik -
Grenzwerte .
Grenzwerte ergänzen äquivalente Klassen und decken damit die Prüfungen des Softwareelements vollständig ab.
Grenzwerte sind eine Testdesign-Technik, die Äquivalenzklassen durch zusätzliche Überprüfungen an der Randgrenze von Bedingungen ergänzt.
Es scheint, dass alles einfach ist!
Kehren wir früher zu unserem Beispiel zurück.
Das Bewertungssystem berechnet den Zinssatz für einen Kredit für einen Kunden basierend auf seinem Alter, der in der folgenden Form eingegeben wird:
- Von 18 bis 25 Jahren - 18%
- 25 bis 45 Jahre alt - 16%
- Über 45 Jahre - 20%
Was wird die Grenze hier sein?
Wenn Sie über die Länge des Feldes auf der Habra-Seite nachgedacht haben oder über einen Urlaub in warmen Ländern, möchte ich Sie verärgern, das ist nicht so :)
Was zur Bestimmung der Grenzwerte benötigt wird, benötigt etwas anderes. Bestimmen Sie nämlich, welche Werte der Anfang und das Ende unserer Klasse sind. Und das Wichtigste !!! Jahrelange Forschungen auf dem Gebiet der Tests haben gezeigt, dass die meisten Fehler von Testern an der Schnittstelle von Werten gefunden werden, die die Arbeitsbedingungen des Programms ändern.
Daher verwenden wir zusätzlich zum Grenzwert weitere 2 Werte zum Testen, den Wert vor der Grenze und den Wert nach der Grenze.
Als Ergebnis haben wir:
Die Grenzen unserer Klassen: 17, 18, 19, 24, 25, 26, 44, 45, 46 und max.
Wir haben auch eine negative Klasse, sie liegt zwischen 0 und 18. Daher müssen wir hier auch die Grenzwerte zum Testen verwenden: -1, 0, 1, 17,18
Als nächstes schließen wir doppelte Werte aus und erhalten Werte zum Überprüfen des Dateneingabeelements.
-1, 0, 1, 17, 18, 19, 24, 25, 26, 44, 45, 46, max.
Der Maximalwert wird normalerweise vom Kunden oder Analysten festgelegt. Wenn Sie nicht angeben können, sollten Sie es fallen lassen und nicht überprüfen. Sie müssen den Wert auswählen, der dem gesunden Menschenverstand entspricht (kaum jemand wird im Alter von 100 Jahren Kredite aufnehmen).
Der nächste Schritt besteht darin, den Werten von Äquivalenzklassen Grenzwerte aufzuerlegen, unnötige Prüfungen mit der Regel „Ein Wert reicht aus, um eine Klasse zu prüfen“ auszuschließen und die Liste abzuschließen.
Wenn wir früher 3 Werte für 3 Klassen hatten, 19, 30 und 48, können wir nach dem Bestimmen der Grenzwerte die Werte 30 und 48 von der Liste ausschließen und durch Vorgrenzwerte wie 26 (anstelle von 30) und 46 (46) ersetzen. statt 48).
Grenzwerte werden nicht nur für numerische Werte bestimmt, sondern auch für alphabetische Werte (z. B. die Grenzen des Alphabets und der Codierung), Datum und Uhrzeit sowie semantische Werte. Die Grenze der numerischen Werte hängt vom Eingabeformat ab. Wenn Sie Ganzzahlen haben, z. B. 2, sind die Grenzwerte 1 und 3. Wenn Bruchwerte sind, sind die Grenzen für die Zahl 2 bereits 1,9 (1,99) oder 2,1 ( 2.01) usw.
Testdesign-Techniken der Stufe 1 sind einfach und unkompliziert. Ich denke, Sie werden sagen, dass es einfach ist, aber warum sollten Sie jedes Element gründlich prüfen? Und du wirst recht haben!
Meistens werden sie bei der Entwicklung neuer Software verwendet, da sie nach Überprüfung der Elemente des Systems während der Entwicklung nicht häufig Änderungen auf der Betriebsebene des Elements unterliegen. Sie müssen nicht ständig jeden Elementwert in jedem Bildschirm Ihres Programms überprüfen. Beachten Sie jedoch, dass Sie bei einer Änderung der Verarbeitungslogik der Programmelemente erneut überprüfen müssen, ob die Elementwerte korrekt verarbeitet wurden.
Na zu einfach ??? Jetzt werden wir beginnen, komplexere Techniken zu analysieren und uns fertig zu machen.Testdesign-Techniker der Stufe 2 sind für die Variabilität und Kombinatorik von Daten beim Testen von Software verantwortlich.
Die Haupttechnik des
Testdesigns ist das
parweise Testen (paarweises Testen) . Das Wesentliche der Technik besteht darin, die Variabilität der Kombinationen von Überprüfungen zu minimieren, die ausreichen, um eine qualitativ hochwertige Software sicherzustellen.
Mit einfachen Worten, bei dieser Technik wird die Pareto-Regel angewendet. 80% der Qualität können in nur 20% der Datenkombinationsprüfungen erreicht werden.
Diese Technik wurde durch mehr als 15 Jahre IEEE-Forschung auf dem Gebiet der Analyse der Ursachen von Defekten im System entwickelt. Die Ergebnisse der Studie zeigten, dass 98% aller Fehler auftreten, wenn ein Konflikt zwischen Eingabedatenpaar oder einem Eingabeparameter auftritt.
Warum wurde das Paar ausgewählt?
Tauchen Sie ein in den Dschungel der mathematischen Statistik und der Wahrscheinlichkeitstheorie, um die Antwort zu finden .
Natürlich werden wir heute nicht dorthin gehen. Die Wahrscheinlichkeitstheorie ist für einfache IT-Spezialisten zu kompliziert. Alles ist einfach. Nehmen Sie ein gewöhnliches Würfelspiel mit 6 Gesichtern.
Wenn der Verlust des Wertes 2 ein Defekt ist, dann beträgt die Wahrscheinlichkeit eines Defekts beim Werfen eines Würfels 1/6 = 0,167.
Wenn wir 2 Würfel werfen, wird die Wahrscheinlichkeit, 2 Zweien (2 Fehler) zu fallen, geringer und gleich 0,167 * 0,167 = 0,028, für 3 bereits 0,005 usw.
Es stellt sich heraus, dass die Wahrscheinlichkeit, dass ein Fehler mit einer Kombination von 3 oder mehr Parametern auftritt, so gering ist, dass er verworfen werden kann.
Wenn wir das Programm testen, gibt es immer n Elemente, die das Ergebnis beeinflussen, z. B. das Formular zum Ausfüllen von Daten zu einem Kreditantrag. Es gibt n Felder, die zusammen ein Ergebnis ergeben. Es ist die Kombinatorik der Daten beim Ausfüllen der Felder, die wir mit paarweisen Tests überprüfen.
Schauen wir uns ein Beispiel für die Funktionalität eines Remote-Kartendesigns in einer Bank an.
Wenn wir genau hinschauen, sehen wir mit Ihnen fünf Datenfelder:
- Vollständiger Name
- Geburtsdatum
- Handy
- Passnummer Serie
- E-Mail,
- sowie 2 Kontrollkästchen.
Unsere Aufgabe besteht darin, unter Verwendung der Techniken der ersten Ebene die Liste der Äquivalenzklassen zu bestimmen, die das Programm annehmen kann.
Es ist WICHTIG, dass bei Verwendung der paarweisen Testtechnik nicht über das Testergebnis gesprochen wird. Es ist wichtig, dass wir beim Ausfüllen des Antrags die Variabilität der Daten überprüfen.
Also
Das vollständige Namensfeld kann Werte (Klassen) annehmen:
- Name auf Russisch
- Ungültiger Wert
- Leerer Wert
Sehr oft verstehen Tester nicht, welche Werte für eine bestimmte Technik zu wählen sind, wenn sie nicht durch die Eingabefähigkeit eingeschränkt sind. Wenn wir zum Beispiel die Möglichkeit haben, das Geschlecht einer Person M oder F zu wählen, ist alles einfach, es gibt zwei Bedeutungen. Wenn wir jedoch eine Zeile für die Dateneingabe haben, überprüfen wir beim paarweisen Testen nicht die Richtigkeit des Füllens eines bestimmten Feldes, weil Diese Überprüfungen sollten auf der ersten Ebene des Testdesigns durchgeführt werden (oder mit paarweisen Tests kombiniert werden). Wir verwenden die Äquivalenzklasse für dieses Feld, da es uns egal ist, welchen Wert es haben wird.
Wir gehen weiter, das
Geburtsdatum sowie das
Mobiltelefon, die Serien- und Passnummer können auch 3 Zustände haben:
- Gültiger Wert
- Ungültiger Wert
- Leerer Wert
Weil
E-Mail ist optional, dieses Feld hat 2 Werte:
- Gültiger Wert
- Ungültiger Wert
Kontrollkästchen haben normalerweise nur 2 Zustände - Y oder N.
Um alle Kombinationen dieses Formulars zu überprüfen, müssten wir über 1000 Tests durchführen, aber bei paarweisen Tests benötigen wir nur 9 Tests!
Magie, glaube ich nicht :)
Der nächste Schritt besteht darin, ein orthogonales Array mit Datenkombinationen zusammenzustellen. Der einfachste Weg, ein Array zu kompilieren, besteht darin, Daten paarweise zu füllen, beginnend mit den Elementen mit der höchsten Anzahl von Werten und dann absteigend. Da es in unserem Beispiel 4 Elemente mit der gleichen Anzahl von Werten gibt, können wir ein beliebiges Paar auswählen.
Wir nehmen vollständige Namens- und Passnummernserien. Unsere Aufgabe ist es, alle Werte eines bestimmten Paares untereinander zu sortieren:
Nachdem wir ein Paar durchlaufen haben, erstellen wir ein weiteres Paar und beginnen, die Werte (z. B. die Mobiltelefonnummer) zu durchlaufen.
Wir verbinden das nächste Element und so weiter, bis die gesamte Tabelle vollständig gefüllt ist. Dies sieht folgendermaßen aus:
Somit erhalten wir 9 Tests mit spezifischen Äquivalenzklassen, die wir einführen können, um die Arbeit der Datenvariabilität für das Formular zu testen. Wir können die Klassen mit bestimmten Werten füllen, die wir mit Ihnen unter Verwendung der ersten Stufe der Testdesign-Technik erhalten.
Abschließend möchte ich sagen, dass die überprüften Testdesign-Techniken nur einen Teil der Überprüfungen zum Testen des Programms abdecken, nämlich die Überprüfung des korrekten Betriebs der Programmelemente und des Ergebnisses ihrer Kombinationen während des Betriebs. Im zweiten Teil werden wir uns mit Testdesign-Techniken befassen, mit denen Sie die Wunder des Testens anwenden können, um die Logik des Programms und der Prozesse zu testen. Dies ist eine sehr wichtige Komponente des manuellen Testens, und genau das testen Sie häufig bei Ihrer Arbeit!
Hoffe es war hilfreich!