Skip to main content

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

  • UseTester whenune writingpaire tests,encode/decode, reviewingserialize/deserialize, codetoJSON/fromJSON with(propriété serialization/validation/parsing"roundtrip").
patterns,Tester designingun features,parseur or(URL, whenconfig, property-basedprotocole, testingformat wouldcustom). provideTester strongerune coveragefonction thande example-basednormalisation tests.(idempotence : appliquer 2 fois doit donner le même résultat). Tester une fonction pure (mathématique, tri, comparaison). Tester un smart contract Solidity/Vyper (invariants sur les balances, supply, ACL).

Comment l'invoquer

  • Slash command : /property-based-testing (si exposé dans ton CLI)
  • Phrases déclencheurs (texte) : voir"property-based latesting", description"PBT", complète"Hypothesis", ci-dessous"QuickCheck", "invariant"
  • Auto-invocation : Détection automatique sur demandepatterns expliciteencode/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 :

    Roundtrip : 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:

      Serialization pairs: encode/decode, serialize/deserialize, toJSON/fromJSON, pack/unpack Parsers: URL parsing, config parsing, protocol parsing, string-to-structured-data Normalization: normalize, sanitize, clean, canonicalize, format Validators: is_valid, validate, check_* (especially with normalizers) Data structures: Custom collections with add/remove/get operations Mathematical/algorithmic: Pure functions, sorting, ordering, comparators Smart contracts: Solidity/Vyper contracts, token operations, state invariants, access control

      Priority 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