상세 보기
CITRUS: Automated Unit Testing Tool for Real-world C++ Programs
- Herlim, Robert Sebastian;
- Kim, Yunho;
- Kim, Moonzoo
WEB OF SCIENCE
2SCOPUS
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.
키워드
- 제목
- CITRUS: Automated Unit Testing Tool for Real-world C++ Programs
- 저자
- Herlim, Robert Sebastian; Kim, Yunho; Kim, Moonzoo
- 발행일
- 2022-04
- 유형
- Proceedings Paper
- 저널명
- 2022 IEEE 15TH INTERNATIONAL CONFERENCE ON SOFTWARE TESTING, VERIFICATION AND VALIDATION (ICST 2022)
- 페이지
- 400 ~ 410