Was ist nicht-funktionales Testen?
- 7 Minuten
In "Funktionstests in Azure Pipelines ausführen" haben Sie der Pipeline Selenium-UI-Tests hinzugefügt. UI-Tests sind eine Form von Funktionstests. In diesem Teil untersuchen Sie die Arten von nicht funktionsfreien Tests, die Sie in einer Pipeline ausführen können.
Das Team definiert zuerst nicht funktionsfreie Tests. Sie sprechen über einige Arten dieser Tests. Dann entscheiden sie sich für einen nicht-funktionalen Test, um ihn ihrer Pipeline hinzuzufügen.
Wie vergleichen sich Nichtfunktionstests mit funktionsrelevanten Tests?
Bei "Funktionstests in Azure Pipelines ausführen" haben wir Funktionstests und nicht funktionsfreie Tests definiert.
Kurz gesagt, stellen Funktionstests sicher, dass jede Funktion der Software das tut, was sie sollte. Mit anderen Worten, Funktionstests überprüfen die Funktionalität einer Anwendung.
Nichtfunktionelle Tests überprüfen nicht funktionsrelevante Aspekte einer Anwendung, z. B. Leistung und Zuverlässigkeit. Sie können auch nicht funktionsfreie Tests auf Systemen ausführen, die keine Apps sind, z. B. Infrastrukturkomponenten. Ein Beispiel für einen nicht funktionsfähigen Test ist die Bestimmung, wie viele Personen sich gleichzeitig bei einer Anwendung anmelden können, ohne ein Problem zu verursachen, z. B. langsamere Reaktionszeiten.
Auf der Space Game-Website, als Beispiel, kann ein Funktionstest überprüfen, ob die Bestenliste korrekt angezeigt wird und die richtigen Ergebnisse dargestellt werden, wenn der Benutzer einen Filter auswählt. Ein nicht funktionsfähiger Test kann überprüfen, ob die Bestenlistenfilterung in weniger als einer Sekunde abgeschlossen ist, auch wenn viele Benutzer gleichzeitig eine Verbindung mit der Website herstellen.
Nichtfunktionelle Tests testen immer etwas, das messbar ist. Ziel ist es, das Produkt zu verbessern. Sie können dies beispielsweise tun, indem Sie verbessern, wie effizient die Anwendung Ressourcen verwendet, oder indem Sie die Reaktionszeiten verbessern, wenn viele Kunden sie gleichzeitig verwenden. Hier sind einige der Fragen, die nichtfunktionelle Tests beantworten können:
- Wie funktioniert die Anwendung unter normalen Umständen?
- Wie kann die Anwendung ausgeführt werden, wenn sich viele Benutzer gleichzeitig anmelden?
- Wie sicher ist die Anwendung?
Welche Arten von nicht funktionsfreien Tests kann ich ausführen?
Es gibt viele Arten von nichtfunktionellen Tests. Viele davon passen in die breiten Kategorien von Leistungstests und Sicherheitstests.
Leistungstests
Das Ziel von Leistungstests besteht darin, die Geschwindigkeit, Skalierbarkeit und Stabilität einer Anwendung zu verbessern. Tests zur Geschwindigkeit bestimmen, wie schnell eine Anwendung reagiert. Das Testen der Skalierbarkeit bestimmt die maximale Benutzerlast, die eine Anwendung verarbeiten kann. Tests auf Stabilität bestimmen, ob die Anwendung unter unterschiedlichen Lasten stabil bleibt. Zwei häufige Arten von Leistungstests sind Belastungstests und Stresstests.
Auslastungstests
Lasttests bestimmen die Leistung einer Anwendung unter realistischen Lasten. Beispielsweise können Auslastungstests bestimmen, wie gut eine Anwendung bei der oberen Grenze ihrer Vereinbarung auf Serviceebene (SLA) ausgeführt wird. Im Grunde legt der Auslastungstest das Verhalten der Anwendung fest, wenn mehrere Benutzer sie gleichzeitig benötigen.
Benutzer sind nicht notwendigerweise Personen. Ein Auslastungstest für Druckersoftware kann der Anwendung beispielsweise große Datenmengen senden. Ein Ladetest für einen E-Mail-Server simuliert möglicherweise Tausende gleichzeitiger Benutzer.
Lasttests sind auch eine gute Möglichkeit, um Probleme aufzudecken, die nur vorhanden sind, da die Anwendung an ihren Grenzen arbeitet. Das ist der Zeitpunkt, an dem Probleme wie Pufferüberlauf und Speicherverluste auftreten können.
In diesem Modul verwenden Sie Apache JMeter, um Lasttests durchzuführen. Sie verwenden eine Reihe simulierter Benutzer, die gleichzeitig auf die Website zugreifen.
Belastungstest
Stresstests bestimmen die Stabilität und Robustheit einer Anwendung bei hoher Belastung. Die Belastungen gehen über das hinaus, was für die Anwendung angegeben ist. Die Stresstests bestimmen, ob die Anwendung unter diesen Lasten abstürzt. Wenn Fehler bei der Anwendung auftreten, sorgt der Belastungstest dafür, dass dies ordnungsgemäß geschieht. Bei einem ordnungsgemäßen Fehler wird beispielsweise eine angemessene, informative Fehlermeldung angezeigt.
Szenarien, in denen Anwendungen unter ungewöhnlich hohen Lasten ausgeführt werden müssen, sind üblich. Wenn Ihr Video beispielsweise viral wird, sollten Sie wissen, wie gut die Server die zusätzliche Last verarbeiten können. Ein weiteres typisches Szenario ist ein hoher Datenverkehr auf Shopping-Websites während der Feiertage.
Sicherheitstests
Sicherheitstests stellen sicher, dass Anwendungen frei von Sicherheitsrisiken, Bedrohungen und Risiken sind. Gründliche Sicherheitstests finden alle möglichen Schlupflöcher und Schwachstellen des Systems, die zu einer Informationsverletzung oder einem Umsatzverlust führen können.
Es gibt viele Arten von Sicherheitstests. Zwei davon sind Penetrationstests und Compliancetests.
Penetrationstests
Penetrationstests oder Stifttests sind eine Art von Sicherheitstests, die die unsicheren Bereiche der Anwendung testen. Insbesondere testet er auf Sicherheitsrisiken, die ein Angreifer ausnutzen könnte. Ein autorisierter, simulierter Cyberangriff ist in der Regel Teil des Penetrationstests.
Kompatibilitätstest
Compliancetests bestimmen, ob eine Anwendung bestimmte Anforderungen innerhalb oder außerhalb des Unternehmens erfüllt. Beispielsweise müssen Gesundheitsorganisationen in der Regel HIPAA (Health Insurance Portability and Accountability Act of 1996) einhalten, das Datenschutz- und Sicherheitsbestimmungen zum Schutz medizinischer Informationen bereitstellt.
Eine Organisation verfügt möglicherweise auch über eigene Sicherheitsanforderungen. Software muss getestet werden, um sicherzustellen, dass sie diesen Anforderungen entspricht. Beispielsweise muss die Standardbenutzermaske auf Linux-Systemen 027 oder restriktiver sein. Ein Sicherheitstest muss nachweisen, dass diese Anforderung erfüllt ist.
Der Plan
Im rest dieses Moduls richten Sie Ihre Azure DevOps-Umgebung ein, erfahren Sie mehr über die Planung von Auslastungstests mithilfe von Apache JMeter und führen Lasttests in Azure Pipelines aus.