Tech 정적코드분석/코딩표준

개발자들이 ‘유닛테스트’를 싫어하는 5가지 이유

유닛테스트 싫어하는 이유

개발자들이 ‘유닛테스트’를 싫어하는 이유라고 제목은 달았지만, 정확한 질문은 ‘What bothers you about Unit Testing?’ – ‘유닛테스팅시 어떤점이 가장 당신을 괴롭히나요??’ 라는 질문입니다.

‘유닛테스트’는 개발 시 반드시 해야하지만 실상 테스트 작성시에 상당히 괴로운 경우가 많죠. LinkedIn에서 ‘What bothers you about Unit Testing?’이란 질문으로 투표를 했었습니다. 참가인원은 적어서(66명) 그다지 큰 의미를 부여하지 못하지만 나름 실무에서 활동하고 있는 개발자가 많은 LinkedIn이기에 나름 생생한 정보라 생각되서 포스팅해봅니다.

유닛테스트 싫어하는 이유
개발자들이 ‘유닛테스트’를 싫어하는 이유

유닛테스트 시 가장 어려운점 5가지

제일 큰 이유는 “Can’t keep up with the evolution of code” , 코드는 계속해서 변경하고 발전하는데 유닛테스트를 그 코드에 맞춰서 따라가기가 힘들다는게 그 첫 번째 이유죠.

두 번째 이유는 개발하다보면 저 역시 자주 겪는 일입니다. 어떤 유닛(메소드, 함수)을 테스팅하기 위해서는 어떤 유닛이 필요로 하는 사전 조건 및 데이터가 있습니다. 유닛테스트는 그 실행 순서에 구애받지 않고 그 유닛 테스팅 자체만으로 구동이 되야되기 때문에(이것이 원칙이긴 합니다), 구동에 필요한 사전 데이터를 설정하기가 상당히 곤란할 때가 많습니다. 예를 들어 다른 유닛이 실행된 후에 생성된 데이터를 가지고 테스팅을 해야하는데 데이터가 많고, 크고, 다양할 경우 정말 WTF울고 싶을 정도죠.

세 번째 이유는 교육적인 이유입니다. 좀 더 많은 좋은 예제가 필요하다는 답변이 의외로 많았습니다.

네 번째 이유는 False Positive를 살펴보는 일입니다. False Positive 란 유닛테스트는 실패한걸로 나오지만 실제로 기능이 동작하는 경우입니다. 이 경우 작성한 유닛테스트와 실제 코드를 일일이 살펴보면서 무엇이 잘못되었는지를 찾아야하기 때문에 힘듭니다.

다섯번째 이유는 하나의 유닛, 즉 한 메소드나 함수를 고치면 다른 곳에서 문제가 생기기 때문입니다.

아래는 응답한 사람의 나이, 성별, 직급입니다. 외국도 개발자는 남자가 많군요.(웃음)

설문에 응답한 개발자 구성
설문에 응답한 개발자 구성

LinkedIn 계정이 있으시면 여기서 설문 결과를 확인하실 수 있습니다.

Leave a Reply

Your email address will not be published. Required fields are marked *