Was sind nicht funktionale Tests?

Abgeschlossen

In Ausführen von Funktionstests in Azure Pipelines haben Sie Tests für die Selenium-Benutzeroberfläche zur Pipeline hinzugefügt. Benutzeroberflächentests sind eine Art der Funktionstests. In diesem Teil untersuchen Sie die nicht funktionalen Tests, die Sie in einer Pipeline ausführen können.

Das Team definiert zuerst nicht funktionale Tests. Sie sprechen über einige Arten dieser Tests. Anschließend entscheiden sie sich für einen nicht funktionalen Test, der der Pipeline hinzugefügt werden soll.

Vergleich zwischen nicht funktionalen Tests und Funktionstests

In Ausführen von Funktionstests in Azure Pipelines wurden Funktionstests und nicht funktionale Tests definiert.

Kurz gesagt wird mit Funktionstests überprüft, ob die Software insgesamt wie gewünscht funktioniert. Funktionstests überprüfen also die Funktionalität einer Anwendung.

Nicht funktionale Tests überprüfen die nicht funktionalen Aspekten einer Anwendung, z. B. die Leistung und Zuverlässigkeit. Sie können nicht funktionale Tests auch für Systeme ausführen, die keine Apps sind, wie z. B. Infrastrukturkomponenten. Mit einem nicht funktionalen Test kann beispielsweise bestimmt werden, wie viele Benutzer*innen sich gleichzeitig bei einer Anwendung anmelden können, ohne Probleme wie langsamere Antwortzeiten zu verursachen.

Auf der Website von Space Game könnte ein Funktionstest beispielsweise überprüfen, ob die Bestenliste korrekt dargestellt wird und dir richtigen Ergebnisse anzeigt, wenn Benutzer*innen einen Filter auswählen. Ein nicht funktionaler Test könnte überprüfen, ob die Filterung der Bestenliste in weniger als einer Sekunde erfolgt, auch wenn viele Benutzer die Website aufrufen.

Nicht funktionale Tests testen immer etwas, das messbar ist. Das Ziel besteht darin, das Produkt zu verbessern. Dies kann beispielsweise erreicht werden, indem Sie die Effizienz der Anwendung oder die Antwortzeiten verbessern, wenn viele Kund*innen es gleichzeitig verwenden. Mit Funktionstests können unter anderem diese Fragen beantwortet werden:

  • Wie ist die Anwendungsleistung unter normalen Umständen?
  • Wie ist die Anwendungsleistung, wenn viele Benutzer gleichzeitig angemeldet sind?
  • Wie sicher ist die Anwendung?

Welche nicht funktionalen Tests kann ich ausführen?

Es gibt viele verschiedene nicht funktionale Tests. Viele davon fallen in die allgemeinen Kategorien „Leistungstests“ und „Sicherheitstests“.

Leistungstests

Das Ziel von Leistungstests besteht darin, die Geschwindigkeit, Skalierbarkeit und Stabilität einer Anwendung zu verbessern. Durch das Testen der Geschwindigkeit wird bestimmt, wie schnell eine Anwendung antwortet. Durch das Testen der Skalierbarkeit wird die maximale Benutzerauslastung bestimmt, die von einer Anwendung verarbeitet werden kann. Durch das Testen der Stabilität wird bestimmt, ob die Anwendung bei unterschiedlichen Auslastungen stabil bleibt. Gängige Leistungstests sind Auslastungstests und Belastungstests.

Auslastungstests

Auslastungstests ermitteln die Leistung einer Anwendung bei realistischen Ladevorgängen. Beispielsweise kann mithilfe von Auslastungstests bestimmt werden, wie gut die Anwendungsleistung an der Obergrenze der SLA (Service Level Agreement, Vereinbarung zum Servicelevel) ist. Beim Auslastungstest wird im Prinzip das Verhalten der Anwendung getestet, wenn mehrere Benutzer*innen sie gleichzeitig benötigen.

Benutzer sind nicht notwendigerweise Menschen. Ein Auslastungstest für Druckersoftware kann der Anwendung beispielsweise große Datenmengen senden. Ein Auslastungstest für einen Mailserver kann Tausende gleichzeitige Benutzer simulieren.

