Verantwortlich für Initiierung: Leiter Fachabteilung, Leiter IT-Bereich
Verantwortlich für Umsetzung: Testgruppe
Das Testen von Standardsoftware läßt sich in die Abschnitte Vorbereitung, Durchführung und Auswertung unterteilen. In diesen Abschnitten sind folgende Aufgaben wahrzunehmen:
Testvorbereitung
Die einzelnen Aufgaben werden nachfolgend beschrieben.
Testvorbereitung
Festlegung der Testmethoden für die Einzeltests (Testarten, verfahren und -werkzeuge)
Methoden zur Durchführung von Tests sind z. B. statistische Analyse, Simulation, Korrektheitsbeweis, symbolische Programmausführung, Review, Inspektion, Versagensanalyse. Hierbei muß beachtet werden, daß einige dieser Testmethoden nur bei Vorliegen des Quellcodes durchführbar sind. In der Vorbereitungsphase muß die geeignete Testmethode ausgewählt und festgelegt werden.
Es muß geklärt werden, welche Verfahren und Werkzeuge zum Testen von Programmen und zum Prüfen von Dokumenten eingesetzt werden. Typische Verfahren zum Testen von Programmen sind z. B. Black-Box-Tests, White-Box-Tests oder Penetrationstests. Dokumente können z. B. durch informelle Prüfungen, Reviews oder anhand von Checklisten kontrolliert werden.
Ein Black-Box-Test ist ein Funktionalitätstest ohne Kenntnis der internen Programmabläufe, bei dem z. B. das Programm mit allen Datenarten für alle Testfälle mit Fehlerbehandlung und Plausibilitätskontrollen durchlaufen wird.
Bei einem White-Box-Test handelt es sich um einen Funktionalitätstests unter Offenlegung der internen Programmabläufe, z. B. durch Quellcode-Überprüfung oder Tracing. White-Box-Tests gehen in der Regel über den IT-Grundschutz hinaus und können für Standardsoftware in der Regel nicht durchgeführt werden, da der Quellcode vom Hersteller nicht offengelegt wird.
Bei Funktionalitätstests soll der Nachweis erbracht werden soll, daß der Testinhalt der Spezifikation entspricht. Durch Penetrationstests soll festgestellt werden, ob bekannte oder vermutete Schwachstellen im praktischen Betrieb ausgenutzt werden können, beispielsweise durch Manipulationsversuche an den Sicherheitsmechanismen oder durch Umgehung von Sicherheitsmechanismen durch Manipulationen auf Betriebssystemebene.
Weiterhin ist die Art und Weise der Ergebnissicherung und -auswertung festzuschreiben, insbesondere im Hinblick auf die Wiederholbarkeit von Prüfungen. Es muß geklärt werden, welche Daten während und nach der Prüfung festzuhalten sind.
Generierung von Testdaten und Testfällen
Die Vorbereitung von Tests umfaßt auch die Generierung von Testdaten. Methode und Vorgehensweise sind zuvor festzulegen und zu beschrieben.
Für jeden einzelnen Testinhalt muß eine dem Testaufwand angemessene Anzahl von Testfällen generiert werden. Jede der folgenden Kategorien ist dabei zu berücksichtigen:
Standardfälle sind Fälle, mit denen die korrekte Verarbeitung der definierten Funktionalitäten überprüft werden soll. Die eingehenden Daten nennt man Normalwerte oder Grenzwerte . Normalwerte sind Daten innerhalb, Grenzwerte sind Eckdaten des jeweils gültigen Eingabebereichs.
Fehlerfälle sind Fälle, in denen versucht wird, mögliche Fehlermeldungen des Programms zu provozieren. Diejenigen Eingabewerte, auf die das Programm mit vorgegebenen Fehlermeldungen reagieren soll, nennt man Falschwerte .
Ausnahmefälle sind Fälle, bei denen das Programm ausnahmsweise anders reagieren muß als bei Standardfällen. Es muß daher überprüft werden, ob das Programm diese Fälle als solche erkennt und korrekt bearbeitet.
Beispiele:
Über die Testdaten hinaus sollten auch alle Arten möglicher Benutzerfehler betrachtet werden. Problematisch sind insbesondere alle Benutzerreaktionen, die im Programmablauf nicht vorgesehen und dementsprechend nicht korrekt abgewiesen werden.
Aufbau der benötigten Testumgebung
Die im Testplan beschriebene Testumgebung muß aufgebaut und die zu testenden Produkte dort installiert werden. Die eingesetzten Komponenten sind zu identifizieren und deren Konfiguration ist zu beschreiben. Treten bei der Installation des Produktes Abweichungen von der beschriebenen Konfiguration auf, so ist dies zu dokumentieren.
Testdurchführung
Die Durchführung der Tests muß anhand des Testplans erfolgen. Jede Aktion sowie die Testergebnisse müssen ausreichend dokumentiert und bewertet werden. Insbesondere wenn Fehler auftreten, sind diese derart zu dokumentieren, daß sie reproduziert werden können. Die für den späteren Produktionsbetrieb geeigneten Betriebsparameter müssen ermittelt und für die spätere Erstellung einer Installationsanweisung festgehalten werden.
Werden zusätzliche Funktionen beim Produkt erkannt, die nicht im Anforderungskatalog aufgeführt, aber trotzdem von Nutzen sein können, so ist hierfür mindestens ein Kurztest durchzuführen. Zeigt sich, daß diese Funktion von besonderer Bedeutung für den späteren Betrieb sind, sind diese ausführlich zu testen. Für den zusätzlich anfallenden Prüfaufwand ist ggf. eine Fristverlängerungen bei den Verantwortlichen zu beantragen. Die Testergebnisse sind in die Gesamtbewertung mit einzubeziehen.
Zeigt sich bei Bearbeitung einzelner Testinhalte, daß eine oder mehrere Anforderungen des Anforderungskataloges nicht konkret genug waren, sind diese gegebenenfalls zu konkretisieren.
Beispiel: Im Anforderungskatalog wird zum Vertraulichkeitsschutz der zu bearbeitenden Daten Verschlüsselung gefordert. Während des Testens hat sich gezeigt, daß eine Offline-Verschlüsselung für den Einsatzzweck ungeeignet. Daher ist der Anforderungskatalog hinsichtlich einer Online-Verschlüsselung zu ergänzen. (Eine Offline-Verschlüsselung muß vom Anwender angestoßen und die zu verschlüsselnden Elemente jeweils spezifiziert werden; eine Online-Verschlüsselung erfolgt transparent für den Anwender mit voreingestellten Parametern.)
Eingangsprüfungen
Vor allen anderen Tests sind zunächst die folgenden grundlegenden Aspekte zu testen, da ein Mißerfolg bei diesen Eingangsprüfungen zu direkten Aktionen oder dem Testabbruch führt:
Die funktionalen Anforderungen, die im Anforderungskatalog an das Produkt gestellt wurden, sind auf folgende Aspekte zu untersuchen:
Um die Fehlerfreiheit bzw. Korrektheit der Funktion sicherzustellen, sind je nach Prüftiefe bei der Untersuchung unterschiedliche Testverfahren wie Black-Box-Tests, White-Box-Tests oder simulierter Produktionsbetrieb anzuwenden.
Die in der Vorbereitungsphase erstellten Testdaten und Testfälle werden im Funktionalitätstest eingesetzt. Bei den Funktionalitätstests ist es notwendig, die Testergebnisse mit den vorgegebenen Anforderungen zu vergleichen. Außerdem ist zu überprüfen, wie das Programm bei fehlerhaften Eingabeparametern oder fehlerhafter Bedienung reagiert. Die Funktion ist auch mit den Grenzwerten der Intervalle von Eingabeparametern sowie mit Ausnahmefällen zu testen. Diese müssen entsprechend erkannt und korrekt behandelt werden.
Die Eignung einer Funktion zeichnet sich dadurch aus, daß die Funktion
Die Widerspruchsfreiheit der einzelnen Funktionen ist zu überprüfen und zwar jeweils zwischen Anforderungskatalog, Dokumentation und Programm. Eventuelle Widersprüche sind zu dokumentieren. Abweichungen zwischen Dokumentation und Programm sind so zu festzuhalten, daß sie bei einem späteren Einsatz des Produktes in den Ergänzungen zur Dokumentation aufgenommen werden können.
Tests weiterer funktionaler Eigenschaften
Die im Anforderungskatalog neben den funktionalen und den sicherheitsspezifischen Anforderungen spezifizierten weiteren funktionalen Eigenschaften sind ebenfalls zu überprüfen:
Das Laufzeitverhalten sollte für alle geplanten Konfigurationen des Produktes ermittelt werden. Um die Performance ausreichend zu testen, sind in der Regel Tests, in denen der Produktionsbetrieb simuliert wird oder auch Pilotanwendung bei ausgewählten Anwendern sinnvoll. Es muß festgestellt werden, ob die gestellten Performanceanforderungen erfüllt sind.
Das Verhalten bei zufälligen oder mutwillig herbeigeführten Systemabstürzen ("Crashtest") ist zu analysieren und es ist festzustellen, welche Schäden dabei entstehen. Es ist festzuhalten, ob nach Systemabstürzen ein ordnungsgemäßer und korrekter Wiederanlauf des Produktes möglich ist. Es ist ebenfalls zu überprüfen, ob ein direkter Zugriff auf Datenbestände unabhängig von der regulären Programmfunktion erfolgen kann. In vielen Fällen kann ein solcher Zugriff zu Datenverlusten führen und sollte dann vom Produkt verhindert werden. Ebenfalls sollte festgehalten werden, ob das Programm Möglichkeiten unterstützt, "kritische Aktionen" (z. B. Löschen, Formatieren) rückgängig zu machen.
Ob das Produkt benutzerfreundlich ist, ist in besonderem Maße vom subjektiven Empfinden der Testperson abhängig. Jedoch können bei der Beurteilung folgende Aspekte Anhaltspunkte liefern:
Der personelle und finanzielle Aufwand für die Wartung und Pflege des Produktes sollte während des Testens ermittelt werden. Dieser kann z. B. anhand von Referenzen wie anderen Referenzinstallationen oder Tests in Fachzeitschriften oder anhand des während des Testens ermittelten Installationsaufwandes geschätzt werden. Hierfür muß dokumentiert werden, wieviele manuelle Eingriffe während der Installation notwendig waren, um die angestrebte Konfiguration zu erreichen. Sind bereits Erfahrungen mit Vorgängerversionen des getesteten Produktes gesammelt worden, sollte hinterfragt werden, wie aufwendig deren Wartung war.
Es sollte nachgefragt werden, inwieweit Support durch den Hersteller oder Vertreiber angeboten wird und zu welchen Konditionen. Wird vom Hersteller oder Vertreiber eine Hotline angeboten, sollte auch deren Erreichbarkeit und Güte betrachtet werden.
Die vorliegende Dokumentation muß daraufhin überprüft werden, ob sie vollständig, korrekt und widerspruchsfrei ist. Darüber hinaus sollte sie verständlich, eindeutig, fehlerfrei und übersichtlich sein.
Es muß weiterhin kontrolliert werden, ob sie für eine sichere Verwendung und Konfiguration ausreicht. Alle sicherheitsspezifischen Funktionen müssen beschrieben sein.
Wurden sicherheitsspezifische Anforderungen an das Produkt gestellt, so sind zusätzlich zu den vorgenannten Untersuchungen auch folgende Aspekte zu untersuchen:
Als Grundlage für eine Sicherheitsuntersuchung könnte beispielsweise das Handbuch für die Bewertung der Sicherheit von Systemen der Informationstechnik (ITSEM) herangezogen werden, in dem viele der nachfolgend aufgezeigten Vorgehensweise beschrieben sind. Die weiteren Ausführungen dienen zur Orientierung und zur Einführung in die Thematik.
Zu Beginn muß durch funktionale Tests zunächst nachgewiesen werden, daß das Produkt die erforderlichen Sicherheitsfunktionen bereitstellt.
Anschließend ist zu überprüfen, ob alle erforderlichen Sicherheitsmechanismen im Anforderungskatalog genannt wurden, ggf. ist dieser zu ergänzen. Um die Mindeststärke der Mechanismen zu bestätigen oder zu verwerfen sind Penetrationstests durchzuführen. Penetrationstests sind nach allen anderen Tests durchzuführen, da sich aus diesen Tests Hinweise auf potentielle Schwachstellen ergeben können.
Durch Penetrationstests kann das Testobjekt oder die Testumgebung beschädigt oder beeinträchtigt werden. Damit solche Schäden keine Auswirkungen haben, sollten vor der Durchführung von Penetrationstests Datensicherungen gemacht werden.
Penetrationstests können durch Verwendung von Sicherheitskonfigurations- und Protokollierungstools unterstützt werden. Diese Tools untersuchen eine Systemkonfiguration und suchen nach gemeinsamen Schwachstellen wie etwa allgemein lesbaren Dateien und fehlenden Paßwörtern.
Mit Penetrationstests soll das Produkt auf Konstruktionsschwachstellen untersucht werden, indem dieselben Methoden angewandt werden, die auch ein potentieller Angreifer zur Ausnutzung von Schwachstellen benutzen würde, wie z. B.
An einigen Beispielen sollen typische Untersuchungsaspekte aufgezeigt werden:
Paßwortschutz:
Bei einer lokalen Speicherung ist zu untersuchen, ob diese Schlüssel paßwortgeschützt oder mit einem weiteren Schlüssel überschlüsselt geschützt werden. Bei einem Paßwortschutz sind die obigen Punkte zu berücksichtigen. Bei einer Überschlüsselung ist zu betrachten, wie der zugehörige Schlüssel geschützt wird.
Dazu können folgende Punkte betrachtet werden: Welche Datei ändert sich, wenn ein Schlüssel geändert wurde? Durch den Vergleich dieser Datei vor und nach der Schlüsseländerung kann die Stelle ermittelt werden, an der dieser Schlüssel gespeichert wird. Ist es möglich, an dieser Stelle Änderungen vorzunehmen, um neue Schlüssel zu aktivieren, die dann vom Anwender genutzt werden, ohne daß dieser die Kompromittierung bemerkt?
Pilotanwendung
Nach Abschluß aller anderen Tests kann noch eine Pilotanwendung, also ein Einsatz unter Echtbedingungen, für notwendig gehalten werden.
Erfolgt der Test in der Produktionsumgebung mit Echtdaten, muß vorab durch eine ausreichende Anzahl von Tests die korrekte und fehlerfreie Funktionsweise des Programms bestätigt worden sein, um die Verfügbarkeit und Integrität der Produktionsumgebung nicht zu gefährden. Dabei kann das Produkt beispielsweise bei ausgewählten Benutzern installiert werden, die es dann für einen gewissen Zeitraum im echten Produktionsbetrieb einsetzen.
Testauswertung
Anhand der festgelegten Entscheidungskriterien sind die Testergebnisse zu bewerten, alle Ergebnisse zusammenzuführen und mit der Testdokumentation der Beschaffungsstelle bzw. Testverantwortlichen vorzulegen.
Anhand der Testergebnisse sollte ein abschließendes Urteil für ein zu beschaffendes Produkt gefällt werden. Hat kein Produkt den Test bestanden, muß überlegt werden, ob eine neue Marktsichtung vorgenommen werden soll, ob die gestellten Anforderungen zu hoch waren und geändert werden müssen oder ob von einer Beschaffung zu diesem Zeitpunkt abgesehen werden muß.
Beispiel:
Am Beispiel eines Kompressionsprogramms wird nun eine Möglichkeit beschrieben, Testergebnisse auszuwerten. Getestet wurden vier Produkte, die nach der dreistufige Skala aus M 2.82 Entwicklung eines Testplans für Standardsoftware bewertet wurden.
Produkt 3 war bereits in der Vorauswahl gescheitert und wurde daher nicht getestet.
Produkt 4 scheiterte in dem Testabschnitt "korrekte Kompression und Dekompression", weil die Erfüllung der Eigenschaft mit 0 bewertet wurde, es sich dabei aber um ein notwendige Eigenschaft handelt.
Bei der Berechnung der Bewertungspunktzahlen für die Produkte 1 und 2 wurden die Noten als Multiplikatoren für die jeweilige Bedeutungskennzahl benutzt und schließlich die Summe gebildet:
Produkt 1: 10*2+10*2+10*2+10*2+2*0+4*2+4*2+2*2 = 120
Produkt 2: 10*2+10*2+10*2+10*2+2*2+4*2+4*1+2*1 = 118
Nach der Testauswertung ist somit Produkt 1 auf dem ersten Platz, wird aber knapp gefolgt von Produkt 2. Die Entscheidung für ein Produkt hat jetzt die Beschaffungsstelle anhand der Testergebnisse und des daraus resultierenden Preis-/Leistungsverhältnisses zu treffen.
Ergänzende Kontrollfragen:
© Copyright by Bundesamt für Sicherheit in der Informationstechnik 2000 .