Agentic Property-Based Testing: Finding Bugs Across the Python Ecosystem
By: Muhammad Maaz , Liam DeVoe , Zac Hatfield-Dodds and more
Potential Business Impact:
Finds bugs in computer programs automatically.
Property-based testing (PBT) is a lightweight formal method, typically implemented as a randomized testing framework. Users specify the input domain for their test using combinators supplied by the PBT framework, and the expected properties or invariants as a unit-test function. The framework then searches for a counterexample, e.g. by generating inputs and calling the test function. In this work, we demonstrate an LLM-based agent which analyzes Python modules, infers function-specific and cross-function properties from code and documentation, synthesizes and executes PBTs, reflects on outputs of these tests to confirm true bugs, and finally outputs actionable bug reports for the developer. We perform an extensive evaluation of our agent across 100 popular Python packages. Of the bug reports generated by the agent, we found after manual review that 56\% were valid bugs and 32\% were valid bugs that we would report to maintainers. We then developed a ranking rubric to surface high-priority valid bugs to developers, and found that of the 21 top-scoring bugs, 86\% were valid and 81\% we would report. The bugs span diverse failure modes from serialization failures to numerical precision errors to flawed cache implementations. We reported 5 bugs, 4 with patches, including to NumPy and cloud computing SDKs, with 3 patches merged successfully. Our results suggest that LLMs with PBT provides a rigorous and scalable method for autonomously testing software. Our code and artifacts are available at: https://github.com/mmaaz-git/agentic-pbt.
Similar Papers
Understanding the Characteristics of LLM-Generated Property-Based Tests in Exploring Edge Cases
Software Engineering
Finds more bugs in computer code.
Tuning Random Generators: Property-Based Testing as Probabilistic Programming
Programming Languages
Finds software bugs much faster.
LLM-based Property-based Test Generation for Guardrailing Cyber-Physical Systems
Software Engineering
Makes smart machines safer by testing them automatically.