Auslastungstests sind auch eine gute Möglichkeit, um Probleme aufzudecken, die nur auftreten, wenn die Anwendung an ihren Grenzen arbeitet. Dabei können Probleme wie Pufferüberlauf und Arbeitsspeicherverlust entdeckt werden.

In diesem Modul verwenden Sie Apache JMeter zum Ausführen von Auslastungstests. Sie simulieren einige Benutzer*innen, die gleichzeitig auf die Website zugreifen.

Belastungstest

Belastungstests bestimmen die Stabilität und Robustheit einer Anwendung unter hoher Auslastung. Die Auslastung übersteigt die für die Anwendung festgelegten Grenzen. Die Belastungstests ermitteln, ob die Anwendung unter dieser Auslastung abstürzen wird. 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.

Es kommt häufig zu Szenarios, in denen Anwendungen unter ungewöhnlich hoher Auslastung arbeiten müssen. Falls Ihr Video sich beispielsweise viral verbreitet, müssen Sie wissen, ob die Server der zusätzlichen Auslastung gewachsen sind. Ein weiteres typisches Szenario ist ein hoher Datenverkehr auf Shoppingwebsites während der Weihnachtszeit.

Sicherheitstests

Mithilfe von Sicherheitstests wird sichergestellt, dass Anwendungen keine Sicherheitsrisiken, Bedrohungen und Risiken aufweisen. Durch gründliche Sicherheitstests werden alle möglichen Lücken und Schwächen des Systems ermittelt, die Daten gefährden oder zu Umsatzverlusten führen könnten.

Es gibt viele verschiedene Sicherheitstests. Dazu zählen Penetrationstests und Compliancetests.

Penetrationstests

Penetrationstests (oder Pentests) suchen nach unsicheren Bereichen der Anwendung. Insbesondere testen sie, ob Sicherheitsrisiken vorhanden sind, die ein Angreifer ausnutzen könnte. Ein autorisierter, simulierter Cyberangriff ist in der Regel Teil des Penetrationstests.

Kompatibilitätstest

Mit Compliancetests wird ermittelt, ob eine Anwendung mit bestimmten Anforderungen innerhalb oder außerhalb des Unternehmens konform ist. Organisationen im Gesundheitswesen müssen beispielsweise in der Regel mit dem HIPAA (Health Insurance Portability and Accountability Act of 1996) konform sein, der Datenschutz- und Sicherheitsbestimmungen für medizinische Daten festlegt.

Eine Organisation kann auch über eigene Sicherheitsanforderungen verfügen. Software muss getestet werden, um sicherzustellen, dass sie diesen Anforderungen entspricht. Auf Linux-Systemen muss die Standardbenutzermaske zum Beispiel 027 oder noch restriktiver sein. Ein Sicherheitstest muss nachweisen, dass diese Anforderung erfüllt ist.

Der Plan

Im weiteren Verlauf dieses Moduls richten Sie Ihre Azure DevOps-Umgebung ein, erfahren mehr zur Planung von Auslastungstests mithilfe von Apache JMeter und führen Auslastungstests in Azure Pipelines aus.

Überprüfen Sie Ihr Wissen

1.

Sie haben Ihre Web-App vor Kurzem mit einer Datenbank verbunden. Wenn die Seite geladen wird, werden Datenbankeinträge angezeigt. Sie möchten überprüfen, ob die Datenbankaufrufe dazu führen, dass die Seite mehr als eine Sekunde lädt. Welchen nicht funktionalen Test wenden Sie an?

2.

Ihre Website verkauft Konzerttickets für einen lokalen Veranstaltungsort. Dort wird ein mehrtägiges Event veranstaltet, bei dem viele beliebte Bands auftreten. Sie haben Bedenken, ob die Website der plötzlichen Zunahme des Datenverkehrs gewachsen ist. Mit welchem Test können Sie das überprüfen?

3.

Sie vermuten, dass Ihre Website ein Sicherheitsrisiko aufweist, das es einem Hacker ermöglicht, auf vertrauliche Daten zuzugreifen. Welchen nicht funktionalen Test können Sie ausführen, um dieses Sicherheitsrisiko zu ermitteln?