Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

Monday, 4. July 2005


Unittest mit Navision

Filed under: Navision — Steffen Forkmann at 23:03 Uhr

Manuelle Tests

Das Testen von Software war schon immer eine der wichtigsten und auch unbeliebtesten Aufgaben beim Software-Entwicklungsprozess. Generell gibt es viele unterschiedliche Arten des Testens. Im herkömmlichen Verfahren wurde meistens während der Entwicklung mit dem Debugger und Tracing-Ausgaben gearbeitet und im Anschluss vor dem Release ein umfangreicher manueller Test des kompletten Systems durchgeführt. Aber damit ist es ja bekanntlich noch lange nicht getan, denn der Entwicklungsprozess ist mit der Fertigstellung von Programmteilen längst nicht beendet. Änderungen am Programmcode, z.B. für Updates oder neue Features können unabsehbare Auswirkungen auf bereits getestete Programmteile haben. Die Folge ist, dass der komplette Test vor jedem neuen Release wiederholt werden muss. Da dies natürliche gewaltige Kosten verursacht wurden schon früh automatisierte Tests eingesetzt, die genau auf die Stellen aufmerksam machen, bei denen nun Fehlfunktionen auftreten. Beispiel für solche Test-Systeme sind JUnit (Java) oder auch NUnit (.NET), was in abgewandelter Form nun sogar in das neue Visual Studio 2005 integriert wurde. Doch was genau verbirgt sich hinter dem Unittesting?

Beim Unittesting (Unit = Einheit, Bauteil) wird die Funktion eines atomaren Teils des Systems (z.B. einer Berechnungsfunktion) isoliert von allen anderen getestet und validiert. Unittests können prinzipiell als Whitebox- und Blackbox-Tests betrieben werden. In der Regel wird jedoch der Entwickler im besten Fall schon vor der Entwicklung der Funktionalität die Testfälle anlegen. Nach jeder größeren Quellcode-Änderung sollte dann durch Ablaufen lassen aller Testfälle die Fehlerfreiheit überprüft werden.

Software-Entwicklungszyklus

Automatisiert und wiederholbar Testen durch Unit-Tests

Ein Unit-Test prüft in der Regel immer nur einen sehr kleinen und autarken Teil des Software-Systems – wie beispielsweise eine einzelne Funktion. Dabei wird bei jedem Test die zu testende Funktion oder Methode mit Testdaten (Parametern) konfrontiert und deren Reaktion auf diese Testdaten geprüft. Die zu erwartenden Ausgabewerte werden nun mit den von der jeweiligen Funktion oder Methode gelieferten Ergebnisdaten verglichen (Assertions). Stimmt das erwartete Ergebnis mit dem gelieferten Ergebnis der Funktion oder Methode überein, so gilt der Test als bestanden.

Ein TestRun besteht im Allgemeinen aus einer ganzen Reihe von Testfällen, die nicht nur ein Parameter-Ergebnis-Paar prüfen, sondern gleich mehrere.

Unittest mit Navision

Auch für Microsoft Navision Entwickler sollten UnitTests zum täglichen Programmieralltag gehören. Bisher gab es jedoch kein Testframework für Navision, so dass wir uns bei der msu solutions GmbH (Microsoft Certified Partner) entschlossen haben ein eigenes zu entwickeln. Die Einsatzmöglichkeiten des Navision-UnitTest-Frameworks möchte ich hier vorstellen.

Architektur

Leistungsmerkmale:

  • Labeln von Testgruppen und Testläufen:
    UnitTest.LabelTestRun(‘This run has to succeed’);
  • Einfache Funktionstest mit definierten Vergleich:
    UnitTest.IntAssert( 4/2 ,2, ‘Is 4/2 = 2?’);
  • Unterstützt erwartete Exceptions:
    UnitTest.AssumeError(‘Test 3 Error’);
  • Komplette Assertions über Feldinhalte, Recods bis zu ganzen Tabellen:
    UnitTest.TableAssertion(TableID);

Testauswahl-Formular

UnitTest Start-Form

  • Auswahl der zu testenden Testgruppen
  • Import/Export von Fehlertextbausteinen

Unittest-Viewer

UnitTest Viewer

  • Anzeige des Testprotokolls
  • Anzeige, welche Methoden fehlerfrei abliefen und wo Fehler auftraten
Tags: , , , ,

1 Comment »

  1. […] Auch die Bereitschaft für Test Driven Design (TDD) hat sich im Dynamics-Umfeld wohl noch nicht etabliert. Dabei ist TDD doch ein guter Ansatz um die Qualität in Softwareprojekten hoch zu halten und die Anzahl gescheiterter Projekte zu minimieren. Dynamics AX ist, soweit ich weiß, das einzige ERP-System mit einem integrierten UnitTest-Modul. Ich würde mich freuen, wenn es sowas demnächst auch von Hause aus im NAV-Bereich geben würde (Unittest mit NAV). […]

    Pingback by Eindrücke vom Microsoft Dynamics Technical Community Airlift » Blog der Microsoft .NET / Dynamics NAV - Group Halle — Sunday, 16. December 2007 um 17:34 Uhr

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .