최근에 회사에서 작은 규모로 2명이서 스터디를 하고 있다. 나는 파이썬을 배우고, 스프링에 대해 궁금한 점을 나에게 물어보면 간략히 조사해서 발표하는 식으로 진행하고 있는데 적정한 테스트 코드 커버리지 범위에 대한 얘기가 나와서 그것에 대해 한번 찾아보다가
재밌는 글
을 발견해서 아래에 적어본다.
Testivus On Test Coverage
어느 이른 아침, 한 프로그래머가 프로그래밍의 달인에게 물었다.
"저는 몇 가지의 유닛 테스트 코드를 작성하려고 합니다. 어느 정도의 코드 커버리지를 목표로 해야 합니까?"
달인이 대답했다.
"커버리지에 대해서는 걱정하지 마시고, 좋은 테스트를 쓰면 되느니라."
그 프로그래머는 웃으면서 인사한 후에 떠났다.
...
그 다음날, 두 번째 프로그래머가 같은 질문을 했다.
달인이 물이 끓는 솥을 가르키면서 말했다.
"솥에 쌀을 얼마나 넣어야 하는가?"
그 프로그래머는 의아해하면서 대답했다.
"제가 그걸 어떻게 압니까? 당신이 얼마나 많은 사람을 먹일 것이며, 그들이 얼마나 배고프며, 다른 음식은 주었는지, 쌀이 얼마나 있는지 등등에 달렸죠."
"바로 그것일세." 거장이 대답했습니다.
두 번째 프로그래머도 웃으면서 인사한 후에 떠났다.
...
하루가 끝날 무렵, 세 번재 프로그래머가 와서 코드 커버리지에 대한 같은 질문을 했다.
"80% 이하로!" 달인 단호한 목소리로 그의 주먹으로 책상을 내리치면서 대답했다.
세번째 프로그래머도 웃으면서 인사한 후에 떠났다.
...
마지막 대답 후에, 제자가 달인에게 다가왔다.
"스승님, 저는 오늘 코드 커버리지에 대한 같은 질문에 다른 3개의 대답을 들었습니다. 왜 그렇게 하셨습니까?"
달인이 그의 의자에서 일어섰다.
"나와 차 한잔 마시면서 이야기를 해보자꾸나."
그들이 컵에 뜨거운 녹차를 채운 후에 거장은 대답하기 시작했다.
"첫 번째 프로그래머는 테스트를 이제 막 새롭게 시작하는 단계였다. 그는 지금 많은 코드를 가지고 있지만, 테스트는 없지. 그는 갈 길이 멀지.
이때 코드 커버리지에 초점을 맞추는 것은 지치게 만들고 쓸모없는 것이지.
그는 몇 가지 테스트를 작성하고 실행하는 것이 더 나을 것이야. 코드 커버리지에 걱정하는 것은 나중 일이지."
"반면에 두 번째 프로그래머는 프로그래밍과 테스팅에 상당한 경험을 가지고 있지. 내가 그녀에게 쌀을 얼마나 솥에 넣어야 하냐고 물어봄으로써
필요한 테스트의 양은 여러 가지 요소에 달려있다는 것을 깨닫게 해주었지. 그리고 그녀는 요소들에 대해 자신의 코드니까 나보다 더 잘 알 것이다.
단순한 하나의 답은 없다. 그녀는 그 사실을 감당하고 다룰만큼 충분히 똑똑했지.
"그렇군요." 젊은 제자가 말했다. "하지만 단순한 하나의 답변이 없다면 세번째 프로그래머에게는 80%이하라고 대답하셨습니까?"
달인은 아주 크게 웃었고 녹차 때문만은 아닌 이유로 배가 위아래로 출렁거렸다.
"세 번째 프로그래머는 하나의 쉬운 답변을 원했지. 단순한 대답은 없음에도 불구하고 말이야... 어쨌든 대답을 따르지 않을 걸세."
어린 제자와 머리가 희끗희끗한 달인은 조용히 사색에 잠겨 차를 마셨다.