Nichtfunktionale Tests decken unter anderem Fehlverhalten bezüglich Performanz, allgemeiner Benutzbarkeit und Sicherheit auf.
Zielsetzung
Tests sind auch zur Beurteilung nicht-funktionaler Eigenschaften von Softwaresystemen unverzichtbar. Wichtige Aspekte sind die Performanz [Molyneaux, 2009] eines Systems, seine allgemeine Benutzbarkeit sowie die Sicherheit im Hinblick auf unerlaubten Zugriff und den Verlust von Daten. Viele nicht-funktionale Eigenschaften wie z.B. ‚Benutzbarkeit‘ sind nur schwer quantifizierbar oder es fehlen hinreichend genaue Angaben aus der Anforderungsdefinition, was entsprechende Tests und die Bewertung erzielter Testergebnissen erschwert.
Performanz
Untersuchungen zur Performanz werden durch Anlegen künstlich erzeugter oder an vergleichbaren Systemen protokollierter Last an ein System und Messen der dadurch hervorgerufenen Ressourcennutzung und Reaktionszeiten durchgeführt. Last kann dabei durch die Nutzung sehr hoher Datenmengen, sehr viele gleichzeitig zu bearbeitende Nutzeranfragen oder aber die Simulation sehr lange andauernder Nutzung erzeugt werden. Softwaresysteme werden dabei in der intendierten Ausführungsumgebung oder aber einer Simulationsumgebung getestet, was Probleme der Software im späteren alltäglichen Betrieb wie z.B. zunehmenden Speicherverbrauch durch angeforderte aber nicht freigegebenen Speicher aufdeckt und nicht ausreichende Ressourcenzuteilung frühzeitig erkennen lässt. Ein großes Spektrum an Verfahren ist im Einsatz, das von Performanz-Messungen unter konstant steigender oder abrupt wechselnder Last bis hin zu den Grenzen der Belastbarkeit eines Systems durch Stress-Tests und dem provozierten Systemabsturz durch Überlast (Crash-Tests) reicht.
Sicherheit
Der für öffentlich zugängliche oder über das Internet nutzbare Systeme zunehmend wichtige Schutz vor unerlaubtem Zugriff kann durch Penetrationstests überprüft werden, die von vergleichbaren Systemen bekannte Angriffe für das zu testende System ausführen. Die Sicherheit vor dem Verlust von Daten kann durch Anlegen von Referenzdatensätzen, provozierten Abstürzen und Vergleich mit wieder hergestellten Daten nach dem Neustart für typische Systemabbrüche getestet werden.
Benutzbarkeit
Besonders schwierig ist der Test der Benutzbarkeit eines noch nicht fertiggestellten Systems, da die Kenntnisse und Gewohnheiten der intendierten Benutzer von zentraler Bedeutung sind. Daher werden Benutzbarkeitstests entweder durch ausgewählte Benutzer an Prototypen der zu erstellenden Software durchgeführt oder aber gemeinsam mit Benutzern sehr früh im Entwicklungsprozess festgelegte Anwendungsszenarien durchgespielt.
Literatur
Molyneaux, Ian: The Art of Application Performance Testing – Help for Programmers and Quality Assurance. OReilly Media: Sebastopol, CA, 2009.