Test Generation for Higher-Order Functions in Dynamic Languages
summary
LambdaTester automatically infers which argument positions expect callbacks, synthesizes callbacks with four strategies (including CB-writes that mutates memory reads), and uses feedback-directed generation plus novel oracles to detect how callbacks are invoked. Implemented for JavaScript, it tests 43 higher-order functions from 13 libraries and finds behavioral differences in 12 libraries, uncovers non-termination and subtle API mismatches missed by prior tools, and yields about 75% coverage on average.
AI-written summary · about
chapters (15)
- 0:00Automatic Test Generation
- 1:33Higher-Order Functions (HOF)
- 2:25Challenges
- 3:30Lambda Tester: Framework For Testing Higher-Order Functions
- 4:19Inference of Callback Positions
- 5:30Background: Feedback-Directed Test Generation
- 7:04Callback Generation Approaches
- 9:17Dynamic Analysis
- 10:43Application: Differential Testing of Polyfills
- 12:26Evaluation
- 13:55Effectiveness
- 14:37Behavioral Differences
- 15:26Example: Q library
- 16:57Coverage
- 17:27Conclusions
related talks
28mLanguage Support for Property-Based Testing
03mTest coverage
13mIntroduction to Property Testing in Javascript
19mAPI-driven Program Synthesis for Testing Static Typing Implementations
15mLLMs and Test Automation: A New Era of Self Healing
18mRandom Testing of a Higher-Order Blockchain Language (Experience Report)
30mProperty-based Testing for Godly Tests
19mCovering All the Bases: Type-Based Verification of Test Input Generators
