AccUnit

Unit Testing in VBA - Microsoft Access, Excel, …

Grundlagen

Aus AccUnit
(Unterschied zwischen Versionen)
Wechseln zu: Navigation, Suche
 
(Der Versionsvergleich bezieht 8 dazwischenliegende Versionen mit ein.)
Zeile 3: Zeile 3:
Anforderungen in Umgangssprache sind jedoch nicht geeignet als Grundlage eines Tests.  
Anforderungen in Umgangssprache sind jedoch nicht geeignet als Grundlage eines Tests.  
-
( "Naja, das Ding soll halt nicht abstürzen" oder "Wenn ich da vorne 100 eingeben, dann soll da hinten irgendwas rauskommen.. " )
+
( "Naja, das Ding soll halt nicht abstürzen" oder "Wenn ich da vorne 100 eingebe, dann soll da hinten irgendwas rauskommen.. " )
Zudem ist es nicht möglich komplexe Applikationen präzise zu beschreiben.
Zudem ist es nicht möglich komplexe Applikationen präzise zu beschreiben.
-
Zum Testen von Software ist es also wichtig, die große Komplexität einer Applikation in kleine testbare Programmstückchen aufzuteilen.
+
Zum Testen von Software ist es also wichtig, die große Komplexität einer Applikation in kleine testbare Programmfragmente ( = Funktionen / Prozeduren) aufzuteilen.
-
Diese Programmstückchen sollten dann EINE Aufgabe erledigen, so daß man diese Programmstückchen testet in dem man beschreibt:
+
Diese Programmfragmente sollten dann EINE Aufgabe erledigen, so daß man dieses Programmfragment testet in dem man beschreibt:
-
   - welches Programmstück ( Modul, Klasse, Funktion, Sub ) teste ich
+
   - welches Programmfragment ( Modul, Klasse, Funktion, Sub ) teste ich
-
   - welche Eingabewerte ( Vorbedingungen ) erhält das Programmstück
+
   - welche Eingabewerte ( Vorbedingungen ) definiere ich
   - welche Ausgabewerte ( Nachbedingungen ) erwarte ich
   - welche Ausgabewerte ( Nachbedingungen ) erwarte ich
Zeile 18: Zeile 18:
[[Der erste Test]]
[[Der erste Test]]
-
== Der erste Test ==
+
[[Tests erstellen]]
-
Den ersten Test wollen wir natürlich nicht mit einem komplexen sondern mit einem ganz simplen Beispiel beginnen:
+
[[Testumgebung entfernen]]
-
Es soll eine Funktion erstellt werden, die zu einem Dezimal Wert die binäre Darstellung liefert.
+
-
Ein entsprechende VBA Funktion könnte also so aussehen:
+
[[Einstellungen]]
-
<source>Public Function Dez2Bin(ByVal TheValue As Long) As String</source>
+
-
Wie könnte also der erste Test lauten ?
+
[[AccUnit-Attribute]]
-
  - Die Funktion Dez2Bin
+
-
  - liefert bei einer Eingabe des Dezimalwerts 0
+
-
  - einen String mit der Ziffer "0"
+
-
 
+
-
Erstellen Sie also ein neues Modul mit dem oben genannten Funktionsrumpf. Klicken Sie innerhalb dieser Funktion die rechte Maustaste und wählen Sie "Neue Testmethode einfügen". [[Bild: AccUnit_Test1.jpg]]
+
-
 
+
-
es öffnet sich der Dialog zum Einfügen einer neue Testmethode:
+
-
[[Bild: AccUnit-DialogEinfuegen.jpg]]
+
-
 
