Tests schreiben und Code mit KI sichern

KI-gestütztes Programmieren für Entwickler

Francesca Donadoni

AI Curriculum Manager, DataCamp

Testgetriebenes Prompting

☺ Normales Prompting

Schreibe eine Python-Funktion, um E-Mail-Adressen zu parsen.

🤓 Testgetriebenes Prompting

Schreibe eine Python-Funktion, um E-Mail-Adressen zu parsen. Sie sollte die folgenden Tests bestehen:

  • Akzeptiert eine gültige Adresse wie "[email protected]".
  • Lehnt ungültige Eingaben wie "user@@domain" ab.
  • Löst einen ValueError bei leerer Eingabe aus.
KI-gestütztes Programmieren für Entwickler

Testgetriebenes Prompting

  • Benutzeraufforderung: Erstelle Unit-Tests in Python für eine Funktion, die vom Benutzer übermittelte Formulardaten verarbeitet und in eine SQL-Datenbank einfügt.

  • Modellantwort:

Hier ist ein einsatzbereites pytest-Suite, das Validierung, Normalisierung, SQL-Injection-Sicherheit und Transaktionsverhalten für eine Funktion abdeckt, die Formulardaten verarbeitet und einen Datensatz in eine SQL-Datenbank einfügt.

[...]
# ---------- Test-DB-Fixtures ----------

@pytest.fixture()
def conn():
    """In-Memory SQLite-DB mit einer Benutzertabelle."""
    c = sqlite3.connect(":memory:") [...]
KI-gestütztes Programmieren für Entwickler

Testgetriebenes Prompting

  • Benutzeraufforderung: Erstelle Python-Unit-Tests mit pytest für die folgende Funktion. Füge Fälle für leere Eingaben, SQL-Schlüsselwörter in der Eingabe und Sonderzeichen hinzu. Gehe von einer Mock-Datenbankverbindung aus. <INSERT FUNCTION>

  • Modellantwort:

Hier ist ein eigenständiges pytest-Testmodul, das Mocks verwendet (keine echte DB) und leere Eingaben, SQL-Schlüsselwörter und Sonderzeichen abdeckt. Es überprüft auch das Commit/Close-Verhalten und dass Ausnahmen abgefangen werden.

[...]
@pytest.fixture
def mock_sqlite_connect(monkeypatch):
    """
    Patch sqlite3.connect, um eine MagicMock-Verbindung + Cursor zurückzugeben.
[...]
KI-gestütztes Programmieren für Entwickler

Prompting für Sicherheit

☺ Normales Prompting

$$

Überprüfe die folgende Python-Funktion auf potenzielle Schwachstellen und schlage sicherere Alternativen vor, falls welche gefunden werden.

🤓 Testgetriebenes Prompting

$$

Überprüfe diesen Code auf gängige Web-Sicherheitsprobleme, einschließlich SQL-Injection, XSS und Eingabevalidierungsfehler.

KI-gestütztes Programmieren für Entwickler

OWASP Top 10

owasp_top_10.png

KI-gestütztes Programmieren für Entwickler

OWASP Top 10

  • Benutzeraufforderung: Prüfe die folgende Funktion auf OWASP Top 10 Schwachstellen.
def login(username, password):
   query = f"SELECT * FROM users WHERE username = '{username}' \
           AND password = '{password}'"
   result = db.execute(query)
   return result.fetchone()
  • Modellantwort:

Hier ist eine gezielte OWASP Top 10 Prüfung deiner Login-Funktion, plus eine sicherere Neufassung.

  1. A03: Injection. Direkte String-Interpolation in SQL macht es anfällig für SQL-Injection. Beispiel-Payloads:
    • username = "admin' --" → umgeht die Passwortprüfung. [...]
KI-gestütztes Programmieren für Entwickler

Lass uns üben!

KI-gestütztes Programmieren für Entwickler

Preparing Video For Download...