Fixtures de test synthétiques

VérifiéSûr

Génère N fixtures de test synthétiques selon un schéma défini, avec mode cas limites optionnel.

Spar Skills Guide Bot
TestingIntermédiaire
0024/07/2026
Claude CodeCursorWindsurfCopilotCodex
#test-fixtures#synthetic-data#schema-based#edge-cases

Recommandé pour

Notre avis

Génère N fixtures de test synthétiques correspondant à un schéma défini par l'utilisateur, avec un appel Jimmy par fixture, et un mode facultatif de cas limites pour des valeurs adverses.

Points forts

  • Génère rapidement des données de test structurées
  • Prend en charge plusieurs types de champs (email, URL, date, etc.)
  • Permet la génération de cas limites pour des tests adverses
  • Indépendance de chaque fixture limitant l'impact des échecs

Limites

  • Non adapté aux graphes d'objets profondément imbriqués
  • Ne peut pas garantir les contraintes de clés étrangères
  • Taux d'échec de parsing de 5 à 15 % pour les schémas complexes
Quand l'utiliser

Utilisez-le lorsque vous avez besoin de nombreuses fixtures conformes à un schéma pour des tests unitaires, l'amorçage de base de données ou les tests de contrat API.

Quand l'éviter

Évitez-le lorsque vous avez besoin d'un contrôle manuel précis des valeurs, de schémas imbriqués complexes ou de données relationnelles avec contraintes de cohérence.

Analyse de sécurité

Sûr
Score qualité85/100

The skill is a documentation for generating test fixtures using an external LLM service. It does not instruct destructive actions, exfiltration, or execution of arbitrary code. It only describes a process for generating structured data, which is innocuous.

Aucun point d'attention détecté

Exemples

Basic user fixtures
Generate 5 synthetic User fixtures with schema: { "username": "string", "age": "int", "active": "bool" }.
Edge-case product fixtures
Generate 10 Product fixtures with edge case mode enabled. Schema: { "name": "string", "price": "float", "quantity": "int" }.
Email and date fixtures
Please generate 3 synthetic fixtures with schema: { "email": "email", "registered_at": "date", "is_verified": "bool" }.

jimmy-testdata

Generate N synthetic test fixtures matching a user-defined schema — one Jimmy call per fixture, with optional edge-case mode for boundary and adversarial values.

When to use this skill

Use jimmy-testdata when you need structured test data that conforms to a schema and want to generate many fixtures quickly. Good for:

  • Unit test setup — "Give me 10 User objects with valid field values for my test suite"
  • Database seeding — "Generate 20 Product records for a development database"
  • Edge-case coverage — "Generate adversarial User inputs: empty names, max-int ages, invalid emails"
  • API contract testing — "Generate 15 request payloads matching my request schema"

Not suited for: generating large nested object graphs (keep schemas shallow — 5-10 fields), generating exact values you need to control manually, or generating relational data with foreign-key consistency constraints.

Note on reliability: Llama 3.1 8B (Jimmy) can produce invalid JSON, especially for complex schemas. jimmy-testdata requests one fixture per call (not batched) to minimize blast radius — a single bad call loses one fixture, not all N. Expect a ~5-15% parse failure rate on complex schemas; re-run the skill or accept partial results.

How parallelism works here

All N fixtures are generated in one --parallel call. Each array item contains one fixture prompt — Jimmy generates one JSON object per item. Parse failures produce error items; the skill never retries failed fixtures. See jimmy-testdata.md for full details.

Parameters

| Parameter | Required | Description | |-----------|----------|-------------| | schema | yes | Object mapping field names to types: { "field_name": "type" }. Supported types: string, int, float, bool, email, url, date, uuid. | | n | yes | Number of fixtures to generate (integer >= 1; practical max ~20). Each fixture is one Jimmy call. | | edge_case | no | Boolean, default false. When true, prompts Jimmy to generate boundary/adversarial values for each field based on its type (e.g., empty strings, max integers, invalid emails). | | max_concurrent | no | Maximum simultaneous HTTP requests. Default: 10. |

Output

JSON object with fixtures array and summary. Each fixture item has an index field. Successful items have fixture (the parsed JSON object). Failed items have fixture: null, error, error_type, and raw (Jimmy's raw response for debugging). When edge_case is true, the same output shape is returned but fixture values contain adversarial boundary values.

{
  "fixtures": [
    { "index": 0, "fixture": { "username": "alice", "age": 32, "active": true } },
    { "index": 1, "fixture": { "username": "bob", "age": 19, "active": false } },
    { "index": 2, "fixture": null, "error": "invalid JSON", "error_type": "parse", "raw": "Sure! Here is your object: {\"username\": \"carol\",..." }
  ],
  "summary": { "total": 3, "succeeded": 2, "failed": 1 }
}

Per-item parse failures set fixture: null, error, and error_type: "parse" without affecting other items. fixtures always has exactly N items.

Note: No automatic retry on parse failure. Re-invoke the skill with a lower n if partial results are insufficient.

Skills similaires