+
-
AccUnit wird zu unserem Modul mit den zu testenden Funktionen eine neue Testklasse erstellen, in denen dann die Testmethoden untergebracht sind. Das Modul mit der Funktion Dez2Bin habe ich "Umrechungen" genannt. AccUnit schlägt als Name für die Testklasse "UmrechnungeTest" vor, den Sie so übernehmen sollten. Bei den zu testenden Methode ist schon unsere Funktion De2Bin ausgewählt, so daß wir nur noch den zu testenden Zustand und das erwartete Verhalten eintragen müssen.
+
-
Als zu testender Zustand tragen wir ein: "mitEingabe0"
+
-
und als erwartetes Verhalten: "liefertdenString0"
+
-
AccUnit erzeugt aus diesen beiden Angaben den Namen der Testmethode. Achten Sie also darauf, daß Sie keine Leerzeichen, Anführungszeichen oder andere Sonderzeichen verwenden, die in Methodennamen nicht erlaubt sind.
+
-
 
+
-
AccUnit erzeugt die die Testklasse:
+
-
<source>
+
-
Option Compare Text
+
-
Option Explicit
+
-
'AccUnit:TestClass
+
-
'--------------------------------------------------------------------
+
-
' AccUnit Infrastructure
+
-
'--------------------------------------------------------------------
+
-
Implements SimplyVBUnit.ITestFixture
+
-
Implements AccUnit_Integration.ITestManagerBridge
+
-
Private TestManager As AccUnit_Integration.TestManager
+
-
Private Sub ITestManagerBridge_InitTestManager(ByVal NewTestManager As AccUnit_Integration.ITestManagerComInterface): Set TestManager = NewTestManager: End Sub
+
-
Private Function ITestManagerBridge_GetTestManager() As AccUnit_Integration.ITestManagerComInterface: Set ITestManagerBridge_GetTestManager =  TestManager: End Function
+
-
Private Sub ITestFixture_AddTestCases(ByVal Tests As SimplyVBUnit.TestCaseCollector): TestManager.AddTestCases Tests: End Sub
+
-
'--------------------------------------------------------------------
+
-
' Tests
+
-
'--------------------------------------------------------------------
+
-
'
+
-
Public Sub Dez2Bin_mitEingabe0_liefertdenString0()
+
-
  ' Arrange
+
-
  Err.Raise vbObjectError, "Dez2Bin_mitEingabe0_liefertdenString0", "Not implemented"
+
-
  ' Act
+
-
  ' Assert
+
-
  Assert.That 1, Iz.EqualTo(1)
+
-
End Sub
+
-
</source>
+
-
 
+
-
In dem Bereich  'AccUnit Infrastructure' werden ein paar Funktionen definiert die von der Testumgebung benötigt werden.
+
-
Bitte nehmen Sie in diesem Bereich KEINE Änderungen vor.
+

Aktuelle Version vom 09:35, 6. Aug. 2023

Eine Software zu testen bedeutet, festzustellen, ob die Software an sie gestellte Anforderungen auch erfüllt.

Anforderungen in Umgangssprache sind jedoch nicht geeignet als Grundlage eines Tests. ( "Naja, das Ding soll halt nicht abstürzen" oder "Wenn ich da vorne 100 eingebe, dann soll da hinten irgendwas rauskommen.. " )

Zudem ist es nicht möglich komplexe Applikationen präzise zu beschreiben.

Zum Testen von Software ist es also wichtig, die große Komplexität einer Applikation in kleine testbare Programmfragmente ( = Funktionen / Prozeduren) aufzuteilen. Diese Programmfragmente sollten dann EINE Aufgabe erledigen, so daß man dieses Programmfragment testet in dem man beschreibt:

 - welches Programmfragment ( Modul, Klasse, Funktion, Sub ) teste ich
 - welche Eingabewerte ( Vorbedingungen ) definiere ich
 - welche Ausgabewerte ( Nachbedingungen ) erwarte ich

Unter Umständen wird es also nötig sein den bestehenden Programmcode zu überarbeiten und in kleine testbare Einheiten zu zerlegen.

Der erste Test

Tests erstellen

Testumgebung entfernen

Einstellungen

AccUnit-Attribute

Persönliche Werkzeuge