{
  "$type": "site.standard.document",
  "content": {
    "$type": "pub.leaflet.content",
    "pages": [
      {
        "$type": "pub.leaflet.pages.linearDocument",
        "blocks": [
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [
                {
                  "features": [
                    {
                      "$type": "pub.leaflet.richtext.facet#link",
                      "uri": "https://www.alpescraft.fr"
                    }
                  ],
                  "index": {
                    "byteEnd": 59,
                    "byteStart": 48
                  }
                }
              ],
              "plaintext": "J'ai eu la chance de participer cette année à Alpes Craft en tant qu'orateur. Voici quelques notes prises au grés des sessions auxquelles j'ai assisté ou que j'ai animé."
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.alpescraft.fr/session/?talk=voieducode"
                          }
                        ],
                        "index": {
                          "byteEnd": 14,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "Emmanuel Gaillot a donné une conférence d'ouverture de grande qualité et d'une grande pertinence, une réponse salutaire d'inspiration — oserai-je le dire — spinoziste aux injonctions à la performance et à la réification de notre époque ;"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.alpescraft.fr/session/?talk=gitresethard"
                          }
                        ],
                        "index": {
                          "byteEnd": 11,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "Adeline Morel a partagé ses techniques pour lutter contre les pièges posés par nos biais cognitifs qui nous font perdre notre lucidité face au code ;"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "J'ai eu l'honneur de faciliter une session au format \"Office hour\" sur le sujet des techniques de test alternatifs, qui, grâce aux participants, a pris une toute autre direction que celle que j'avais envisagée. J'en parle plus en détail un peu plus loin."
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.alpescraft.fr/session/?talk=49"
                          }
                        ],
                        "index": {
                          "byteEnd": 94,
                          "byteStart": 73
                        }
                      }
                    ],
                    "plaintext": "J'ai par ailleurs eu le plaisir de présenter une conférence intitulée 7 langages en 7 minutes déjà expérimentée à la nuit des meetups de Nantes, un talk un peu fourre-tout, trop ambitieux et compliqué qui tente de tisser ensemble l'exploration de différents langages de programmation, l'apprentissage et la compréhension du fonctionnement des LLMs modernes et plus particulièrement de la différentiation automatique, et l'examen d'un usage critique de ces mêmes LLMs dans ce processus. J'espère avoir donné envie à quelques personnes d'explorer de nouveaux langages comme Forth, Haskell, Idris, OCaml ou Common Lisp !"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.alpescraft.fr/session/?talk=coderespublica"
                          }
                        ],
                        "index": {
                          "byteEnd": 22,
                          "byteStart": 0
                        }
                      }
                    ],
                    "plaintext": "Guillaume Saint-Étienne a brossé un panorama de l'histoire de \"l'informatique\" et du code sous l'angle du pouvoir et de la loi, des premiers automates et automatismes tels que les machines Jacquard jusqu'à l'IA. Une fresque ambitieuse et un poil décousue qui mériterait une discussion plus approfondie et plus longue !"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.alpescraft.fr/session/?talk=ohtdd"
                          }
                        ],
                        "index": {
                          "byteEnd": 20,
                          "byteStart": 6
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 207,
                          "byteStart": 178
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://en.wikipedia.org/wiki/Transformation_Priority_Premise"
                          }
                        ],
                        "index": {
                          "byteEnd": 207,
                          "byteStart": 176
                        }
                      }
                    ],
                    "plaintext": "Enfin Jonathan Laurent a animé une \"office hour\" consacrée au TDD et notamment à sa pratique propre, fondée sur une application stricte de la boucle Red-Green-Refactor et du Transformation Priority Premise. Des discussions intéressantes, mais il a manqué de temps et de pratique concrète sur du code \"de production\" pour que le débat puisse vraiment s'installer et les bénéfices de la proposition devenir plus claire. Même si je suis convaincu de l'importance des \"baby steps\" et bien évidemment du TDD proprement dit, le diable est dans les détails et les questions de l'articulation de cette pratique avec les contraintes du système développé, les choix et capacités de l'équipe, l'ensemble du cycle de vie du logiciel mériterait plus de temps."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Pour des raisons personnelles, je n'ai malheureusement pas pu assister à l'Open Space qui se déroulait le 6 juin ce que je regrette car tant de sujets et de questions eussent demandé d'être approfondies dans un cadre plus ouvert !"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.header",
              "facets": [],
              "level": 2,
              "plaintext": "Techniques de tests alternatifs"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "J'ai tout d'abord proposé aux participants d'énumérer des questions ou des problèmes sur le sujet du ou des tests, voici la liste qui en est ressortie :"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 37,
                          "byteStart": 32
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 84,
                          "byteStart": 80
                        }
                      }
                    ],
                    "plaintext": "comment compléter les tests dynamiques qui exécutent le code par des tests statiques, des outils d'analyse ou de modélisation du code permettant d'extraire de la l'information et d'identifier des problèmes potentiels avant même d'exécuter le code,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 158,
                          "byteStart": 157
                        }
                      }
                    ],
                    "plaintext": "comment articuler le TDD et la couverture de code, et dans le même esprit comment utiliser la couverture de code pour reconstruire des tests sur du code legacy ;"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 64,
                          "byteStart": 57
                        }
                      }
                    ],
                    "plaintext": "comment articuler le test entendu comme processus de vérification du logiciel par rapport à une \"spécification\" ou un modèle, et le test comme processus de recherche de problèmes, le premier étant la vision \"développeurs\" quand le second correspond plus à la vision \"testeur\","
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "vaut-il mieux tester les couches (ou composants) ou leur composition, et comment intégrer les deux approches,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "comment éviter que les tests ne deviennent un frein au changement,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "comment écrire des tests plus expressifs,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "comment raccourcir la boucle de feedback des tests,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "et enfin, comment éviter de tester autre chose que du code de \"production\"."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Après un vote rapide à main levée, nous avons passé le reste de la session à creuser un peu plus la question 3, c'est-à-dire identifier des pistes, techniques, outils permettant de détecter des défauts, plutôt que de se focaliser sur la vérification:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "il y a eu consensus sur l'importance d'intégrer très tôt dans les discussions sur le développement toutes les parties prenantes et notamment les testeurs/QA, de multiplier les points de vue avant même que la moindre ligne de code n'ait été écrite, pour lever des ambiguïtés ou des angles morts des solutions envisagées,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 40,
                          "byteStart": 33
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://agilealliance.org/glossary/three-amigos/"
                          }
                        ],
                        "index": {
                          "byteEnd": 40,
                          "byteStart": 31
                        }
                      }
                    ],
                    "plaintext": "la technique \"bien connue\" des tres amigos propose un cadre pour appliquer ce principe,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "on a souligné l'importance de valoriser cette compétence spécifique à trouver des problèmes, à se mettre à la place de l'utilisateur et ne pas adopter uniquement un point de vue de développeur,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "ce qui implique d'identifier et détecter cette compétence lors du recrutement,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [],
                    "plaintext": "de toute évidence mettre le logiciel face aux utilisateurs est un bon moyen d'identifier des problèmes ce qui suppose de les impliquer en amont du processus de développement"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://cucumber.io/blog/bdd/example-mapping-introduction/"
                          }
                        ],
                        "index": {
                          "byteEnd": 31,
                          "byteStart": 20
                        }
                      }
                    ],
                    "plaintext": "la technique de l'Example mapping est un outil léger pour construire avec les utilisateurs et experts métiers un \"modèle\" du logiciel et d'identifier les tests nécessaires,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://medium.com/@YB22/how-zombies-can-make-writing-unit-tests-fun-again-3a98340f1c9b"
                          }
                        ],
                        "index": {
                          "byteEnd": 5,
                          "byteStart": 2
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://en.wikipedia.org/wiki/Equivalence_partitioning"
                          }
                        ],
                        "index": {
                          "byteEnd": 229,
                          "byteStart": 197
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://www.pairwise.org"
                          }
                        ],
                        "index": {
                          "byteEnd": 261,
                          "byteStart": 240
                        }
                      }
                    ],
                    "plaintext": "ZOMBIES est une mnémotechnique d'aide à l'identification des cas à tester, qui peut être utilement complétée par d'autres techniques de définition des cas de tests à couvrir telle que la partition en classes d'équivalences ou le pairwise (n-wise) testing,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://antithesis.com/docs/resources/property_based_testing/"
                          }
                        ],
                        "index": {
                          "byteEnd": 23,
                          "byteStart": 5
                        }
                      }
                    ],
                    "plaintext": "le Property-based testing est une technique relativement méconnue permettant d'améliorer la couverture des tests automatisés,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://antithesishq.github.io/bombadil/"
                          }
                        ],
                        "index": {
                          "byteEnd": 55,
                          "byteStart": 51
                        }
                      },
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#italic"
                          }
                        ],
                        "index": {
                          "byteEnd": 104,
                          "byteStart": 86
                        }
                      }
                    ],
                    "plaintext": "enfin j'ai signalé tout le bien que je pense de Bombadil qui permet d'appliquer le property-based testing aux applications web."
                  }
                }
              ]
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.text",
              "facets": [],
              "plaintext": "Nous avons manqué de temps pour explorer d'autres sujets ce qui n'est guère surprenant étant donné l'étendue et la complexité du domaine du test, dans ses deux dimensions de vérification et d'exploration. Pour finir, deux références ont été proposées:"
            }
          },
          {
            "$type": "pub.leaflet.pages.linearDocument#block",
            "block": {
              "$type": "pub.leaflet.blocks.unorderedList",
              "children": [
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://ics.uci.edu/~dfredmil/ics221-FQ03/papers/Wey86.pdf"
                          }
                        ],
                        "index": {
                          "byteEnd": 159,
                          "byteStart": 123
                        }
                      }
                    ],
                    "plaintext": "Elaine J. Weyuker est connue pour avoir formalisé de manière axiomatique \"l'adéquation\" d'une suite de cas tests dans Axiomatizing software test data adequacy,"
                  }
                },
                {
                  "children": [],
                  "content": {
                    "$type": "pub.leaflet.blocks.text",
                    "facets": [
                      {
                        "features": [
                          {
                            "$type": "pub.leaflet.richtext.facet#link",
                            "uri": "https://rapid-software-testing.com/taking-testing-seriously-the-rapid-software-testing-approach/"
                          }
                        ],
                        "index": {
                          "byteEnd": 22,
                          "byteStart": 2
                        }
                      }
                    ],
                    "plaintext": "Taking Testing Seriously est un livre récent sur le test est plus particulièrement le \"Test exploratoire\" et l'approche \"Rapid software testing\" développée par Bach et Bolton."
                  }
                }
              ]
            }
          }
        ]
      }
    ]
  },
  "publishedAt": "2026-06-05T00:00:00Z",
  "site": "at://did:plc:s5wwr2ccjuqricdxiyiuspfv/site.standard.publication/3m7zleg5tyc2b",
  "title": "Alpes Craft 2026"
}