schwobeseggl.de

ein Neigschmecktr in Baden

  • Artikel
  • Fotos
  • Impressum

Unit Testing

Posted at March 20, 2008

In der Softwareentwicklung gibt es, wie in jeder Ingenieursdisziplin, ein Vorgehensmodell wie komplexe Software am Besten erstellt werden sollte. Diese Planung trennt die einzelnen Schritte der Entwicklung in Teilprobleme auf, die dann weniger komplex und somit leichter zu beherrschen sind.

In der Softwareentwicklung gibt es derer fünf:

  1. Planung
  2. Analyse
  3. Design (Entwurf)
  4. Implementierung
  5. Validation und Verifikation

Ich werde hier nur auf den fünften Teil eingehen, für die ersten Teile empfehle ich jetzt nur einfach spontan mal UMLet.
Was genau bedeutet eigentlich Validation und wie grenzt man es zur Verifikation ab? In der Informatik bedeutet Validierung die Überprüfung ob ein System den Anforderungen (Aus dem 1. Teil “Planung”) entspricht. Dies muss dann natürlich auch noch dokumentiert werden. Dies könnte man auch ohne Weiteres für die Verifikation sagen, aber die beiden Wörter lassen sich am Besten mit den beiden Sätzen abgrenzen:

Validierung:

Bauen wir das richtige Produkt?

Verifikation:

Bauen wir das Produkt richtig?

Es ist also durchaus möglich ein Produkt zu verifizieren das überhaupt keinen Nutzen für den Kunden hat.

Diese beiden Hauptwörter werden mittels Test umgesetzt, wobei sich diese Tests nochmals in vier Unterkategorien unterteilen lassen. Die Einteilung passiert hier anhand der Systemstruktur:

  1. Modultest (auch Unit-Test oder Komponententest genannt)
  2. Integrationstest
  3. Subsystemtest
  4. Systemtest

Der Modultest dient der Verifikation von einzelnen Modulen, wie z.B. Klassen. Meist werden diese mittels Debuginformationen im Logfile oder direkt auf der Konsole auf Korrektheit überprüft, dies ist aber meist sehr mühsam und lässt sich nicht automatisieren. Besonders ekelhaft wird es dann wenn man auf Systemcall-Ebene runtergeht (stracen) und dort versucht die Ursache des Fehlers aufzuspüren. Die Debugausgaben blähen auch den Code auf und man (also der Programmieren) muss dann immer erst den “wichtigen” Programmcode vom “unwichtigen” trennen (bezogen auf die Funktionalität). Ändert man nun am Code etwas (“Moment, das fix ich gschwind”), so hat man meist das eine Problem dadurch behoben das man ein anderes erzeugt hat. Wenn dieses offensichtlich ist, dann ist das kein Problem, wenn man aber Seiteneffekte kreiert die sich erst hintenrum offenbaren, so hat man sich selbst ins Knie geschossen.

Hier setzen die Unit-Tests an. Dazu werden gewisse Funktionen auf bestimmte Ein- und Ausgabewerte getestet (entweder per White- oder Blackbox-Test) und diese dann auf Korrektheit überprüft. Besonders interessant sind hierbei die Grenzwerte des Definitionsbereichs, so sollte bei einer Funktion die 20 durch einen per Parameter übergebene Zahl teilt auf die Null aufpassen, da diese natürlich gesondert behandelt werden muss. Diese Tests können dann dem Programmieren helfen seine “schnell, schnell”-Änderungen zu überprüfen, da er ja einfach nur auf einen Knopf drücken muss, die automatisierten Tests den Code testen und der Programmieren sofort weiss ob er eventuell Seiteneffekte kreiert hat. Man muss aber erwähnen dass das Erstellen von Tests nicht die 100%ige Fehlerfreiheit garantiert, es garantiert nur das die getesteten Funktion sich so verhalten wie sie sollten.

Ein bekanntes Framework zum Testen ist JUnit, dieses bietet sogar eine GUI die einem klipp und klar mittels ROT oder GRÜN anzeigt ob die Tests funktioniert haben, oder auch nicht.

Ähnliche Artikel:

  1. xUnit
  2. JUnit und Eclipse
  3. Refactoring
  4. Geschwindigkeit von Webseiten
  5. WordPress 2.5-RC2

Praxissemester, Studium
  • Digg
  • Stumbleupon
  • Del.icio.us
  • Reddit
  • Technorati

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

One Response to “Unit Testing”

Search

Archives

  • July 2010
  • June 2010
  • May 2010
  • April 2010
  • March 2010
  • February 2010
  • January 2010
  • December 2009
  • November 2009
  • October 2009
  • September 2009
  • August 2009
  • July 2009
  • June 2009
  • May 2009
  • April 2009
  • March 2009
  • February 2009
  • January 2009
  • December 2008
  • November 2008
  • October 2008
  • September 2008
  • August 2008
  • July 2008
  • June 2008
  • May 2008
  • April 2008
  • March 2008
  • February 2008
  • January 2008
  • December 2007
  • November 2007
  • October 2007
  • March 2007
  • March 2006
  • November 2005
  • October 2005
  • September 2005

Categories

  • Arbeit
  • PC & Accessoires
    • Linux
  • Pfadfinder
  • Programmiersprachen
    • C#
    • Java
    • PHP
  • Sonstiges
  • Spass
  • Studium
    • Diplomarbeit
    • Praxissemester
    • USA
  • Uncategorized
  • Wordpress
  • Recent Posts

    • URLdump
    • Flagge zeigen
    • London
    • $N zufällig gewählte Dateien
    • Hamburg – Jetzt in echt und mit Bildern
  • Tags

    Addon Amerika Apple Auto bahn bild Computer dell Deutschland eisdiele Extension fahrrad Film firefox flash geburtstag google Indiana indianapolis Internet itunes Java Javascript junit kaputt karlsruhe Kino Kinofilm Laptop last.fm Linux Microsoft Mozilla PHP Praxissemester skype Spass system Thunderbird umzug USA windows wohnung Wordpress Zoll
  • Links

    • almightyfish - A new world order
    • DPSG Stamm Holzgerlingen - Die Homepage des Pfadfinderstamms der DPSG Holzgerlingen
    • eisdiele’s blog - Der Blog eines tollen Typs. Ich mein, er ist Pfadfinder, solche Leute sind per se einfach spitze …
    • Jule’s Blog - Ein Blog von der Jule :) in good ol’ Karlsruhe
    • Stephan’s Blog - Ein Komolitone

Powered by Wordpress | WP Premium theme by Premium Wordpress Themes
Copyright 2010 schwobeseggl.de. All rights reserved

  • Artikel
  • Fotos
  • Impressum