CITRUS: Automated Unit Testing Tool for Real-world C++ Programs

Citations

WEB OF SCIENCE

2
Citations

SCOPUS

3

초록

C++ is popular in many application domains for its extensibility, flexibility, and high performance. At the same time, however, C++ is infamous for its complex syntax and semantics. Thus, it is challenging to write correct C++ programs and the need to automatically test C++ programs has been high. Unfortunately, due to the high complexity of C++ (e.g., template instantiation, complex STL types, etc.), there are almost no automated unit testing tool publicly available for real-world C++ programs. We have developed a new automated unit testing tool CITRUS that resolves the aforementioned complexity of C++ programs. After analyzing the source code of a target C++ program P, CITRUS automatically generates test driver files for P, each of which consists of various method calls of P. Then, to improve the test coverage of P, it generates more diverse test drivers by mutating the test driver code. Also, CITRUS increases the test coverage of P further by applying libfuzzer to alternate P's state by mutating arguments of the methods. We have demonstrated the testing effectiveness and the efficiency of CITRUS through the experiments on the real-world C++ programs, on which CITRUS achieves up to 95% statement and 79% branch coverage.

키워드

Automated test generationC++ unit testingcode mutationdynamic analysisrandom method sequence generationAutomationC++ (programming language)Software testingTestingSemanticsAutomated test generationsC programsC++ unit testingCode mutationDynamics analysisMethod sequencesRandom method sequence generationRandom methodsSequence generationUnit testing
제목
CITRUS: Automated Unit Testing Tool for Real-world C++ Programs
저자
Herlim, Robert SebastianKim, YunhoKim, Moonzoo
DOI
10.1109/ICST53961.2022.00046
발행일
2022-04
유형
Proceedings Paper
저널명
2022 IEEE 15TH INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION (ICST 2022)
페이지
400 ~ 410