Robustness Testing of Intermediate Verifiers
Paper in proceeding, 2018

Program verifiers are not exempt from the bugs that affectnearly every piece of software. In addition, they often exhibit brittle behavior: their performance changes considerably with details of how the input program is expressed—details that should be irrelevant, such as the order of independent declarations. Such a lack of robustness frustrates users who have to spend considerable time figuring out a tool’s idiosyncrasies before they can use it effectively. This paper introduces a technique to detect lack of robustness of program verifiers; the technique is lightweight and fully automated, as it is based on testing methods (such as mutation testing and metamorphic testing). The key idea is to generate many simple variants of a program that initially passes verification. All variants are, by construction, equivalent to the original program; thus, any variant that fails verification indicates lack of robustness in the verifier. We implemented our technique in a tool called μ gie, which operates on programs written in the popular Boogie language for verification—used as intermediate representation in numerous program verifiers. Experiments targeting 135 Boogie programs indicate that brittle behavior occurs fairly frequently (16 programs) and is not hard to trigger. Based on these results, the paper discusses the main sources of brittle behavior and suggests means of improving robustness.

Testing

Software testing

Automation

Program debugging

Author

Yu-Ting Chen

Chalmers, Computer Science and Engineering (Chalmers), Formal methods

Carlo A Furia

Chalmers, Computer Science and Engineering (Chalmers), Formal methods

Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)

03029743 (ISSN) 16113349 (eISSN)

Vol. 11138 LNCS 91-108
978-303001089-8 (ISBN)

16th International Symposium on Automated Technology for Verification and Analysis, ATVA 2018
Los Angeles, USA,

Subject Categories

Computer Engineering

Computer Science

Computer Systems

DOI

10.1007/978-3-030-01090-4_6

More information

Latest update

5/7/2019 9