Testautomatisierung

Testautomatisierung

Unter Testautomatisierung (auch Testautomation) ist die Automatisierung von Aktivitäten im Test zu verstehen, sowohl beim Softwaretest als auch beim automatisierten Test von Hardware, dem Hardwaretest.

Inhaltsverzeichnis

Motivation

In der Softwareentwicklung ist es besonders wichtig, einen festen, definierten Status der Software zu kennen, so z. B.:

  • Ist die jetzige, neue Softwareversion besser als die alte Version?

Automatische Tests, die jeden Tag zu definierten Zeiten die Software testen, machen Software bezüglich ihrer Qualität erst messbar und zeigen mögliche Nebeneffekte von vorgenommenen Änderungen direkt und erkennbar an. Sie dienen als direkte Rückkopplung für Entwickler und für Tester, die unter Umständen nicht in der Lage sind, das Gesamtsoftwaresystem auf einmal zu überschauen, sowie zur Erkennung von Nebeneffekten und Folgefehlern.

Die Testautomatisierung liefert demnach eine Metrik der Anzahl der erfolgreichen Testfälle pro Testlauf. Ist die Software so messbar, können jederzeit folgende Fragen beantwortet werden:

  • Wann ist eine neue Anforderung durch eine Software vollständig erfüllt?
  • Wann ist ein Programmfehler behoben?
  • Wann ist die Arbeit des Entwicklers beendet?
  • Wer ist zu welchem Zeitpunkt wofür verantwortlich?
  • Welche Qualität hat eine neue Software-Version (siehe Entwicklungsstadium (Software))?
  • Ist die neue Software-Version qualitativ besser als die vorherige Version?
  • Hat ein behobener Fehler oder eine neue Anforderung eine Auswirkung auf bestehende Software (Änderung des Verhaltens der Software)?
  • Ist sichergestellt, dass der Echtbetrieb mit der neuen Software erfolgreich und sicher ist?
  • Was ist nun wirklich an neuer Funktionalität und Fehlerkorrekturen in der Software; kann man das nachvollziehen?
  • Lässt sich der Liefertermin der Software noch einhalten, wenn eine Einschätzung der momentanen Qualität der Software nicht möglich ist?

Zur Beispielfrage: „Wann ist ein Programmfehler behoben?“ lautet die Antwort in diesem Fall:

„Genau dann, wenn alle schon existierenden Testfälle und auch die für den Programmfehler selbst geschriebenen Testfälle erfolgreich beendet wurden.“

Eine Rückmeldung liefert nur der ständige Test, und dieser ist durch Automatisierung erst möglich und realisierbar.

Ein weiterer Vorteil der Testautomatisierung ist die Beschleunigung des Entwicklungsprozesses. Wo bei Software-Projekten ohne Automatisierung die Produktion, die Installation und der Test nacheinander manuell durchgeführt werden, können bei vollautomatisierten Projekten (also wenn außer dem Test auch Produktion und Installation automatisierbar sind) diese drei Schritte automatisch nacheinander gestartet werden, z. B. in einem Nachlauf. Je nach Umfang des Projektes kann man gegebenenfalls diesen Ablauf abends starten und am nächsten Morgen das Testergebnis verfügbar haben.

Automatisierbare Aktivitäten

Prinzipiell lassen sich folgende Aktivitäten automatisieren:

  • Testfallerstellung
    • Testdatenerstellung
    • Testskripterstellung
  • Testdurchführung
  • Testauswertung
  • Testdokumentation
  • Testadministration

Testfallerstellung

