Enhancing Symbolic Execution for Coverage-Oriented Testing
S´ ebastien Bardin, Nikolai Kosmatov, Micka¨ el Delahaye
CEA LIST, Software Safety Lab (Paris-Saclay, France)
Bardin et al. CFV 2015 1/ 40
Enhancing Symbolic Execution for Coverage-Oriented Testing S - - PowerPoint PPT Presentation
Enhancing Symbolic Execution for Coverage-Oriented Testing S ebastien Bardin, Nikolai Kosmatov, Micka el Delahaye CEA LIST, Software Safety Lab (Paris-Saclay, France) Bardin et al. CFV 2015 1/ 40 Context : white-box software testing
Bardin et al. CFV 2015 1/ 40
Bardin et al. CFV 2015 2/ 40
Bardin et al. CFV 2015 3/ 40
Bardin et al. CFV 2015 3/ 40
Bardin et al. CFV 2015 3/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 4/ 40
Bardin et al. CFV 2015 5/ 40
Bardin et al. CFV 2015 5/ 40
Bardin et al. CFV 2015 6/ 40
Bardin et al. CFV 2015 6/ 40
Bardin et al. CFV 2015 7/ 40
◮ predicate attached to a specific program instruction
◮ reaches the instruction at loc ◮ satisfies the predicate ϕ
◮ can easily encode a large class of coverage criteria [see after] ◮ in the scope of standard program analysis techniques Bardin et al. CFV 2015 8/ 40
Bardin et al. CFV 2015 9/ 40
Bardin et al. CFV 2015 9/ 40
Bardin et al. CFV 2015 9/ 40
Bardin et al. CFV 2015 9/ 40
Bardin et al. CFV 2015 9/ 40
Bardin et al. CFV 2015 10/ 40
Bardin et al. CFV 2015 11/ 40
◮ add label : e = e′
◮ add label : &lhs = &lhs′ ∧ (lhs = e ∨ lhs′ = e)
◮ add label : cond ⊕ cond′
Bardin et al. CFV 2015 12/ 40
◮ add label : e = e′
◮ add label : &lhs = &lhs′ ∧ (lhs = e ∨ lhs′ = e)
◮ add label : cond ⊕ cond′
Bardin et al. CFV 2015 12/ 40
◮ add label : e = e′
◮ add label : &lhs = &lhs′ ∧ (lhs = e ∨ lhs′ = e)
◮ add label : cond ⊕ cond′
Bardin et al. CFV 2015 12/ 40
Bardin et al. CFV 2015 13/ 40
◮ open-source ◮ sound, industrial strength ◮ among other : VA, WP, specification language
Bardin et al. CFV 2015 13/ 40
Bardin et al. CFV 2015 13/ 40
Bardin et al. CFV 2015 13/ 40
Bardin et al. CFV 2015 14/ 40
Bardin et al. CFV 2015 15/ 40
Bardin et al. CFV 2015 16/ 40
◮ at each label, require to cover
◮ π′ covers up to N labels
Bardin et al. CFV 2015 17/ 40
Bardin et al. CFV 2015 18/ 40
Bardin et al. CFV 2015 19/ 40
Bardin et al. CFV 2015 19/ 40
Bardin et al. CFV 2015 19/ 40
Bardin et al. CFV 2015 20/ 40
Bardin et al. CFV 2015 21/ 40
Bardin et al. CFV 2015 22/ 40
∗ : TO are discarded for overhead computation
Bardin et al. CFV 2015 23/ 40
Bardin et al. CFV 2015 23/ 40
Bardin et al. CFV 2015 23/ 40
Bardin et al. CFV 2015 24/ 40
Bardin et al. CFV 2015 25/ 40
Bardin et al. CFV 2015 26/ 40
◮ compute an invariant of the program ◮ then, analyze all assertions (labels) in one go
◮ perform a dedicated check for each assertion ◮ a single check usually easier, but many of them Bardin et al. CFV 2015 27/ 40
◮ compute an invariant of the program ◮ then, analyze all assertions (labels) in one go
◮ perform a dedicated check for each assertion ◮ a single check usually easier, but many of them
Bardin et al. CFV 2015 27/ 40
Bardin et al. CFV 2015 28/ 40
Bardin et al. CFV 2015 29/ 40
Bardin et al. CFV 2015 29/ 40
Bardin et al. CFV 2015 29/ 40
Bardin et al. CFV 2015 30/ 40
Bardin et al. CFV 2015 30/ 40
Bardin et al. CFV 2015 31/ 40
Bardin et al. CFV 2015 31/ 40
Bardin et al. CFV 2015 31/ 40
Bardin et al. CFV 2015 32/ 40
Bardin et al. CFV 2015 33/ 40
Bardin et al. CFV 2015 34/ 40
Bardin et al. CFV 2015 34/ 40
Bardin et al. CFV 2015 35/ 40
Bardin et al. CFV 2015 35/ 40
Bardin et al. CFV 2015 35/ 40
Bardin et al. CFV 2015 36/ 40
Bardin et al. CFV 2015 37/ 40
Bardin et al. CFV 2015 37/ 40
Bardin et al. CFV 2015 37/ 40
Bardin et al. CFV 2015 38/ 40
Bardin et al. CFV 2015 39/ 40
Bardin et al. CFV 2015 40/ 40