Affiliation:
1. MIT Lab for Computer Science, Cambridge, MA
Abstract
Producing specifications by dynamic (runtime) analysis of program executions is potentially unsound, because the analyzed executions may not fully characterize all possible executions of the program. In practice, how accurate are the results of a dynamic analysis? This paper describes the results of an investigation into this question, determining how much specifications generalized from program runs must be changed in order to be verified by a static checker. Surprisingly, small test suites captured nearly all program behavior required by a specific type of static checking; the static checker guaranteed that the implementations satisfy the generated specifications, and ensured the absence of runtime exceptions. Measured against this verification task, the generated specifications scored over 90% on precision, a measure of soundness, and on recall, a measure of completeness.This is a positive result for testing, because it suggests that dynamic analyses can capture all semantic information of interest for certain applications. The experimental results demonstrate that a specific technique, dynamic invariant detection, is effective at generating consistent, sufficient specifications for use by a static checker. Finally, the research shows that combining static and dynamic analyses over program specifications has benefits for users of each technique, guaranteeing soundness of the dynamic analysis and lessening the annotation burden for users of the static analysis.
Publisher
Association for Computing Machinery (ACM)
Cited by
33 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. AGORA: Automated Generation of Test Oracles for REST APIs;Proceedings of the 32nd ACM SIGSOFT International Symposium on Software Testing and Analysis;2023-07-12
2. Fuzzing class specifications;Proceedings of the 44th International Conference on Software Engineering;2022-05-21
3. An Empirical Validation of Oracle Improvement;IEEE Transactions on Software Engineering;2021-08-01
4. Documentation‐based functional constraint generation for library methods;Software Testing, Verification and Reliability;2021-07-26
5. Optimal Reordering Trace Files for Improving Software Testing Suitcase;Computers, Materials & Continua;2021