Testautomatisierung: Wie kann ich Access-Datenbanken automatisiert testen?

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.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert