← Derniers articles
💻 computer science

Complexity Theory of Randomised Testing

Cet article établit les premiers fondements de la théorie de la complexité pour les tests randomisés en modélisant les générateurs comme des transducteurs de Turing afin de caractériser les limites de la génération d'entrées efficace et à espace borné, révélant des distinctions fondamentales entre la complexité de génération et de décision tout en prouvant que la génération efficace nécessite des schémas de certificats spécifiques et ne peut être dérivée compositionnellement de prédicats logiques généraux.

Auteurs originaux : Pingshi Yu, Chengsong Tan, Nicolas Wu, Alastair Donaldson

Publié 2026-07-14
📖 7 min de lecture🧠 Analyse approfondie

Auteurs originaux : Pingshi Yu, Chengsong Tan, Nicolas Wu, Alastair Donaldson

Article original sous licence CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Ceci est une explication générée par l'IA de l'article ci-dessous. Elle n'a pas été rédigée ni approuvée par les auteurs. Pour une précision technique, consultez l'article original. Lire la clause de non-responsabilité complète

Imaginez que vous êtes un développateur de jeux vidéo essayant de tester un nouveau monde massif. Vous voulez vous assurer que votre jeu ne plante pas, vous avez donc besoin d'un robot capable de recracher des millions de niveaux, personnages et objets aléatoires pour voir si quelque chose casse. Ce robot est appelé un générateur. Pendant des années, les développeurs ont construit ces robots à la main, en les ajustant jusqu'à ce qu'ils fonctionnent suffisamment bien. Mais personne ne connaissait réellement les limites théoriques de ce que ces robots pouvaient réellement faire. Pouvaient-ils générer n'importe quel niveau possible ? Pouvaient-ils le faire assez vite pour être utiles ?

Une équipe de chercheurs de l'Imperial College London et de Kaihong a décidé de passer ces robots au microscope en utilisant la Théorie de la Complexité — les mathématiques qui étudient la difficulté des problèmes à résoudre. Ils n'ont pas seulement regardé le code ; ils ont modélisé les robots comme des « machines de Turing » (les ordinateurs théoriques ultimes) qui « mangent » des bits de données aléatoires et recrachent des niveaux de jeu. Voici ce qu'ils ont découvert.

La liste de « Ce qui peut être fabriqué »

D'abord, ils ont demandé : Quelle est la limite absolue de ce qu'un générateur peut produire ?

Ils ont découvert que si vous donnez à un générateur un temps et une mémoire illimités, il peut produire exactement le même ensemble de choses qu'un ordinateur standard peut reconnaître. Dans le monde des mathématiques, cela s'appelle les langages récursivement énumérables (RE).

  • La bonne nouvelle : Si un ensemble d'entrées (comme « tous les programmes C valides ») peut être reconnu par un ordinateur, un générateur peut théoriquement les produire.
  • La mauvaise nouvelle : Si un ensemble d'entrées est trop bizarre pour être reconnu par un ordinateur (comme « tous les programmes qui ne s'arrêteront jamais de s'exécuter »), aucun générateur ne pourra jamais les produire. Ce n'est pas un bug dans votre code ; c'est une loi fondamentale de l'univers. Vous ne pouvez pas construire un robot qui recrache toutes les boucles infinies possibles, car les mathématiques disent qu'il est impossible de toutes les lister.

Le problème du « Dos d'âne »

Ensuite, ils ont demandé : Et si nous avons besoin que le générateur soit rapide ? Dans le monde réel, on ne peut pas attendre un million d'années pour un cas de test. Il faut des résultats en quelques secondes.

