AutoTest: Automatisiertes Testen von Software

Effizienteres und Bedarfsgerechtes Testen von Software

Ziel dieses Projekts ist die Entwicklung von Ansätzen zur Automatisierung der Qualitätssicherung in der Softwareentwicklung. Dabei liegt der Fokus auf dem Testen von Software, das als primäre qualitätssichernde Maßnahme gilt.

Motivation

Die Entwicklung und Wartung umfangreicher Software Systeme wirft üblicherweise eine Menge an technischer und organisatorischer Herausforderungen auf. Bezogen auf qualitätsrelevante Aspekte lassen sich u.a. Punkte wie

  • mangelnde oder fehlende Spezifikation von Anforderungen
  • schlechte Abdeckung der Codebase durch (Regressions)Tests
  • Unabwägbarkeit von Seiteneffekten bei Änderungen

identifizieren. Wirksame Maßnahmen zur Qualitätssicherung müssen hier die Validierung und Verifikation (V&V) von Änderungen und Erweiterungen im Code erlauben. V&V repräsentieren dabei die beiden zentralen Fragen „Erzeugen wir das richtige Produkt?“ und „Erzeugen wir unser Produkt richtig?“ klären. Im Kontext der Entwicklung und Wartung großer Softwaresysteme lässt sich das auch als „Wird das System in die richtige Richtung weiterentwickelt?“, bzw. „Wird das System nach den Änderungen noch korrekt funktionieren?“ formulieren. Althergebrachte Methoden und Ansätze für V&V müssen unter diesen Gesichtspunkten angepasst werden, dies gilt insbesondere für die systematische Automatisierung vor allem von Aufgaben mit hoher Wiederholrate und/oder großen Datenmengen.

Themen

Das Ziel dieses Projekts ist die Entwicklung von Ansätzen für den automatisierten Einsatz von V&V in der Softwareentwicklung. Dabei liegt der Fokus vor allem auf dem Testen von Software, das als primär qualitätssichernde Maßnahme in der Softwareindustrie gilt. Konkret soll im Rahmen dieses Projekts die Automatisierung des Softwaretests auf drei Ebenen vorangetrieben werden:

  • Test Implementierung: Auf dieser Ebene unterstützen wir Implementierungs- und die Wartungsaufgaben, die im Rahmen eines automatisierten Testprozesses anfallen. In Softwareprojekte fließt häufig ein exorbitant hoher Aufwand in die Erstellung und Wartung von Testcode. Oft wird hier auch möglicher Wiederverwendung keine Rechnung getragen. Hier soll ein Ansatz basierend auf domänenspezifischen Sprachen und entsprechender Werkzeugunterstützung zur automatisierten Generierung von Testskripts aus abstrakten Testspezifikationen entwickelt werden
  • Test Design: Ist es einmal möglich Testskripte zu generieren, wird das Hauptaugenmerk auf die Erzeugung von (abstrakten) Testfällen auf höherer Ebene gelegt. Heute ist Test Design hauptsächlich eine manuelle Tätigkeit, auch weil die zentralen Anforderungen die Identifikation und Sammlung relevanter Informationen, wie z.B. Eingangsdatentypen, Äquivalenzklassen, Grenzfälle und Systemzustände, umfasst. Testfälle „entstehen“ oft spontan während der Analyse  des zu testenden Systems (SUT). Ziel ist es auch hier die Automatisierung durch die Generierung von Testfällen voranzutreiben.
  • Analyse des zu testenden Systems („SUT Analysis“): Eine der essentiellen Tätigkeiten im Testprozess ist die Ermittlung und Bereitstellung von Wissen über das zu testende System. Üblicherweise sind dafür Systemspezifikationen und Designdokumente ein guter Startpunkt. Doch häufig sind diese Dokumente entweder nicht verfügbar oder unvollständig und veraltet, was vor allem bei Altsystemen vorkommen kann. Hinzu kommt, dass für das Testen oft Information erforderlich ist, die sich in keiner Spezifikation findet und die eine Analyse des SUT und seines Einsatzkontexts erfordert. Hier ist das Ziel die Verflechtung analytischer Ansätze zur Informationsgewinnung mit der Generierung von Testfällen

Nutzen

Der Nutzen des Softwaretests als primäre qualitätssichernde Maßnahme in der Softwareentwicklung steht prinzipiell außer Streit. Die Automatisierung wesentlicher Schritte beim Testen fördert zusätzlich die Effizienz des Testprozesses und spart Kosten (vor allem bei der Durchführung). Zusätzlich lassen sich folgende Vorteile ausmachen

  • Die automatische Generierung von Testfällen und –skripten erhöht in der Regel die Testabdeckung und die Effizienz der Testerstellung.
  • Durch die Automatisierung werden die fehlerträchtige manuelle Auswahl und Ausführung von Tests  vermieden.
  • Die automatische Auswahl von Testfällen aufgrund bestimmter Charakteristika des SUT (z.B. Art und Lokalisation von Änderungen, Risikofaktoren) erlaubt ein zielorientiertes und bedarfsgerechtes Testen.
  • Die Hinzunahme von zusätzlichen Wissensquellen (z.B. Architekturbezogenes Wissen) bei der Testgenerierung kann beim Aufspüren kritischer Einsatzszenarien helfen.
Dieses Projekt wird im Rahmen von COMET – Competence Centers for Excellent Technologies durch BMVIT, BMWFJ, Land Oberösterreich und den wissenschaftlichen Partnern des SCCH gefördert. Das Programm COMET wird durch die FFG abgewickelt.

 

Rudolf Ramler

Ramler Rudolf

Research Team Leader Automated Software Testing
Telefon: +43 7236 3343 872
Fax: +43 7236 3343 888

zurück