6. Testwerkzeuge Flashcards
Testwerkzeuge
Unterstützte Aktivitäten
- Werkzeuge, die direkt beim Testen eingesetzt werden, wie Testdurchführungswerkzeuge, Testdatengeneratoren und Ergebniskomparatoren
- Werkzeuge, die das Management des Testprozesses unterstützen, wie Werkzeuge für das Management von Tests, Testergebnissen, Daten, Anforderungen, Abweichungen, Fehlerzuständen usw., sowie Werkzeuge für das Berichtswesen und zur Überwachung der Testdurchführung
- Werkzeuge, die zu Untersuchungszwecken eingesetzt werden (z.B. Werkzeuge, die Dateiaktivitäten einer Anwendung überwachen).
- alle Werkzeuge, die das Testen unterstützen (auch ein Tabellenkalkulationsprogramm gilt in dieser Hinsicht als Testwerkzeug)
Testwerkzeuge
Zwecke
- Steigerung der Effizienz der Testaktivitäten durch eine Automatisierung sich wiederholender Testaufgaben oder durch die Unterstützung manueller Testaktivitäten, wie Testplanung, Testentwurf, Testberichts- und Überwachungsaufgaben
- Automatisierung von Testaktivitäten, für deren manuelle Durchführung erhebliche Ressourcen notwendig wären (z.B. statisches Testen)
- Automatisierung von Testaktivitäten, die manuell nicht durchgeführt werden können (z.B. Performanztests von Client-Server-Anwendungen in größerem Umfang)
- Steigerung der Zuverlässigkeit des Testens (z.B. durch automatisierten Vergleich großer Datenmengen oder durch simuliertes Verhalten)
“Testframework”
Bedeutungen
- wiederverwendbare und erweiterbare Testbibliotheken, die zum Erstellen von Testwerkzeugen dienen können (auch als Testrahmen bezeichnet)
- Art des Entwurfs der Testautomatisierung (z.B. datengetrieben, schlüsselwortgetrieben)
- der gesamte Prozess der Testdurchführung
Testwerkzeuge
Untersuchungseffekt
Einige Testwerkzeuge werden als intrusiv bezeichnet; d.h. sie können das Verhalten des Testobjekts beeinflussen.
Zum Beispiel kann das tatsächliche Zeitverhalten durch zusätzliche Befehle, die durch das Werkzeug ausgeführt werden, unterschiedlich sein oder es kann ein unterschiedlicher Überdeckungsgrad gemessen werden.
Werkzeugunterstützung
für das
Management des Testens
- Testmanagementwerkzeuge
- Anforderungsmanagementwerkzeuge
- Fehler- Abweichungsmanagementwerkzeuge
- Konfigurationsmanagementwerkzeuge
Testmanagementwerkzeuge
Diese Werkzeuge bieten:
- Schnittstellen für die Testdurchführung,
- das Verfolgen von Fehlerzuständen und
- das Verwalten von Anforderungen zusammen mit der Unterstützung von quantitativen Analysen und
- dem Berichten über Testobjekte.
- Sie unterstützen auch das Nachverfolgen der Testobjekte zu den Anforderungsspezifikationen und
- können unabhängige Möglichkeiten zur Versionskontrolle oder
- eine Schnittstelle zu einem entsprechenden externen Werkzeug aufweisen.
Anforderungsmanagementwerkzeuge
Diese Werkzeuge verwalten:
- Anforderungsbeschreibungen,
- speichern die Merkmale der Anforderungen (einschließlich Priorität),
- liefern eindeutige Bezeichnungen und
- unterstützen die Nachverfolgung der Anforderungen bis zu einzelnen Tests.
Diese Werkzeuge können auch bei der Identifizierung inkonsistenter oder fehlender Anforderungen helfen.
Fehler- und Abweichungsmanagementwerkzeuge
Diese Werkzeuge speichern und verwalten Fehler- und Abweichungsberichte, d.h.:
- Fehlerzustände,
- Änderungsanforderungen (change requests),
- Fehlerwirkungen oder wahrgenommene Probleme und
- Anomalien.
Sie unterstützen die Verwaltung des Lebenszyklus von Abweichungen, optional auch mit statistischen Analysen.
Konfigurationsmanagementwerkzeuge
Obwohl sie im engeren Sinne keine Testwerkzeuge sind, sind sie für Ablage und Versionsmanagement von Testmitteln und damit im Zusammenhang stehender Software nötig, insbesondere wenn mehr als eine Hardware-/Softwareumgebung mit verschiedenen Betriebssystemversionen, Compilern, Browsern etc. zu konfigurieren ist.
Werkzeugunterstützung
für den
statischen Test
Werkzeuge für statische Tests liefern einen kostengünstigen Weg, um mehr Fehlerzustände in früheren Phasen des Entwicklungsprozesses zu finden.
- Reviewwerkzeuge
- Statische Analysewerkzeuge (E)
- Modellierungswerkzeuge (E)
Reviewwerkzeuge
Diese Werkzeuge helfen mit:
- Prozessen,
- Checklisten und
- Regeln beim Review und
- werden zur Ablage und Kommunikation von Reviewkommentaren
- und Berichten zu Fehlerzuständen und Aufwand verwendet.
Darüber hinaus können diese Werkzeuge bei verteilten Reviews (online reviews) unterstützen, insbesondere bei großen Teams oder wenn die Mitglieder des Reviewteams geographisch verteilt sind.
Statische Analysewerkzeuge
Diese Werkzeuge unterstützen Entwickler und Tester in der Aufdeckung von Fehlerzuständen vor dem dynamischen Testen, indem sie Programmierkonventionen einschließlich sicherer Programmierung
(secure coding) erzwingen und die Analyse von Strukturen und Abhängigkeiten ermöglichen.
Sie können ebenso bei der Planung oder Risikoanalyse helfen, indem sie Metriken (z.B. Komplexität) aus dem Code ermitteln.
Modellierungswerkzeuge
Diese Werkzeuge werden verwendet, um Softwaremodelle zu validieren (z.B. physikalische Datenmodelle, PDM, für relationale Datenbanken).
Sie zeigen Inkonsistenzen auf und finden Fehlerzustände und werden oft genutzt, um das Generieren von auf dem Modell basierenden Testfällen zu unterstützen.
Werkzeugunterstützung
für die
Testspezifikation
- Testentwurfswerkzeuge
- Testdatengenerator und -editor
Testentwurfswerkzeuge
Diese Werkzeuge werden verwendet, um:
- Testeingaben,
- ausführbare Tests und/oder
- Testorakel aus:
- den Anforderungen,
- der graphischen Benutzungsschnittstelle (GUI),
- dem Entwurfsmodell (Zustands-, Daten- oder Objektmodell) oder
- aus dem Code
zu generieren.
Testdatengeneratoren und -editoren
Mit Hilfe von Testdatengeneratoren und -editoren können aus Datenbanken, Dateien oder Datenströmen zunächst Testdaten ermittelt und dann sämtliche für einen Test benötigte Testdaten bearbeitet werden, um den Datenschutz durch Anonymisierung sicherzustellen.
Werkzeugunterstützung
für die
Testdurchführung und die Protokollierung
- Testausführungswerkzeuge
- Testrahmen/Unittest-Framework(E)
- Vergleichswerkzeuge/Komparatoren
- Vergleichswerkzeuge/Komparatoren
- Werkzeuge zur Überdeckungsmessung (E)
- Sicherheitsprüfwerkzeuge
Testausführungswerkzeuge
Diese Werkzeuge, ermöglichen eine automatische oder halbautomatische Ausführung von Tests unter Verwendung der gespeicherten Eingaben und der erwarteten Ausgaben mittels einer Skriptsprache.
Normalerweise liefern sie für jeden Testlauf ein Protokoll.
Sie können auch genutzt werden, um Tests aufzuzeichnen, und üblicherweise unterstützen sie Skriptsprachen oder eine GUI-basierte Konfiguration zur Parametrisierung der Daten oder für andere spezifische Anpassungen.
Testrahmen/Unittest-Framework(E)
Ein Unittest-Framework oder Testrahmen erleichtert den Test einer Komponente oder eines Teilsystems durch:
- Simulation der Umgebung des Testobjekts,
- durch Scheinobjekte (Simulatoren) als Platzhalter und/oder Treiber.
Vergleichswerkzeuge/Komparatoren
Vergleichswerkzeuge ermitteln die Unterschiede zwischen Dateien, Datenbanken oder Testergebnissen.
Testausführungswerkzeuge enthalten typischerweise dynamische Vergleichswerkzeuge.
Es besteht auch die Möglichkeit, dass ein Vergleich durch ein separates Werkzeug erst nach der Testdurchführung ausgeführt wird.
Ein Vergleichswerkzeug kann auch ein Testorakel verwenden, insbesondere wenn der Vergleich automatisiert erfolgt.
Werkzeuge zur Überdeckungsmessung(E)
Diese Werkzeuge messen – mit intrusiven oder nicht-intrusiven Mitteln – den prozentualen Anteil spezifischer Codestrukturtypen (z.B. Anweisungen, Zweige oder Entscheidungen und Module oder Funktionsaufrufe), die durch eine Menge von Tests ausgeführt bzw. durchlaufen wurden.
Sicherheitsprüfwerkzeuge
Diese Werkzeuge dienen der Bewertung der Sicherheitsmerkmale von Software.
Dabei wird bewertet, wie die Software in der Lage ist,:
- die Vertraulichkeit der Daten,
- deren Integrität,
- Bestätigung der Echtheit,
- Autorisierung,
- Verfügbarkeit und
- Nichtabstreitbarkeit
zu schützen.
Sicherheitsprüfwerkzeuge sind meist für eine bestimmte Technologie, Plattform und Zielsetzung ausgelegt.
Werkzeugunterstützung
für
Performanzmessungen und Testmonitore
- Dynamische Analysewerkzeuge (E)
- Performanztest-/Lasttest-/Stresstestwerkzeuge
- Testmonitore
Dynamsiche Analysewerkzeuge (E)
Dynamische Analysewerkzeuge decken Fehlerzustände auf, wie sie lediglich zur Laufzeit eines Programms sichtbar werden, also z.B. Zeitabhängigkeiten und Speicherengpässe.
Diese werden typischerweise im Komponenten- und Komponentenintegrationstest sowie im Rahmen der Tests der Middleware
verwendet.
Performanztest-/Lasttest-/Stresstestwerkzeuge
Performanztestwerkzeuge überwachen und protokollieren, wie sich ein System unter verschiedenen simulierten Benutzungsbedingungen verhält, hinsichtlich
- Anzahl konkurrierender Nutzer,
- Hochlauf- /Anlaufverhalten (ramp-up pattern)
- sowie Häufigkeit und relativem Anteil von Transaktionen.
Die Last wird durch Erzeugen virtueller Nutzer simuliert, die einen ausgewählten Satz an Transaktionen durchführen, verteilt auf verschiedene Testmaschinen, allgemein bekannt als Lastgeneratoren.
Testmonitore
Testmonitore analysieren, verifizieren und zeichnen kontinuierlich die Verwendung von spezifischen Systemressourcen auf und geben Warnungen zu möglichen Problemen bei der Erbringung von Diensten aus.
Bewertung der Datenqualität
Bei manchen Projekten stehen die Daten im Mittelpunkt, beispielsweise bei Datenkonvertierungs- bzw. Datenmigrationsprojekten und bei Anwendungen wie Data Warehouses.
Die Attribute der Daten können sowohl hinsichtlich ihrer Kritikalität und ihres Volumens variieren.
In einem solchen Kontext sind Werkzeuge für die Bewertung der Datenqualität erforderlich, um die Datenkonvertierungs- und
die Migrationsvorschriften zu prüfen und zu verifizieren.
Damit soll sichergestellt werden, dass die verarbeiteten Daten korrekt und vollständig sind, und dass sie einem vorab definierten kontextspezifischen
Standard entsprechen.
Potenzieller Nutzen
von
Testwerkzeugen
- weniger sich wiederholende Tätigkeiten (z.B. für Regressionstestläufe, wiederholte Eingaben der gleichen Testdaten und Prüfungen gegen Programmierkonventionen)
-
bessere Konsistenz und Wiederholbarkeit (die gleichen Tests werden beispielsweise in der gleichen Reihenfolge mit der gleichen Häufigkeit durch ein Werkzeug ausgeführt und aus Anforderungen
hergeleitet) - objektive Bewertung durch eine Werkzeugunterstützung (z.B. statische Messungen, Überdeckungsmessungen)
- vereinfachter Zugriff auf Informationen über durchgeführte Tests (z.B. Statistiken und graphische Darstellungen über den Testfortschritt, die Fehlerrate und die Performanz)
Risiken
von
Testwerkzeugen
- unrealistische Erwartungen an das Werkzeug (einschließlich Funktionalität und Benutzungsfreundlichkeit)
- unterschätzen der Zeit, der Kosten und des Aufwands für die erstmalige Einführung eines Werkzeugs (einschließlich Training und externe Beratung)
- unterschätzen der Zeit und des Aufwands, um einen signifikanten und anhaltenden Nutzen aus der Anwendung eines Werkzeugs ziehen zu können
- unterschätzen des erforderlichen Aufwands für die Wartung der durch das Werkzeug erzeugten Ergebnisse
- blindes Vertrauen in das Werkzeug (Ersatz für einen Testentwurf oder Verwenden automatisierter Tests, wo manuelles Testen geeigneter wäre)
- vernachlässigen der Versionskontrolle von Testgegenständen im Testwerkzeug
- vernachlässigen der Beziehungen und der Interoperabilitätsproblematik zwischen kritischen Werkzeugen
- Risiko, dass der Werkzeughersteller den Betrieb einstellt, das Werkzeug vom Markt nimmt, oder das Werkzeug an einen anderen Hersteller verkauft
- mangelhafte Leistungen des Herstellers hinsichtlich Kundenunterstützung, Upgrades und Fehlerbehebungen
- Risiko, dass das Projekt zum Erstellen des kostenfreien bzw. Open-Source-Werkzeugs eingestellt wird
- unvorhergesehene Probleme, z.B. dass eine neue Plattform nicht unterstützt werden kann
Testausführungswerkzeuge
data-driven approach
Eine datengetriebene Testvorgehensweise (data-driven approach) trennt die Eingaben (die Testdaten) vom Testfall und legt sie in einem Tabellenblatt ab.
Ein generisches Testskript liest die Eingabewerte bei Testausführung aus dem Tabellenblatt. Damit kann das gleiche Testskript mit unterschiedlichen
Daten durchgeführt werden.
Tester, die sich nicht mit der Skriptsprache auskennen, können dennoch
Testdaten für die vordefinierten Testskripte erstellen.
Testausführungswerkzeuge
data-driven approach
(random)
Bei diesen Verfahren werden, anstatt Datenkombinationen hart codiert in einem Tabellenblatt einzugeben, Daten in Echtzeit generiert und der Applikation zur Verfügung gestellt.
Das geschieht mit Hilfe von Algorithmen, die auf konfigurierbaren Parametern basieren.
Beispielsweise kann ein Werkzeug einen Algorithmus verwenden, der eine zufällige Benutzer-ID erstellt, und damit das Muster wiederholbar wird,
ein sogenanntes „Seed“ einsetzt, das die Zufälligkeit steuert.
Statische Analysewerkzeuge
Anmerkungen
Statische Analysewerkzeuge dienen der Analyse des Quellcodes und können die Einhaltung von Programmierkonventionen erzwingen.
Jedoch ist zu berücksichtigen, dass bei Anwendung eines statischen
Analysators für existierenden Quellcode eine riesige Menge Meldungen erzeugt werden können.
Wird ein Compiler mit integriertem statischen Analysator oder mit entsprechenden Compiler-Optionen verwendet, so wird die Übersetzung in Objektcode durch die erzeugten Warnmeldungen nicht unterbrochen, jedoch sollten diese Warnmeldungen analysiert werden, um die Wartbarkeit des Quellcodes zu verbessern.
Eine Basisimplementierung eines statischen Analysators sollte deshalb die
Möglichkeit enthalten, einige dieser Analysen bzw. die entsprechenden Regeln zu deaktivieren.
Testmanagementwerkzeuge
Anmerkungen
Testmanagementwerkzeuge sollten Schnittstellen zu anderen Werkzeugen oder zu einem Standardtabellenkalkulationsprogramm (z.B. Excel) enthalten, um nützliche Informationen nach den Bedürfnissen der Organisation aufzubereiten.
Faktoren
für die
Auswahl
eines
Testwerkzeuges
- Bewerten der Reife einer Organisation, Analyse der Stärken und Schwächen, Identifikation von Möglichkeiten für die Verbesserung des Testprozesses, unterstützt durch Testwerkzeuge
- Evaluation gegen klar spezifizierte Anforderungen und objektive Kriterien (für Nutzen und Anwendung)
- Eignungsnachweis (proof-of-concept) durch Nutzen des Werkzeugs während der Evaluierungsphase, um zu verifizieren, ob es mit der zu testenden Software und in der aktuellen Infrastruktur effektiv funktioniert, bzw. um nötige Anpassungen der Infrastruktur zu identifizieren damit eine effektive Nutzung des Werkzeugs möglich ist
- Evaluation der Anbieter (einschließlich Trainingsunterstützung, Support und kommerzielle bzw. vertragliche Aspekte) oder des Dienstleistungsanbieters bei nicht kommerziellen Werkzeugen
- Identifikation der internen Anforderungen für Coaching und Anleitung bei der Anwendung des Werkzeugs
- Evaluation des Schulungsbedarfs, die die Testautomatisierungskenntnisse des aktuellen Testteams
berücksichtigt - Schätzen des Kosten/Nutzen-Verhältnisses, basierend auf einem konkreten Business Case
Pilotprojekt
für die
Einführung eines Testwerkzeugs
Ziele
- Detailliertes Kennenlernen des Werkzeugs
- Bewertung, wie das Werkzeug mit den existierenden Werkzeugen und Prozessen zusammenpasst,festlegen, was ggf. angepasst werden muss
- Entscheidung über die Standardisierung des Werkzeugeinsatzes hinsichtlich Nutzung, Verwaltung, Speicherung und Wartung des Werkzeugs und der vom Werkzeug erzeugten/ verwendeten Ergebnisse (z.B. Namenskonventionen für Dateien und Tests, Neuanlage von Bibliotheken und die Festlegung von modularen Testsuiten)
- Bewerten, ob der Nutzen mit vertretbaren Kosten erreicht werden kann
Testwerkzeuge
Erfolgsfaktoren der Inbetriebnahme
- Das Werkzeug wird schrittweise in der ganzen Organisation in Betrieb genommen.
- Adaptierung und Prozessverbesserung harmonieren mit dem Werkzeug.
- Für neue Anwender werden Trainingsmaßnahmen und Coaching bereitgestellt.
- Es sind Richtlinien für die Werkzeugbenutzung definiert.
- Es gibt Verfahren, um Nutzungsdaten über den derzeitigen Gebrauch zu sammeln.
- Werkzeugverwendung und tatsächlicher Nutzen werden beobachtet.
- Das Testteam erhält Unterstützung für das Werkzeug.
- Es wird ein Erfahrungskatalog erstellt, basierend auf den Erfahrungen aller Teams.