AutoTest

FFG COMET, 2015-2018

Softwaretestautomatisierung und Testfallgenerierung

Dieses Projekt unterstützt den systematischen Übergang vom manuellen zum automatisierten Testen sowie die Verbesserung von automatisierten Test- und Qualitätssicherungsaktivitäten bei der Entwicklung und Weiterentwicklung großer und komplexer Softwareprodukte.

Ausgangssituation und Motivation

Im Laufe der Zeit entwickeln sich Softwareprodukte zu großen und komplexen Systemen mit charakteristischen technischen Herausforderungen: Es ist unmöglich, alle in der riesigen Codebasis verborgenen Details zu verstehen, es gibt keine oder nur veraltete Spezifikationen, es gibt keine oder nur eine unzureichende Abdeckung durch Regressionstests, und Änderungen bergen das Risiko unbeabsichtigter Nebeneffekte.

Qualitätssicherungsmaßnahmen zur Validierung und Verifizierung von Änderungen und Erweiterungen sind daher für die laufende Entwicklung unerlässlich. Validierung und Verifizierung (V&V) sollen die Fragen "Bauen wir das richtige Produkt?" und "Bauen wir das Produkt richtig?" beantworten. Im Kontext der laufenden Entwicklung und von Altsystemen lauten diese Fragen: "Entwickeln wir das Produkt in die richtige Richtung?" und "Wird das gesamte System nach einer Änderung noch funktionieren?" Traditionelle Methoden und Ansätze für V&V müssen neu überdacht werden, um diesem veränderten Kontext Rechnung zu tragen. Eine wesentliche Konsequenz wird dabei vielfach immer noch ignoriert: die Notwendigkeit einer systematischen Automatisierung, um eine effektive und effiziente V&V zu erreichen, die in der Lage ist, hochgradig repetitive Aufgaben und große Mengen an zu analysierenden Testdaten zu bewältigen.

Zielsetzung

Das übergeordnete Ziel des Projekts ist es, den systematischen Übergang zu automatisierten Ansätzen für die Validierung und Verifizierung zu unterstützen. Das Projekt hat einen starken Fokus auf Softwaretests, die die primäre Qualitätssicherungsmaßnahme für alle unsere Industriepartner und auch der Bereich mit der höchsten universellen Durchdringung in der Softwareindustrie ist.

Unser Ziel ist es, die bestehenden Automatisierungsansätze im Testen (d.h. die automatisierte Ausführung von Testfällen) auf die folgenden drei Ebenen zu erweitern:

  • Testdurchführung: Auf dieser Ebene betrachten wir die mit dem automatisierten Testen verbundenen Implementierungs- und Wartungsaufgaben. Die Entwicklung großer Mengen an ausführbarem Testcode mit nur grundlegender Unterstützung für Wiederverwendungskonzepte ist mit erheblichem Aufwand verbunden. Ziel ist u.a. die Entwicklung eines DSL-basierten Ansatzes und die Unterstützung durch Werkzeuge für die automatische Generierung von Testskripten aus High-Level-Testspezifikationen.
  • Testentwurf: Mit der Möglichkeit, Testskripte zu generieren, verlagert sich ein Großteil des Testaufwands auf den Entwurf und die Spezifikation von abstrakten High-Level-Testfällen. Heutzutage ist der Testentwurf eine überwiegend manuelle Tätigkeit, da die größte Herausforderung darin besteht, relevante Informationen zu sammeln (z.B. Eingabedatentypen, Äquivalenzpartitionen, Grenzen, Systemzustände). Testfälle werden oft im laufenden Betrieb entworfen, während man das zu testende System "kennenlernt". Ziel ist es, die Testgenerierung mit Ansätzen zur automatischen Testfallerstellung zu erweitern.
  • SUT-Analyse: Eine der wesentlichen Voraussetzungen für das Testen ist die Beschaffung von Wissen über das zu testende System (SUT). Während spezifizierte Anforderungen und Entwurfsdokumente einen guten Ausgangspunkt darstellen, sind diese bei Legacy-Systemen mit einer langen Entwicklungsgeschichte nur selten aktuell oder überhaupt verfügbar. Für den Testentwurf ist eine Vielzahl zusätzlicher Informationen erforderlich, die nicht in der Spezifikation enthalten sind. Diese Informationen müssen durch die Analyse des SUT und seines Anwendungskontextes gewonnen werden. Unser Ziel ist es, analytische Ansätze zur Gewinnung relevanter Informationen mit der Testfallgenerierung zu verknüpfen.