Bei den meisten Testmethoden umfasst der Funktionstest das Testen der Anwendung anhand der Geschäftsanforderungen. Die Funktionsprüfung erfolgt anhand der vom Kunden bereitgestellten funktionalen Spezifikationen oder anhand der Designspezifikationen wie Anwendungsfälle, die vom Designteam bereitgestellt werden.
Auf der anderen Seite beinhaltet das nicht-funktionale Testen das Testen der Anwendung gegen die nicht-funktionalen Anforderungen, was typischerweise das Messen/Testen der Anwendung gegen definierte technische Eigenschaften beinhaltet (auch bekannt als "-ilities", da sie alle auf "-ility" enden). , zum Beispiel: Verwundbarkeit, Skalierbarkeit, Benutzerfreundlichkeit. Im Folgenden werden einige Beispiele für nicht funktionale Tests beschrieben:
Leistung, Last, Stresstests
Bei den meisten Testmethoden gibt es verschiedene Arten von Leistungstests, zum Beispiel: Leistungstests messen, wie sich ein System unter steigender Last verhält (sowohl Anzahl von Benutzern als auch Datenvolumen), Lasttests überprüfen, ob das System mit der erforderlichen Leistung arbeiten kann Reaktionszeiten, wenn sie der erwarteten Last ausgesetzt werden, und Stresstests finden die Fehlerstelle(n) im System, wenn die getestete Last die unterstützte Last überschreitet.
Sicherheit, Schwachstellentests
Früher wurde Sicherheit im Nachhinein getestet. Mit der Zunahme der Cyberkriminalität und dem Bewusstsein für die Risiken, die mit Software-Schwachstellen verbunden sind, muss die Anwendungssicherheit jetzt gleichzeitig mit der gewünschten Geschäftsfunktionalität entworfen und entwickelt werden. Sicherheitstests testen die Software auf Vertraulichkeit, Integrität, Authentifizierung, Verfügbarkeit und Nichtabstreitbarkeit. Individuelle Tests werden durchgeführt, um einen unbefugten Zugriff auf den Softwarecode zu verhindern.
Usability-Tests
Der Usability-Test-Teil einer Testmethodik befasst sich mit dem Aspekt der Benutzerfreundlichkeit der Software für den Endbenutzer. Die Leichtigkeit, mit der ein Benutzer auf das Produkt zugreifen kann, bildet den Haupttestpunkt. Usability-Tests betrachten fünf Aspekte des Testens: Erlernbarkeit, Effizienz, Zufriedenheit, Einprägsamkeit und Fehler.
Kompatibilitätstests
Der Kompatibilitätsteil einer Testmethodik testet, ob das Produkt oder die Anwendung mit allen angegebenen Betriebssystemen, Hardwareplattformen, Webbrowsern, Mobilgeräten und anderen entwickelten Programmen von Drittanbietern (z. B. Browser-Plugins) kompatibel ist. Kompatibilitätstests überprüfen, ob das Produkt über alle verschiedenen Hardware-/Software-Kombinationen hinweg wie erwartet funktioniert und dass alle Funktionen konsistent unterstützt werden.
Was ist mit agilen Testmethoden?
Agile Projekte müssen ihre Systeme in Bezug auf die zu berücksichtigenden Tests genauso testen wie traditionelle Wasserfallprojekte. Die Aktivitäten werden jedoch in kleineren Bursts als Teil der Iterationen oder Sprints stattfinden. Darüber hinaus können die Personen, die die Arbeit ausführen, Testspezialisten (z. B. Leistung, Sicherheit) sein, werden jedoch vollständig in die agilen Teams eingebettet.
Da agile Projekte mit einem möglicherweise höheren Maß an Unsicherheit und Veränderungen umgehen, haben Sie möglicherweise kein vollständig funktionierendes System, keine schriftlichen Testfälle (abgesehen von High-Level-Akzeptanztests) oder sogar vollständig geformte Anforderungen (User Stories sind in der Regel ziemlich hohes Level). Es gibt also einige Techniken, die helfen können.
Exploratives / sitzungsbasiertes Testen
Exploratives Testen ist ein nützlicher Ansatz, der beim Softwaretesten verwendet wird, bei dem es darum geht, die Software zu erkunden, was sie tut, was sie nicht tut, was funktioniert und was nicht. Der Tester muss Entscheidungen darüber treffen, was als nächstes getestet werden soll und wo er eine bestimmte Zeit verbringen soll. Exploratives Testen ist am nützlichsten, wenn unklare Anforderungen vorliegen (z. B. zu Beginn eines agilen Sprints) oder Sie unbekannte Probleme finden möchten, die durch formalere Testmethoden nicht aufgedeckt wurden.
Sitzungsbasiertes Testen ist eine Variante des explorativen Testens, bei dem Sie Testcharts und spezifische zeitlich begrenzte „Sitzungen“ haben, um Ihre Aktivitäten durchzuführen.
Kontinuierliche Tests
Ein weiterer Aspekt agiler Projekte ist der Wechsel zu Development & Operations (DevOps). Da Unternehmen DevOps annehmen und Pipelines mit Funktionen von der Einführung bis zur Produktion haben und beenden, müssen die Tests während der gesamten DevOps-Pipeline kontinuierlich durchgeführt werden.