Zum Inhalt springen

„Testautomatisierung“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
[gesichtete Version][gesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
KnopfBot (Diskussion | Beiträge)
K Bot: Link(s) auf BKL Perl ersetzt durch Perl (Programmiersprache)
Zeile 29: Zeile 29:
* Testspezifikation
* Testspezifikation
* Testfallerstellung
* Testfallerstellung
* Testdatenerstellung
* Testscripterstellung
* Testscripterstellung
* Testdurchführung
* Testdurchführung

Version vom 12. August 2008, 10:36 Uhr

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.

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 den Entwickler, der unter Umständen nicht in der Lage ist, das Gesamtsoftwaresystem auf einmal zu überschauen, 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 (s. 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.

Automatisierbare Aktivitäten

Prinzipiell lassen sich folgende Aktivitäten automatisieren:

  • Testspezifikation
  • Testfallerstellung
  • Testdatenerstellung
  • Testscripterstellung
  • Testdurchführung
  • Testauswertung
  • Testdokumentation
  • Testadministration

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. Dabei wird eine weitgehende und möglichst vollautomatische Übersetzung von „höheren“ in „niedrigere“ Artefakte angestrebt.

Zur Testfallerstellung kann das Datenmodell einer Software direkt genutzt werden. Basierend auf dem Überlegung von Bob Jenkins zum pairwise testing gibt es ein einfaches DOS-basiertes Tool Jenny, um Testfälle synthetisch zu generieren. Es werden die relevanten Datenfelder und deren Schlüsselwerte bzw. konkrete Testdaten eingegeben und durch Permutation wird ein optimierter Testdatenset erstellt. Die erstellten Testfälle können auch im Zuge von nicht-automatisierten Testdurchführungen genutzt werden und beschleunigen schon durch die automatisierte Erstellung den Testaufwand, und durch den optimalen Aufbau der Testfälle kann bei geringerer Testanzahl eine höhere Testqualität erreicht werden.

Liegt eine Testspezifikation nicht schon, wie oben beschrieben, in ablauffähiger Sprache vor, sondern in einer formaleren Form (z. B. UML, Excel-Tabelle, oder Ähnliches), kann diese mit geeigneten Werkzeugen in ablauffähige Testscripte konvertiert bzw. übersetzt werden. Dieses Verfahren nennt man automatische Testscripterstellung.

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.

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. Wesentlich aussagekräftiger sind jedoch Ansätze bei denen zwei Software-Versionen oder zwei Testzyklen und damit zwei Testergebnisse gegen das Soll-Ergebnis verglichen werden. Hier lassen sich Tendenzaussagen und Qualitätsstatistiken berechnen.

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

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.

Werkzeuge für automatisierte Software-Tests

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


Siehe auch