test-trust
test-trust
Sagt KI-Codeagenten (Claude Code, Codex, OpenHands, Cursor oder einem lokalen Modell – agentunabhängig über MCP, das Model Context Protocol) nicht nur, welche Tests eine Änderung abdecken, sondern auch, ob diese Tests tatsächlich vertrauenswürdig sind, eine Regression genau dort zu finden.
„CI ist grün“ und „diese Änderung ist sicher“ werden heute von jedem Agenten als dasselbe behandelt. Das sind sie nicht. Ein Test, der eine Funktion abdeckt, ist nicht dasselbe wie ein Test, der tatsächlich fehlschlagen würde, wenn diese Funktion kaputtgeht – zu stark gemockte Tests, Snapshot-Tests, die einfach neu aufzeichnen, was auch immer die neue Ausgabe ist, und Tests ohne Assertions zeigen alle grün, fangen aber nichts.
So funktioniert’s
Mutationstesting (nutzt ausgereifte vorhandene Engines, nicht neu implementiert –
mutmut für Python, StrykerJS für JS/TS, gremlins für Go, cargo-mutants für
Rust): absichtlich kleine Fehler in den geänderten Code einbauen
und prüfen, ob die abdeckenden Tests tatsächlich fehlschlagen. Die
Testauswahl pro Mutant stammt aus den eigenen Coverage-Daten der jeweiligen
Engine und ist hier nicht neu implementiert – mutmut und Stryker (wo ein
unterstützter Runner vorhanden ist: jest/mocha/vitest) wählen nur die
spezifischen Tests aus, die den jeweiligen Mutanten abdecken; gremlins und
cargo-mutants überspringen Mutanten ohne Coverage, führen für jeden
Mutanten mit irgendeiner Coverage jedoch die vollständige relevante Test-Suite
erneut aus – ein gröberer (und bei großen Repos langsamerer), aber
dennoch korrekter Mechanismus.Diff-Scoping (unser Ansatz): bildet die geänderten Zeilen eines
Git-Diffs über den jeweiligen Parser der Sprache auf die umgebende Funktion ab,
sodass sowohl der Mutationslauf als auch der Vertrauenswert auf das
eingegrenzt werden, was sich tatsächlich geändert hat, nicht auf eine ganze Datei/ein ganzes Repo.Fusion (der neue Teil, sonst nirgends gebaut – verifiziert): bündelt
das oben Genannte zu einem Vertrauenswert pro geänderter Funktion,
bereitgestellt als MCP-Tool, das jeder Agent aufrufen kann, bevor er einen
grünen Testlauf als Beleg für Sicherheit behandelt.
Live-Demonstrationen: Siehe examples/weak-test-fixture/ (Python),examples/weak-test-fixture-js/ (JS), examples/weak-test-fixture-go/ (Go),examples/weak-test-fixture-rust/ (Rust),examples/plug-and-play-fixture/ (ganz ohne Konfiguration) sowieexamples/multi-file-fixture-js/ (eine Funktion, die ein Schwestermodul
importiert und belegt, dass Mutation-Scoping die Überdatei-Importe nicht bricht):
eine Funktion, die von einem Test abgedeckt wird, der heute grün ist, aber
einen echten Bug nicht finden würde.
Related MCP server: sumo-qa
Gegen echte Repos validiert, nicht nur gegen Fixtures
Jedes Fixture oben ist eine Spielerei. Bevor diesem Konzept vertraut wurde,
den Tool wurde außerdem ohne Konfiguration gegen echte, externe, unveränderte
Repositories in allen vier Sprachen testiert: psf/requests (Python,
37 echte Funktionen bewertet, z. B. resolve_proxies korrekt mit
Vertrauenswert 0.0 markiert – tatsächlich referenziert kein einziger Test
darauf), kind-of (JS, ~50M wöchentliche Downloads, isArray undisRegexp markiert, obwohl alle 36 Tests bestehen),dustin/go-humanize (Go) und chronotope/humantime (Rust, eine echte
Multi-Modul-Crate – bestätigt, dass Mutation-Scoping auch bei echten
Cross-Module-Cod nicht bricht, nicht nur bei unserem eigenen Fixture). Dieser
Prozess hat mehrere echte Fehler in drei der vier Felder aufgedeckt und behen:
einen Fall, in dem ein fehlgeschlagener Mutationslauf stillschweigend als
falscher 100 %-Vertrauenswert gemeldet wurde, und einen Skalierungsbug, bei dem
eine auf eine Datei beschränkte Anfrage stattdessen stillschweigend ein ganzes
gepackertes Paket mutierte. Rusts Repo-Real-Check deckte keinen neuen Bug auf,
konsistent damit, dass cargo-mutants -f der sauberste, direkt versehenste
Scoping-Mechanismus der vier ist. Den vollständigen Bericht findest du indocs/architecture.md.
Externe Tools, die dieses Tool einbindet (einmal installieren, pro verwendeter Sprache)
Python:
mutmut– wird automatisch als Abhängigkeit dieses Projekts installiert.JS/TS:
@stryker-mutator/core– wird beim ersten Aufruf automatisch übernpxgeholt.Go:
gremlins–go install github.com/go-gremlins/gremlins/cmd/gremlins@latestRust:
cargo-mutants–cargo install cargo-mutants
Ausprobieren
Noch nicht auf PyPI veröffentlicht. Alle Befehle unten setzen
einen lokalen Klon dieses Repos und die Ausführung im darin (uv);
von außerhalb dann uv run --directory <path> ..., wie weiter unten im
Agent-Einbettungsbeispiel. Sobald es veröffentlicht ist, reduziert sich das auf ein einfaches pip install test-trust / ux test-trust, das von überall ausgeführt werden kann – ohne Klon, ohne Pfad zum Merken,
ohne uv run --directory. Dieser einzelne Schritt ist der letzte zwischen
„funktioniert, mit Einrichtung“ und „wirklich leicht zu übernehmen“;
nichts daran, wie sich das Tool verhält, ändert sich, nur sehr man es nutzt.
Benötigt Python 3.11+ und uv. Sprachspezifische
Mutationsengines (siehe oben) werden nur für die Sprachen gebraucht, die du
tatsächlich nutzt – das Python-Beispiel unten braucht nichts über uv sync
hinaus.
uv sync
uv run test-trust check examples/plug-and-play-fixture inventory.pyKeine Setup-Datei, kein manuellerMutationstest-Lauf – dieser eine Befehl erkennt die Sprache automatisch, schreibt automatisch die Konfiguration, führt die TestType automatisch mit einem Schwerpunkt auf der eigenen Testdatei aus und gibt den Vertrauenswert aus.
Für eine andere Datei oder ein andere Repo:
uv run test-trust check <path-to-repo> <source-file> [--changed-file F] [--base-ref REF] [--threshold T]Schwellenwert ändern (Standard 0.5) – was als ausreichend getestet gilt.
Wiederholt erhöht (z. B. 0.8) markiert alles, was unter der nahezu vollständigen Mutationscoverage liegt; nach unten senken, um nur die größten
Abdeckungslücken zu loggen. Derselbe Parameter, drei Oberflächen:
CLI:
--threshold 0.8, wie oben zu sehen.MCP-Tool:
thresholdist einget_test_trust-Argument, z. B.get_test_trust(repo_path=..., source_file=..., threshold=0.8). Den
rufst du nicht selbst auf, sondern der Agent tut es; „setzen“ bedeutet
der, den Agenten dazu zu bringen, das zu tun (im Prompt oder als
permanente Ansage inCLAUDE.md). Ohne Angabe wird0.5verwendet.GitHub Action: der Eingabewert
low-trust-thresholdin deiner Workflow-Datei:
- uses: ./.github/actions/test-trust-pr
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
low-trust-threshold: "0.8"In einen Agenten einbetten
Einmalige Einrichtung, die global statt pro Projekt registriert wird –
weil repo_path bei jedem Aufruf ein Parameter ist und nicht beim Start
feststeht, reicht eine Registrierung, um jedes später geöffnete Projektent,
nicht nur das Projekt, in dem sie stattgefunden hat. Für Claude Code,
sollte ~/.claude.json (Benutzerebene, nicht der .mcp.json des Projekts
eintragen:
{
"mcpServers": {
"test-trust": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/test-trust", "test-trust", "mcp"]
}
}
}Die gleiche command/args-Form funktioniert für Codex, Cursor oder
einen beliebigen anderen MCP-Client – siehe docs/embedding.md für
diese und für was die PyPI-Veröffentlichung (uvx test-trust mcp,
kein lokaler Pfad nötig) ändert.
Danach ist es im Alltag unsichtbar: Der Agent ruft get_test_trust
selbst auf, mitten in der Aufgabe, genauso wie er bereits seine File-Read-
oder Bash-Tools nutzt – self per rufst es nicht direkt.
Oder auf jedem PR ausführen, ohne Agenten nötig
.github/actions/test-trust-pr bewertet jede geänderte, unterstützte Datei
in einem PR und postet (oder aktualisiert bei späteren Pushes) einen Kommentar:
Flaggt jede Funktion, deren bestehende Tests eine Regression dort nicht
wirklich fangen würden. Nützlich für jedes Review-Team, ob jemanden den Agenten
nutzt oder nicht. .github/workflows/test-trust.yml ist das funktionierende
Beispiel, das komplett End-to-End gegen echte Commits in einem echten Repo
verifiziert Durchlaufen-Enderkennung, Bewertung und beide Kommentarvarianten
„Aller klar“ und „Problem markiert“; lediglich der lebende GitHub-APICall
selbst ist ungetestet, da immer ein echter PR dafür nötig ist.
Entwickeln
uv sync
uv run pytest tests/ # this project's own unit test suite
uv run test-trust check <repo> <file> # exercise it against real codetestsenfonds deckt die deterministische Logik ab (Diff-Scoping,
Vertrauenswert-Aggregation, Sprach-Autodetection, Report-Adapter der
Mutations-Engines) mit gebauten Fixtures – schnell, keine externen
Mutationstests erforderlich, und genau diese Suite läuft in der CI
(.github/workflows/ci.yml). Sie ersetzt die reale Repo-Validierung oben
nicht – das war eine manual, einmalige Übung, die während der Entwicklung
erfolgte (echte externe Klons, echte Engines installiert), sodass CI das nicht
bei jedem Push erneut. Dies würde Automatisierung übernehmen; es ist noch nicht fertig.
MIT-lizenziert.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityFmaintenanceMCP server for Codecov that provides tools to get commit coverage totals and prompts to suggest tests to write.1736ISC
- AlicenseAqualityAmaintenanceAn MCP server that brings senior-QA discipline to AI coding assistants, enabling test planning, TDD, mutation testing, and code review.485Apache 2.0
- AlicenseNot gradedqualityDmaintenanceAn MCP server that performs automated code reviews by analyzing git diffs against configurable review standards with custom reviewer personas.2MIT
- AlicenseNot gradedqualityAmaintenanceMCP server for test impact analysis and code intelligence. Maps tests to code and git history to determine impacted tests, risk scores, and ownership for AI coding agents.2MIT
Related MCP Connectors
MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.
Conformance checker for MCP servers. Free, no key, verdicts recomputable and re-measured daily.
A MCP server built for developers enabling Git based project management with project and personal…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rrudy9/test-trust'
If you have feedback or need assistance with the MCP directory API, please join our Discord server