Présentation
La migration de programmes COBOL vers Java nécessite des tests exhaustifs pour garantir une fonctionnalité correcte. Cet effort est souvent compliqué par le manque de données de test et la difficulté de valider tous les cas de figure. Une méthode de test-synthèse agentic, appelée « Locksmith Loop », a été proposée pour résoudre ce problème.
Contexte technique
La méthode Locksmith Loop consiste à préparer deux environnements d'exécution : le code source COBOL et le code cible Java généré sont tous deux instrumentés avec des mocks et exécutés sur du matériel standard. Ensuite, une boucle agentic itérative effectue une recherche de témoins sur les mocks d'entrée pour pénétrer les branches de programme, suivie de mutations préservant la parité. Lorsque les limites de routage sont atteintes, un analyseur identifie un paragraphe verrouillé : une condition qui empêche une exploration plus approfondie.
Fonctionnement de la méthode
La méthode Locksmith Loop a été testée sur trois études de cas COBOL-Java, allant de 430 à 4 114 lignes de code source. Les résultats montrent que Locksmith améliore constamment la couverture au-delà des plateaux de recherche d'entrée, atteignant une couverture quasi complète sur les deux programmes open-source et 91,90 % de couverture de branches sur le programme COBOL de production interne. Le code Java généré correspond au code de référence COBOL sous des vérifications de parité déterministes dans tous les cas de test acceptés.
Implications et limites
Les résultats de cette étude démontrent l'efficacité de la méthode Locksmith Loop pour valider la sortie de codage agentic en utilisant un oracle déterministe. Cependant, il est important de noter que cette méthode nécessite une instrumentation et une exécution du code source et du code cible, ce qui peut nécessiter des ressources importantes. De plus, la méthode Locksmith Loop ne garantit pas une couverture complète, mais améliore significativement la couverture de branches par rapport aux méthodes de recherche d'entrée traditionnelles.