Les chercheurs ont découvert un rebondissement surprenant : Être capable de vérifier si quelque chose est valide n'est pas la même chose que d'être capable de fabriquer quelque chose de valide.

  • L'exemple du solveur SAT : Imaginez un puzzle où vous devez trouver une combinaison spécifique d'interrupteurs pour allumer une lumière. Vérifier si une combinaison fonctionne est difficile (c'est « NP-complet »). Mais les chercheurs ont montré que vous pouvez construire un robot rapide qui génère ces combinaisons fonctionnelles. Cela fonctionne en « plantant un témoin » : le robot choisit secrètement d'abord une combinaison gagnante, puis construit le puzzle autour de celle-ci.
  • Le piège de la collision de hachage : Cependant, ils ont également prouvé que pour certains problèmes, même si vérifier la réponse est facile, fabriquer la réponse peut être impossible à faire rapidement. Ils ont examiné les « collisions de hachage » (trouver deux entrées différentes qui produisent la même empreinte numérique). Vérifier si deux empreintes correspondent est extrêmement rapide. Mais trouver une paire qui correspond ? Si vous pouviez construire un robot rapide pour faire cela, vous briseriez la sécurité de presque tous les cryptages modernes.
    • Le verdict : À moins que le monde de la cryptographie ne soit brisé, il existe des problèmes où la vérification est facile, mais la génération est difficile. Vous ne pouvez pas simplement souhaiter un générateur rapide ; parfois, les mathématiques ne le permettent tout simplement pas.

La contrainte de la « Mémoire » (Fuzzing et Feedback)

De nombreux outils de test modernes, comme les « fuzzers », ne se contentent pas de recracher des données aléatoires ; ils se souviennent de ce qu'ils ont essayé auparavant. Si un test fait planter le programme, le fuzzer s'en souvient et essaie de modifier l'entrée pour le faire planter à nouveau. C'est comme un détective qui apprend de chaque indice.

Les chercheurs ont modélisé cela comme un générateur avec une quantité limitée de mémoire (espace). Ils ont découvert que même avec ce « feedback » et cette boucle de rétroaction, le générateur reste limité.

  • La limite : Si le générateur possède une quantité polynomiale de mémoire (ce qui couvre presque tous les outils pratiques), il ne peut générer que des choses qui appartiennent à une classe appelée PSPACE.
  • Le rappel à la réalité : Cela signifie que même les outils de fuzzing les plus intelligents et les plus gourmands en mémoire ne peuvent pas générer des entrées pour des problèmes qui sont « EXPTIME-complets » (problèmes qui prennent un temps exponentiel à résoudre). Si un problème est trop complexe pour être résolu par une machine PSPACE, aucun amount de feedback ou de mémoire n'aidera un générateur à créer des cas de test pour lui.

Le mythe de la « Composabilité »

Enfin, ils se sont attaqués à un rêve des ingénieurs logiciels : Pouvons-nous construire un « kit Lego » de générateurs ?
Imaginez avoir un outil où vous dites : « Je veux un générateur pour A ET B », ou « Je veux un générateur pour NON A », et l'outil combine automatiquement ces éléments en un nouveau générateur rapide.

L'article délivre un NON catégorique à ce rêve, selon les hypothèses standards.

  • La règle : Vous ne pouvez pas combiner automatiquement des générateurs en utilisant « ET » (conjonction) ou « NON » (négation) et garantir qu'ils seront toujours rapides.
  • Pourquoi ? Si vous pouviez faire cela, vous pourriez résoudre des problèmes qui sont actuellement considérés comme impossibles à résoudre rapidement.
  • L'exception : Vous pouvez le faire pour des types de logique très simples et restreints (comme le « Datalog linéaire » ou les problèmes « NL »), mais dès que vous ajoutez des « ET » ou des « NON » complexes, la magie s'arrête. Si vous voulez combiner des règles complexes, vous devez renoncer aux garanties de vitesse ou accepter que votre générateur puisse simplement « essayer et échouer » (échantillonnage de rejet) jusqu'à ce qu'il ait de la chance.

La vue d'ensemble

L'article conclut que générer des données est un défi distinct, et souvent plus difficile, que de décider si des données sont valides.

  • Ce qui est prouvé : Ils ont prouvé que l'ensemble de toutes les choses générables est exactement l'ensemble des choses récursivement énumérables. Ils ont prouvé que des générateurs rapides pour certains problèmes difficiles existent (comme SAT) mais pas pour d'autres (comme les collisions de hachage, en supposant que la crypto est sûre). Ils ont prouvé que les outils pilotés par le feedback sont limités par PSPACE.
  • Ce qui est écarté : Ils ont écarté la possibilité d'une bibliothèque universelle, rapide et compositionnelle capable de gérer n'importe quelle combinaison de règles logiques. Ils ont écarté l'idée que « facile à vérifier » signifie toujours « facile à générer ».

En bref, si vous construisez un robot de test, vous ne pouvez pas simplement souhaiter qu'il soit rapide et intelligent. Les mathématiques ont tracé une ligne dans le sable : certaines choses sont impossibles à générer, certaines sont impossibles à générer rapidement, et certaines choses ne peuvent pas être mélangées sans briser la vitesse. Mais maintenant, nous savons enfin exactement où se trouvent ces lignes.

Noyé(e) sous les articles dans votre domaine ?

Recevez des digests quotidiens des articles les plus récents correspondant à vos mots-clés de recherche — avec des résumés techniques, dans votre langue.

Essayer Digest →