Poor men's Code Coverage

Google
Google "Testing on the Toilet" by niallkennedy 저작자 표시비영리

C++ 용으로는 쓸만한 '공짜' 코드 커버리지 도구를 찾기 힘들더군요. 단위 테스트 적용 시나 기타 기능 테스트 등에서도 코드 커버리지를 점검하는 것은 상당히 중요한 부분입니다. 그러던 중 AI쪽 일을 하는 동료 한명이 좋은 아이디어를 제시했습니다.

일명 intrusive code coverage 되겠습니다. Intrusive profiling과 유사한 방식이라 생각하시면 됩니다. 프로파일링 매크로를 매 함수나 블록 도입부에 삽입하여 C++ RAII를 통해 그 부분이 프로파일링 되도록 하는 방식 말입니다. 마찬가지 개념으로 테스트 되어야 하는 주요 코드 지점마다 점검 지점을 나타내는 함수를 삽입하여 그 지점까지의 도달 여부를 점검토록 하는 거죠. 다음의 CC_Check()가 그 예가 되겠습니다.



실제 커버리지 확인을 위해서는 프로그램을 돌린 후 로그 파일로 남기도록 할 수도 있고, 아니면 런타임에 막대그래프 형식으로 코드 커버리지 상황을 실시간 확인할 수 있도록 만드는 것도 가능하겠죠.

자동 테스트 시에도 유용하고 QA 등에 의한 수동 테스트 시에도 유용하다 하겠습니다. 범용의 코드 커버리지 도구는 저수준에서 검사를 하기에 일종의 false-positive가 있거나 실제 테스트가 필요한 부분의 파악에 불편함이 있을 수 있는데, 이 방식은 실제 테스트되어야 할 핵심 부분을 수동 지정해줄 수 있으니 나름의 장점이 있습니다. ...라고는 하지만 역시 가난한 자를 위한 코드 커버리지 도구라 불러야할듯. ㅎㅎ


크리에이티브 커먼즈 라이선스
Creative Commons License
Trackback 0 Comment 2

top