Robustness Testing of Intermediate Verifiers

05/08/2018
by   Yu-Ting Chen, et al.
0

Program verifiers are not exempt from the bugs that affect nearly 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 "mugie", 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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
08/25/2018

Translating C programs to MSVL programs

C language is one of the most popular languages in system programming an...
research
06/07/2023

HornFuzz: Fuzzing CHC solvers

Many advanced program analysis and verification methods are based on sol...
research
08/02/2020

Concolic Testing in CLP

Concolic testing is a popular software verification technique based on a...
research
05/18/2017

Verifying Programs via Intermediate Interpretation

We explore an approach to verification of programs via program transform...
research
08/25/2018

Translating Xd-C programs to MSVL programs

C language is one of the most popular languages for software systems. In...
research
12/12/2018

Differentially Testing Soundness and Precision of Program Analyzers

In the last decades, numerous program analyzers have been developed both...
research
06/13/2018

When Regression Verification Meets CEGAR

Software systems evolve throughout their life cycles. Many revisions are...

Please sign up or login with your details

Forgot password? Click here to reset