Skip to main content

Trabalho em anais de eventoOpen Access

Memory Management Test-Case Generation of C Programs using Bounded Model Checking

Rocha, H.; BARRETO, R. S.; CORDEIRO, L. C

2015 • 13th International Conference on Software Engineering and Formal Methods • 7 citações

Resumo

Resumo

We describe a novel method to automatically generate and verify memory management test cases for unit tests, which are based on assertions extracted from safety properties typically generated by bounded model checking (BMC) tools. In particular, the proposed method checks for properties related to pointer safety, memory leaks, and invalid deallocation. To investigate our method’s effectiveness, we developed a tool called Map2Check that adopts the ESBMC model checker and the CUnit testing framework. Additionally, Map2Check provides an integration of BMC tools with unit testing frameworks, which helps developers not very familiar with formal methods to verify large C programs. We use Map2Check to perform an empirical evaluation over publicly available benchmarks and compare the results to recognized tools, e.g., Valgrind’s Memcheck, CBMC, LLBMC, CPAChecker, Predator, and ESBMC. Experimental results show that our proposed method detects at least as many memory management defects as existing tools; and it does not report any false positive and negative. We compared Map2Check with tools on the Competition on Software Verification 2014 (SVCOMP), in the MemorySafety category. Map2Check would have the same score than the 1st place and it would win the 2st place when ranking the evaluated tools on memory consumption.

palavras-chave

Palavras-chave

memory managementtest case generationbounded model checkingC programspointer safetymemory leaksunit testingESBMCsoftware defects

Status

Published

links

Trabalho em anais de evento