LM2Alloy: Investigating LLM-Generated Formal Specifications for Automated Test Derivation in Production Software

· Source: cs.SE updates on arXiv.org · Field: Technology & Digital — Artificial Intelligence & Machine Learning, Software Development & Engineering · Depth: Expert, long

Summary

An exploratory study, LM2Alloy, investigates using Large Language Models (LLMs) to generate Alloy formal specifications from both software requirements documentation and production source code, subsequently deriving executable test cases. The research, utilizing GPT-4o, was evaluated on two open-source Python libraries, Flipper and Cerberus. For Flipper, a feature flag management system, the LLM-generated specifications successfully uncovered a critical bug where the library silently accepted duplicate flag names, directly contradicting its documented uniqueness requirement. A direct LLM baseline, which skipped the Alloy step, achieved 68% branch coverage but failed to detect this bug across three independent runs. This highlights the value of a formal intermediate representation in surfacing constraint-level defects. For Cerberus, a data validation library, the code-derived specification captured an implicit abstraction, leading to two additional tests. Across both libraries, code-based specifications demonstrated lower variance in test generation (mean SD = 2.15) compared to documentation-based ones (mean SD = 5.0).

Key takeaway

For software engineers focused on automated testing and quality assurance, consider integrating LLM-generated formal specifications into your pipeline. By independently generating specifications from both documentation and source code, you can identify critical semantic gaps and constraint violations that traditional coverage-based testing might miss. This dual-source approach, using tools like Alloy, provides a robust mechanism to uncover subtle bugs and ensure your software aligns with its stated requirements, enhancing overall system reliability.

Key insights

LLMs can generate formal specifications from dual sources to derive tests and uncover semantic bugs.

Principles

Method

The LM2Alloy pipeline uses GPT-4o to independently translate documentation and source code into Alloy specifications, then generates pytest suites from these specs for execution against the library.

In practice

Topics

Code references

Best for: AI Engineer, Research Scientist, AI Scientist, Software Engineer, Machine Learning Engineer

Related on AIssential

Open in AIssential →

Editorial summary, takeaway, and curation by AIssential. Original article published by cs.SE updates on arXiv.org.