Abhängig vom verwendeten Format zur Beschreibung eines Testfalles lässt sich die Testfallerstellung automatisieren, indem höhersprachliche Beschreibungen (Testspezifikationen) in dieses Format transformiert werden. Zur Testspezifikation werden Sprachen unterschiedlicher Abstraktionsstufe verwendet: einfache tabellenartige Notationen für Testdaten und Funktionsaufrufe, Skriptsprachen (z. B. Tcl, Perl, Python), imperative Sprachen (z. B. C, TTCN-3), objektorientierte Ansätze (JUnit) und deklarative und logische Formalismen sowie modellbasierte Ansätze (z. B. TPT). Dabei wird eine weitgehende und möglichst vollautomatische Übersetzung von Artefakten in einer maschinenfernen fachlichen Sprachebene in Artefakte in einer maschinennahen technischen Sprachebene angestrebt. Ein anderer Ansatz ist es, die Testfallerstellung anhand von zu deklarierenden Geschäftsobjekten dynamisch zu generieren. Liegt eine Testspezifikation nicht schon in ablauffähiger Form vor, sondern in einer nicht ausführbaren Sprache (z. B. UML, Excel-Tabelle, oder ähnliches), kann diese unter Umständen mit geeigneten Werkzeugen automatisch in ablauffähige Testfälle übersetzt werden.

Testdatenerstellung und Testskripterstellung

Da die Anzahl möglicher Eingabewerte und Abläufe eines Programms oft sehr groß ist, müssen bei der Generierung von Testfällen aus Testspezifikationen Eingabedaten und Abläufe gemäß der zu erzielenden Testabdeckung ausgewählt werden. Zur Testdatenerstellung kann dabei oft das Datenmodell der Software genutzt werden, zur Testskripterstellung werden beim modellbasierten Testen Verhaltensmodelle der Software verwendet. Lösungen, die ohne Skripten auskommen, sind auf dem kommerziellen Markt auch verfügbar.

Testdurchführung

Die Testdurchführung erfolgt heute weitgehend durch vollautomatische Testwerkzeuge. Abhängig vom Zielsystem kommen hier Unit-Test-Tools, Testsysteme für Grafische Benutzeroberflächen, Lasttestsysteme, Hardware-in-the-loop-Prüfstände oder andere Werkzeuge zum Einsatz.

Testauswertung

Zur Testauswertung muss das erhaltene Testergebnis mit dem Erwartungswert verglichen werden. Im einfachsten Fall ist hier nur ein Tabellenvergleich vorzunehmen; falls das Sollverhalten allerdings durch logische Constraints definiert ist oder extrem komplexe Berechnungen enthält, kann das so genannte Orakelproblem auftreten. Werden zwei Software-Versionen oder zwei Testzyklen und damit zwei Testergebnisse gegen das Soll-Ergebnis verglichen, so lassen sich Tendenzaussagen und Qualitätsstatistiken berechnen.

Testdokumentation

Bei der Testdokumentation wird aus den erhaltenen Testergebnissen ein nachvollziehbarer und verständlicher Testbericht erzeugt. Hierfür können Dokumentgeneratoren und Schablonenwerkzeuge eingesetzt werden.

Testadministration

Aufgabe der Testadministration ist die Verwaltung und Versionierung von Testsuiten sowie die Bereitstellung einer adäquaten Benutzungsumgebung. Neben Standardwerkzeugen (z. B. CVS, Eclipse) gibt es eine Reihe von Spezialwerkzeugen, die speziell auf die Belange des Softwaretests zugeschnitten sind.

Universelle Architektur zur Testautomatisierung

Universelle Testsystem-Architektur

Für die Automatisierung der oben genannten Aktivitäten existieren verschiedene Tools. Diese fokussieren stets die Lösung spezieller Aufgaben und unterscheiden sich in Bedienphilosophie, Syntax und Semantik. Daher ist es oft schwierig die richtigen Tools für eine bestimmte Menge von Aktivitäten auszuwählen bzw. die Tools richtig einzusetzen. Eine Strukturierung und Einordnung der automatisierbaren Aktivitäten zur abstrahierten lösungsneutralen Toolfunktionalität bietet die universelle Testsystem-Architektur. Dazu definiert sie fünf Funktionsebenen: Testmanagement, Testausführung und -auswertung, Testbettsteuerung, Testobjektstimulation und -beobachtung sowie Testobjektumgebung. Die Testsystem-Architektur unterstützt die Integration vorhandener Test-Tools und -Komponenten in Testsysteme und stellt somit eine universelle Grundlage zur Testautomatisierung dar.

