Du kennst das:
Access lÀuft stabil. Bis plötzlich doch wieder ein Makro spinnt oder ein Formular falsche Werte auswirft.
Manuelles Testen nervt. Und kostet Zeit.
Darum zeig ich Dir hier, wie Du Access-Datenbanken automatisiert testen kannst â mit VBA.
Trocken. Direkt. Kein Schnickschnack.
Warum automatisiert testen?
Weilâs schneller geht.
Weil Du weniger vergisst.
Weilâs sich lohnt â besonders bei komplexeren Anwendungen oder wiederkehrenden Anpassungen.
Gerade in KMU-Projekten mit vielen Formularen und Abfragen lohnt sich das frĂŒhzeitig.
Was lĂ€sst sich ĂŒberhaupt testen?
Mit VBA kannst Du in Access fast alles testen, was ĂŒber Code steuerbar ist:
- Abfragen und deren RĂŒckgabewerte
- Formulare (öffnen, schlieĂen, kontrollieren)
- VBA-Funktionen und Module
- Berichte (bis zu einem gewissen Grad)
- Import-/Export-Routinen
- GeschÀftslogik in Makros und VBA
Grenzen: GUI-Aktionen wie Drag&Drop oder das genaue Layout kannst Du nur begrenzt automatisieren.
Projektstruktur: So baust Du es auf
Ich arbeite gern so:
- Modul: modTestRunner
- Modul: modTestHelpers
- Modul: Test_[Bereich]_xxx
Jede Testreihe ist ein eigenes Modul.
Der modTestRunner
holt sich alle Tests und fĂŒhrt sie durch.
Beispiel: Simpler Test eines SQL-Statements
Public Sub Test_ArtikelAnzahl()
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset("SELECT COUNT(*) AS Anzahl FROM Artikel WHERE Aktiv=True", dbOpenSnapshot)
If rs!Anzahl < 1 Then
Debug.Print "FEHLER: Keine aktiven Artikel gefunden."
Else
Debug.Print "OK: " & rs!Anzahl & " aktive Artikel gefunden."
End If
rs.Close
End Sub
LĂ€uft durch. Gibt im Direktfenster Feedback.
Formulare testen: Ăffnet es? Bleibt es stabil?
Public Sub Test_FormĂffnen()
DoCmd.OpenForm "frmKunden"
If CurrentProject.AllForms("frmKunden").IsLoaded Then
Debug.Print "OK: frmKunden wurde geöffnet."
Else
Debug.Print "FEHLER: frmKunden nicht geöffnet."
End If
DoCmd.Close acForm, "frmKunden"
End Sub
Ziel: Sicherstellen, dass das Formular aufrufbar ist â auch nach Ănderungen.
TestRunner: Alle Tests auf Knopfdruck
Public Sub RunAllTests()
Debug.Print "=== Starte Tests ==="
Test_ArtikelAnzahl
Test_FormĂffnen
' Weitere Testaufrufe hier
Debug.Print "=== Tests beendet ==="
End Sub
Du kannst Dir auch eine Tabelle mit Testdefinitionen anlegen und via CallByName
ausfĂŒhren.
FĂŒr den Anfang reicht ein manuelles Listing.
Erweiterung: Assert-Methoden
Hilft beim sauberen Feedback.
So musst Du nicht ĂŒberall IfâŠThen
schreiben.
Public Sub AssertTrue(ByVal Bedingung As Boolean, ByVal Nachricht As String)
If Not Bedingung Then
Debug.Print "FEHLER: " & Nachricht
Else
Debug.Print "OK: " & Nachricht
End If
End Sub
Beispielnutzung:
AssertTrue(DCount("*", "Artikel", "Aktiv=True") > 0, "Es gibt aktive Artikel")
Tipps aus der Praxis
- Schreib Tests direkt nach dem Fix eines Bugs. Dann passiert er kein zweites Mal.
- Lagere Testdaten in eigene Tabellen oder XML-Dateien aus.
- Nutze
CurrentProject.Path
fĂŒr Datei-Referenzen â fĂŒr portable Lösungen. - FĂŒhre Tests bei jedem Deployment aus. Ja, auch bei kleinen Anpassungen.
Fazit
Access ist kein typisches Testautomatisierungs-Werkzeug.
Aber mit VBA geht mehr, als man denkt.
Ich nutze diese Techniken seit Jahren â besonders bei komplexen KMU-Projekten mit vielen Datenregeln.
Ist der erste Schritt gemacht, willst Du nie wieder zurĂŒck.
Wenn Du magst, schick mir Deinen eigenen Testfall. Dann schauen wir gemeinsam drauf.
Keine Antworten