property-based-testing
property-based-testing
Catalogue généré le 2026-05-11
En une phrase
Provides guidance forLe property-based testing acrossteste multipledes languagespropriétés anduniverselles smart("encoder contracts.puis décoder doit redonner la valeur d'origine") au lieu de cas spécifiques — la machine génère elle-même des milliers d'exemples pour traquer un contre-exemple.
Quand l'utiliser
UseTesterwhenunewritingpairetests,encode/decode,reviewingserialize/deserialize,codetoJSON/fromJSONwith(propriétéserialization/validation/parsing"roundtrip").
Comment l'invoquer
- Slash command :
/property-based-testing(si exposé dans ton CLI) - Phrases déclencheurs (texte) :
voir"property-basedlatesting",description"PBT",complète"Hypothesis",ci-dessous"QuickCheck", "invariant" - Auto-invocation : Détection automatique sur
demandepatternsexpliciteencode/decode, parsers, validators
Description complètedétaillée
ProvidesLe guidancetesting forclassique, c'est : "je liste 5 cas spécifiques (string vide, string longue, caractère bizarre…) et je vérifie chacun à la main". Le problème : tu testes ce à quoi tu penses, donc tu rates les cas auxquels tu ne penses pas. Le property-based testing acrossrenverse multiplel'approche languages: andtu smartdécris contracts.une Usepropriété whenque writing tests, reviewington code withdoit serialization/validation/parsingrespecter patterns,pour designingtoute features,entrée orvalide, whenet property-basedla testingbibliothèque wouldgénère providepour strongertoi coveragedes thancentaines example-basedd'entrées tests.aléatoires (et tordues : valeurs limites, Unicode bizarre, listes vides, négatifs…) pour vérifier la propriété.
Exemples concrets de propriétés :
decode(encode(x)) == x pour tout x.
Idempotence : normalize(normalize(x)) == normalize(x).
Commutativité : add(a, b) == add(b, a).
Invariant : "Après transfert, la somme des balances reste constante" (smart contract).
Quand la lib trouve un contre-exemple qui casse ta propriété, elle fait du "shrinking" : elle simplifie automatiquement l'entrée pour te donner le contre-exemple minimal (par exemple [1, 0] au lieu de [42, 17, 99, 0, -5]). C'est ultra utile pour comprendre le bug. Outils populaires : Hypothesis (Python), QuickCheck (Haskell), fast-check (JS/TS), proptest (Rust), Echidna/Medusa (Solidity). Cette skill couvre les patterns pour tous ces langages.
Pour aller plus loin
Property-Based
Pour Testingles Guideexemples
Useconcrets, thisoptions skillde proactivelyconfiguration during development when you encounteret patterns where PBT provides stronger coverage than example-based tests.
When to Invoke (Automatic Detection)
Invoke this skill when you detect:
encodedecodeserializedeserializetoJSONfromJSONpackunpacknormalizesanitizecleancanonicalizeformatis_validvalidatecheck_*addremovegetPriority by pattern:
| Pattern | Property | Priority |
(extrait —avancés, voir le SKILL.md complet pour la suite)original.
Source
- Plugin :
trailofbits/property-based-testing - Nom interne :
property-based-testing - Fichier :
/home/thymon/.claude/plugins/cache/trailofbits/property-based-testing/1.1.0/skills/property-based-testing/SKILL.md