Zum Hauptinhalt springen
Connic

Teste deine Agenten,
bevor sie live gehen.

Definiere Tests in YAML unter tests/ und führe sie in der Connic-Runtime mit echten Verbindungen aus. Starte sie bei Bedarf mit connic test oder lass sie automatisch vor dem Deployment laufen.

Testing-Dokumentation lesen

tests/invoice-processor.yaml

4 bestanden1 fehlgeschlagen
  • Rechnungssumme extrahiert312ms
  • amount > 04ms
  • currency in [EUR, USD]6ms
  • Umsatzsteuer korrekt berechnet18ms
  • Anbietername extrahiert11ms
$connic test351 ms gesamt

Nutze das Connic-Testframework direkt in der Runtime

Führe deine Tests dort aus, wo auch deine Agenten laufen. Das Connic-Testframework nutzt die echte Connic-Runtime und prüft Antworten und Tool-Aufrufe anhand deiner YAML-Testfälle.

tests/invoice-processor.yaml
version: "1.0"

defaults:
  runs: 5                       # den Agenten je Case 5-mal aufrufen
  success_threshold: 80         # 4/5 müssen zum Bestehen des Cases erfolgreich sein
  timeout_s: 60                 # gesamte verstrichene Zeit je Aufruf

tests:
  - name: extracts_invoice_total
    payload: '{"message": "extract total", "doc_id": "INV-7821"}'
    expected_result: output.total > 0 and output.currency in ("EUR", "USD")
    expected_tool_calls:
      - invoices.extract: invocations >= 1
    expected_no_tool_calls:
      - notifications.send

tests/invoice-processor.yaml

5 bestanden0 fehlgeschlagen
  • extracts_invoice_total312ms
  • expected_result bestanden (5/5)4ms
  • invoices.extract 5/5-mal aufgerufen6ms
  • notifications.send nicht aufgerufen4ms
  • Erforderliche Erfolgsquote von 80 % erreicht2ms
$connic test328 ms gesamt

Lege fest, wann ein Test bestanden ist

Prüfe mit Python-ähnlichen Ausdrücken, was dein Agent zurückgibt, welche Tools er aufruft und ob Fehler auftreten. Das Connic-Testframework nutzt dafür denselben sicheren Evaluator wie Tool-Bedingungen und Freigaberegeln.

expected_result

Ein Python-ähnlicher Ausdruck prüft output, error und status. Unterstützt werden Zugriffe auf Attribute und Elemente, Vergleiche, boolesche Operatoren und Prüfungen auf enthaltene Werte.

expected_tool_calls

Einfache Tool-Namen verlangen mindestens einen Aufruf. Alternativ sind Mappings mit genau einem Schlüssel wie {tool: invocations >= 5} möglich. Beide Formen lassen sich kombinieren.

expected_no_tool_calls

Tool-Namen, die während des Runs NICHT aufgerufen werden dürfen. Erkennt Fälle, in denen der Agent ein Tool hätte überspringen sollen.

runs + success_threshold

Der Testfall wird N-mal ausgeführt (1–100) und besteht, wenn mindestens der festgelegte Prozentsatz erfolgreich ist. So lassen sich Agenten mit schwankenden Antworten prüfen, ohne dass einzelne Abweichungen die gesamte Suite scheitern lassen.

timeout_s

Maximale verstrichene Zeit je Aufruf in Sekunden (1–3600). Ein Timeout zählt für die Erfolgsquote als fehlgeschlagener Run.

Prüfungen auf Python-Ebene über cleanup()

Dynamische Payload Builder können aus cleanup() False zurückgeben, um den Testfall fehlschlagen zu lassen. Sowohl diese Prüfung als auch die YAML-Prüfungen müssen bestehen. Damit lassen sich Anforderungen prüfen, die über die unterstützten Testausdrücke hinausgehen.

Für LLM-basierte Qualitätsbewertungen produktiver Runs werden Judges separat im Dashboard konfiguriert.

Starte Tests per CLI und prüfe neue Deployments automatisch