Werkzeuge für automatisierte Software-Tests

Werkzeuge für automatisiertes Testen von Software sind z. B.

  • ABAP Unit
  • app.test – Testtool zur automatisierten Qualitätssicherung von Web- und Java-Anwendungen auf Microsoft Windows, Ubuntu Linux und Mac OS-X.
  • CppUnit für C++
  • csvdiff – ein Tool zur Testauswertung um Datenbankentladedateien/Tabellen zu vergleichen
  • eCATT von SAP
  • EXAM - Methodik zur grafischen Entwicklung von Testfällen für Automobilanwendungen
  • expecco - Tool zur Testautomatisierung mit graphischer Modellierung, Ausführung und Auswertung von Soft- und Hardwaretests
  • Fit - Framework for Integrated Test
  • Hyades
  • JUnit und Cactus für Java
  • JMeter oder Selenium für Webprojekte
  • NUnit für alle Sprachen (C#, C++.Net, VisualBasic usw.), die eine Implementierung der CLI verwenden, z. B. das Microsoft .Net Framework oder das Mono-Projekt
  • QF-Test – ein Testwerkzeug für die Automatisierung von Java-und Web-Anwendungen mit grafischer Benutzeroberfläche (GUI)
  • Tessy – ein Werkzeug zum automatisierten Modul- bzw. Unit-Test von in C/C++ geschriebener Software
  • TOSCA Testsuite - beinhaltet ein integriertes Testmanagement, eine grafische Benutzeroberfläche (GUI) und eine Anwendungsprogrammierschnittstelle (API).
  • TPT – Time Partition Testing: eine Methode und Werkzeug für den automatischen systematischen modellbasierten Test von Steuerungs- und Regelsystemen
  • WinRunner – ein automatisches GUI-Testwerkzeug für Windows (per Add-Ins auch für andere Anwendungen z.B. in Java)

Siehe auch

Weblinks

Literatur

  • Dmitry Korotkiy: Universelle Testsystem-Architektur in der Mechatronik. Sierke Verlag, Göttingen 2010. ISBN 978-3-86844-238-0

Wikimedia Foundation.

Игры ⚽ Нужен реферат?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • QftestJUI — Die Neutralität dieses Artikels oder Abschnitts ist umstritten. Eine Begründung steht auf der Diskussionsseite. QF Test Entwickler: Quality First Software Aktu …   Deutsch Wikipedia

  • Akzeptanztest (Softwaretechnik) — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • Programmtest — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • Software-Test — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • Softwaretest — Ein Softwaretest prüft und bewertet Software gegen die für ihren Einsatz definierten Anforderungen und misst ihre Qualität. Die gewonnenen Erkenntnisse werden zur Erkennung und Behebung von Softwarefehlern genutzt. Tests während der… …   Deutsch Wikipedia

  • System-Test — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • Systemtest — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • Test (Informatik) — Ein Softwaretest ist ein Test während der Softwareentwicklung, um die Funktionalität einer Software an den Anforderungen und ihre Qualität zu messen, und Softwarefehler zu ermitteln. Inhaltsverzeichnis 1 Definition 2 Ziele 3 Testplanung …   Deutsch Wikipedia

  • EXAM — EXtended Automation Method (EXAM) Entwickler MicroNova AG Aktuelle Version 3.0 (Jan 2011) Kategorie Testautomatisierung Lizenz Freeware, GPL OpenSource …   Deutsch Wikipedia

  • HiL — Hardware in the Loop (HiL) bezeichnet ein Verfahren, bei dem ein eingebettetes System (z. B. reales elektronisches Steuergerät oder reale mechatronische Komponente) über seine Ein und Ausgänge an ein angepasstes Gegenstück, das im Allgemeinen HiL …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”