Umfassende Kategorien für mich wären:
Black-Box-Test . Sie können den Code nicht sehen und testen nur blind, bis zu einem gewissen Grad, da das, was sich in der Anwendung oder im System befindet, vor Ihnen verborgen ist. Daher kennen die Leute in diesem Fall nicht alle Fehlerfälle und müssen mit verschiedenen Randbedingungen rechnen, die offensichtlich sein können oder nicht, um alle Fälle zu finden.
White-Box-Test . Sie können den Code anzeigen und überprüfen, welche Codepfade verwendet werden, sodass die Codeabdeckung als Metrik verwendet werden kann, um sicherzustellen, dass die gesamte Logik im System verwendet wird. Die Idee hier ist zu wissen, wie der Code aussieht, um die Tests zu leiten, damit er nicht so mysteriös ist wie Black-Box-Tests.
Gray-Box-Tests sind ein Hybrid aus den beiden vorherigen.
Grenzfälle sind in der Regel etwas, was man beim White-Box-Testen sieht, da im Code, den man für Treffer schreibt, verschiedene Bedingungen zu sehen sind, z. B. wenn Sie ein Programm hatten, das nach einer Zahl fragt, und jemand X eingibt, wie dies gehandhabt wird sollte irgendwo im Code zu sehen sein.
Allgemeine Klassifikationen von Tests wären:
Unit-Tests . Dies sind in der Regel die kleinsten Tests, die etwas Bestimmtes testen. Behandelt diese Methode z. B. diesen Grenzfall? Beachten Sie, dass die Abhängigkeitsinjektion hier für Fälle verwendet werden kann, in denen Scheinobjekte verwendet werden, um Abhängigkeiten für die Tests zu verringern.
Integrationstests . Hierbei handelt es sich um Tests, bei denen einige Komponenten verbunden sind und Tests ausgeführt werden, um sicherzustellen, dass die Komponenten gut zusammenarbeiten. Beachten Sie, dass die Komponententests möglicherweise unabhängig voneinander ausgeführt werden. Hier wird jedoch geprüft, wie gut die Dinge zusammenpassen, da es möglicherweise zu einer Fehlkommunikation zwischen den Ebenen kommt, die dazu führt, dass diese Tests beim Auffangen verschiedener Fallstricke hilfreich sind. Der Begriff End-to-End-Tests wird für Integrationstests verwendet, bei denen eine vollständige Kette von Komponenten von "einem Endpunkt der Anwendung zu einem anderen" getestet wird (was auch immer das bedeutet).
Regressionstests . Dies sind Tests, die in der Vergangenheit durchgeführt wurden und erneut durchgeführt wurden, um sicherzustellen, dass das, was behoben wurde, weiterhin behoben bleibt und Fehler nicht erneut in den Code eingefügt werden.
Usability-Tests . Dies wären Tests, um festzustellen, wie gut Endbenutzer mit der Software arbeiten können, um verschiedene Aufgaben zu erledigen. Wo könnte etwas automatisiert werden, um etwas schneller zu machen, oder um die Benutzeroberfläche so anzupassen, dass etwas einfacher zu bedienen ist?
Benutzerakzeptanztests . Dies wären Tests, die von Endbenutzern durchgeführt werden, um aus erster Hand zu sehen, wie etwas funktioniert, und um zu bestätigen, dass die Software die geschäftlichen Anforderungen erfüllt, die sie an erster Stelle gestellt haben.
Funktionstests sind alle Arten von Tests, die auf den Funktionsspezifikationen der zu testenden Software basieren. Dies sind immer Black-Box-Tests.
Leistungstests. Dies wären Tests, die durchgeführt werden, um sicherzustellen, dass ein System eine bestimmte Lastmenge bewältigen kann, ohne zu langsam zu werden. Das Testen einer neuen Server-Webfarm kann beispielsweise dazu führen, dass 100 Benutzer gleichzeitig auf eine Site zugreifen. Dies ist ein Beispiel für einen Leistungstest. Dies kann auch als "Belastungstest" oder "Belastungstest" bezeichnet werden, da hier im Allgemeinen versucht wird, entweder das System an seine Grenzen zu treiben oder zu überprüfen, ob das System Projektionen von einer anderen Abteilung verarbeiten kann. Der Grund für diese Tests ist, dass häufig zahlreiche Konfigurationseinstellungen optimiert werden müssen, die mehr als nur ein wenig Arbeit erfordern, um Engpässe zu erkennen und Probleme damit zu beheben. Der Engpass hier könnte Speicher, E / A, CPU oder Netzwerkbandbreite sein, die dazu führen, dass das System nicht so schnell reagiert wie erwartet.
Testgesteuerte Entwicklung ist eine Methodik und bezieht sich nicht auf eine bestimmte Art von Test, sondern darauf, dass Tests vor dem Code geschrieben werden, sodass die Tests eher die Entwicklung als das Verhalten , die Domäne oder die Funktion bestimmen, was andere Beispiele sind Prozess.
Bei der kontinuierlichen Integration werden einige Tests, wie z. B. Einheiten-, Integrations- und Regressionstests, regelmäßig ausgeführt, damit diese so früh wie möglich abgefangen werden, wenn eine Änderung einen Test bricht.