Prüfe Änderungen während der Entwicklung und nutze dieselben Tests in deiner CI-Pipeline. Connic prüft neue Deployments vor der Freigabe, damit fehlgeschlagene Tests den Release stoppen.

.github/workflows/agent-tests.yml
name: Agent Tests

on:
  pull_request:
    paths:
      - "agents/**"
      - "tools/**"
      - "tests/**"

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: pip install connic
      - run: connic test --env ${{ secrets.CONNIC_CI_ENV_ID }} --json
        env:
          CONNIC_API_KEY: ${{ secrets.CONNIC_API_KEY }}

Vergleiche, was das Connic-Testframework für dich übernimmt

Sieh, welche Funktionen für deine Agententests bereits enthalten sind und was du bei anderen Testansätzen selbst ergänzen musst.

Vergleiche, was das Connic-Testframework für dich übernimmt
FunktionConnicSpreadsheet evalLangSmith evalDIY pytest
Mit dem Agent-Projekt versioniertEnthaltenNicht enthaltenTeilweiseEnthalten
Läuft in CIEnthaltenNicht enthaltenTeilweiseEnthalten
Expression DSL für Output / Status / ErrorEnthaltenNicht enthaltenTeilweiseEnthalten
Prüfen, welche Tools aufgerufen oder übersprungen wurdenEnthaltenNicht enthaltenTeilweiseTeilweise
Wiederholungen je Testfall und erforderliche Erfolgsquote für schwankende ModellantwortenEnthaltenNicht enthaltenTeilweiseTeilweise
Dynamische Testdaten aus Python mit anschließender BereinigungEnthaltenNicht enthaltenNicht enthaltenTeilweise
Dieselbe Runtime, echtes Environment, echte VerbindungenEnthaltenNicht enthaltenTeilweiseNicht enthalten
Automatisches Deploy Gate ohne CI-KonfigurationEnthaltenNicht enthaltenNicht enthaltenNicht enthalten

Häufig gestellte Fragen

Jeder Testfall legt runs und success_threshold fest. runs bestimmt, wie oft der Agent aufgerufen wird (1–100). success_threshold gibt den Prozentsatz erfolgreicher Runs an, der zum Bestehen des Testfalls erforderlich ist. Bei runs: 5 und success_threshold: 80 müssen also 4 von 5 Aufrufen bestehen.

Fixtures liegen unter tests/files/ und werden in der files:-Liste des Cases nur über den Dateinamen referenziert. Der Runner liest jede Datei, codiert sie als Base64 und liefert einen multimodalen Payload der Form {message, files: [{name, mime_type, data}]}. Das ist dasselbe Übertragungsformat, das Webhook Multipart Uploads erzeugen.

Dafür kann ein dynamischer Payload Builder verwendet werden. Ein Python-Modul unter tests/builders/ exportiert build() und optional cleanup(); das Feld builder: verweist im Testfall darauf. Der Runner ruft diese Funktionen für jede Ausführung einmal auf. cleanup() läuft auch bei Timeout oder Absturz, damit externe Testdaten zuverlässig entfernt werden.

Tests laufen in einem eigens gestarteten Test-Container gegen ein echtes Connic-Environment und nutzen denselben Codepfad wie im Produktivbetrieb. Standardmäßig verwenden sie das Environment des Deployments. Mit test_environment_id lässt sich ein separates Test-Environment mit Testzugangsdaten und ausschließlich für Staging vorgesehenen Verbindungen festlegen.

Nein. Sobald tests/ existiert, ist das Deploy Gate automatisch aktiv: Jedes connic deploy und jedes Git Auto Deployment führt die Suite aus, bevor das neue Image ausgeliefert wird. Ein fehlgeschlagener Case bricht das Deployment ab. Für schnelleres Feedback vor dem Push kann connic test weiterhin lokal oder in CI laufen.

connic deploy --skip-tests kann die Tests ausschließlich bei einem CLI-Deployment überspringen, etwa um einen Hotfix zu veröffentlichen, während ein unzuverlässiger Test untersucht wird. Automatische Git-Deployments bieten diese Option nicht.