ChatPaper.aiChatPaper

Gebruik Property-Based Testing om LLM-codegeneratie en -validatie te verbinden.

Use Property-Based Testing to Bridge LLM Code Generation and Validation

June 23, 2025
Auteurs: Lehan He, Zeren Chen, Zhe Zhang, Jing Shao, Xiang Gao, Lu Sheng
cs.AI

Samenvatting

Grote Taalmodellen (LLMs) blinken uit in codegeneratie, maar het waarborgen van functioneel correcte uitvoer, vooral bij complexe programmeertaken, blijft een aanhoudende uitdaging. Hoewel traditionele Test-Driven Development (TDD) een pad biedt voor coderaffinage, wordt de effectiviteit ervan bij LLMs vaak ondermijnd door het gebrek aan hoogwaardige testgevallen of de valkuilen van geautomatiseerde testgeneratie, waaronder bevooroordeelde tests of onnauwkeurige uitvoervoorspellingen die het correctieproces kunnen misleiden. Dit artikel introduceert Property-Generated Solver, een nieuw framework dat Property-Based Testing (PBT) benut om hoogwaardige programmeereigenschappen of invarianten te valideren, in plaats van te vertrouwen op specifieke invoer-uitvoervoorbeelden. Deze eigenschappen zijn vaak eenvoudiger te definiëren en te verifiëren dan het direct voorspellen van uitputtende testorakels, waardoor de "cyclus van zelfbedrog" wordt doorbroken, waarbij tests mogelijk dezelfde gebreken delen als de code die ze moeten valideren. Property-Generated Solver maakt gebruik van twee samenwerkende LLM-gebaseerde agents: een Generator die zich richt op codegeneratie en iteratieve verfijning, en een Tester die de PBT-levenscyclus beheert en semantisch rijke feedback formuleert op basis van eigenschapsschendingen. De resulterende uitgebreide en bruikbare feedback leidt vervolgens de Generator in zijn verfijningsinspanningen. Door PBT te vestigen als de kernvalidatiemotor binnen dit iteratieve, gesloten-lus paradigma, biedt Property-Generated Solver een robuust mechanisme om LLMs te sturen naar correctere en generaliseerbare code. Uitgebreide experimentele resultaten op meerdere codegeneratiebenchmarks tonen aan dat Property-Generated Solver aanzienlijke pass@1-verbeteringen bereikt, met relatieve winsten variërend van 23,1% tot 37,3% ten opzichte van gevestigde TDD-methoden.
English
Large Language Models (LLMs) excel at code generation, but ensuring their outputs to be functionally correct, especially in complex programming tasks, is a persistent challenge. While traditional Test-Driven Development (TDD) offers a path for code refinement, its efficacy with LLMs is often undermined by the scarcity of high-quality test cases or the pitfalls of automated test generation, including biased tests or inaccurate output predictions that can misdirect the correction process. This paper introduces Property-Generated Solver, a novel framework that leverages Property-Based Testing (PBT) to validate high-level program properties or invariants, instead of relying on specific input-output examples. These properties are often simpler to define and verify than directly predicting exhaustive test oracles, breaking the "cycle of self-deception" where tests might share flaws with the code they are meant to validate. Property-Generated Solver employs two collaborative LLM-based agents: a Generator dedicated to code generation and iterative refinement, and a Tester that manages the PBT life-cycle and formulate semantically rich feedback from property violations. The resulting comprehensive and actionable feedback then guides the Generator in its refinement efforts. By establishing PBT as the core validation engine within this iterative, closed-loop paradigm, Property-Generated Solver provides a robust mechanism for steering LLMs towards more correct and generalizable code. Extensive experimental results on multiple code generation benchmarks demonstrate that Property-Generated Solver achieves substantial pass@1 improvements, ranging from 23.1% to 37.3% relative gains over established TDD methods.
PDF101June 26, 2025