Unit test [20210919]

Jungsoo kim·2021년 9월 19일
0

wecode

목록 보기
27/30

이번에는 Unit test에 대해서 함께 알아보자.

<목차>
1. Unit test 란?
2. Unit test를 하는 이유
3. Unit test의 일반적인 원칙

1. Unit test 란?

  유닛 테스트는 유닛 테스트란, 내가 작성한 코드의 가장 작은 단위인 함수를 테스트하는 메소드 이다.
즉, 내가 작성한 코드의 함수들을 테스트하기 위한 메소드로, 함수 하나 당 하나의 테스트 메소드를 갖는다고 생각하면 된다.

2. Unit test를 하는 이유

1. 다른 테스트에 비해 비용이 비교적 저렴하다.

테스트할 엔드포인트가 10개라면 이것을 httpie 나 포스트맨으로 테스트하면 최소 수분은 걸릴 것이고 엔드포인트 10개를 테스트하는 유닛테스트를 돌린다면 수초만에 테스트가 끝날 것입니다. 또한, Integration 테스트는 데이터베이스 서버를 돌려야 하고 메모리가 유닛테스트보다 더 많이 사용하게 되므로 비용도 비쌉니다.

  • 참고로 여기서 말하는 다른 테스트는 아래와 같다.

    End-To-End Testing / UI Testing
    Integration Testing

2. 다른 테스트에 비해 속도가 매우 빠르다.

유닛테스트를 활용하면 하루에도 배포를 여러번 할 수 있어 개발 및 배포 속도에 중요한 영향을 주기 때문에 개발할 때 최대한 활용하는게 좋다.

3. 중,장기적으로 유지보수가 편한다.

이전에 통과했던 테스트 집합을 가지고 버그를 찾기 위해서 이전에 테스트 되었던 유닛테스트를 반복하는것을 regression 테스트라고 하는데 유닛테스만 반복하면 되기 때문에 regression 테스트도 반복적으로 수행 할 수 있다.

4. 유닛테스트를 진행한 코드에서는 버그가 거의 없다.

유닛테스트를 잘 짜놓으면 유닛테스트가 되었던 코드에서는 버그가 거의 발견되지 않고 대부분 버그가 발견되는 경우는 유닛테스트가 없어서 발생하는 경우가 많고 만약 사후에 발견된 버그에 대해서도 버그를 수정한 후 유닛테스트를 작성해놓으면 버그를 방지할 수 있습니다.

위와 같은 이런 이유들 때문에 비록 유닛 테스트 메소드를 만드는 것 자체에 많은 노력이 들어감에도 불구하고 유닛테스트를 진행해야 한다고 한다.

3. Unit test의 일반적인 원칙

마지막으로, 유닛 테스트의 일반적인 원칙에 대해 알아보자.

  1. 테스트 유닛은 각 기능의 가장 작은 단위에 집중하여, 해당 기능이 정확히 동작하는지를 증명할 수 있어야 한다.

  2. 각 테스트 유닛은 반드시 독립적이어야 합니다. 각 테스트는 혼자서도 실행 가능해야하고, 호출되는 순서와 무관하게 잘 동작해야 한다.

  3. 테스트가 빠르게 돌 수 있도록 만들기 위해 노력해야 한다. 테스트 하나가 실행하는데 몇 밀리세컨드 이상의 시간이 걸린다면, 개발 속도가 느려지거나 테스트가 충분히 자주 수행할 수 없기 때문이다.

  4. 지금 사용하고 있는 툴이 개별 테스트나 테스트 케이스를 어떻게 수행하는지 알아야 한다. 모듈 안에 들어있는 함수를 개발하고 있다면, 그 함수의 테스트를 자주, 가능하다면 코드를 저장할 때마다 자동으로 돌려야 한다.

  5. 그날의 코딩을 시작하기 전에 항상 풀 테스트 슈트를 돌리는 것이 좋다. 끝난 후에도 마찬가지로 돌려보는 것이 좋다. 왜냐하면 이 작업이 자신이 다른 코드를 망가뜨리지 않았다는 더 큰 자신감을 심어줄 수 있기 때문이다.

  6. 코드를 디버깅할 때 가장 먼저 시작할 일은 버그를 찝어내는 새로운 테스트를 작성하는 것이다. 이런 일이 언제나 가능한 것은 아니지만, 이런 버그 잡이 테스트들이야말로 당신의 프로젝트에서 정말 중요한 코드가 될 수 있다.

  7. 테스트 함수에는 길고 서술적인 이름을 사용해야 한다. 테스트에서의 스타일 안내서는 짧은 이름을 보다 선호하는 다른 일반적인 코드와는 조금 다르다. 테스트 함수는 절대 직접 호출되지 않기 때문인데 테스트 코드에서는 test_square_of_number_2(), test_square_negative_number() 같은 이름을 붙이는 것이 좋다.

  8. 테스트 코드의 또다른 사용 방법은 새로운 개발자들을 위한 안내서로 쓰일 수 있다. 이미 만들어져 있는 코드에서 작업해야할 경우, 관련 테스트 코드를 돌려보고 읽어보는 것이야말로 가장 좋은 시작점일 경우가 많다고 한다. 이렇게 테스트 코드를 돌려보면 어느 지점이 문제인지, 수정하기 어려운 곳은 어디일지, 막다른 골목은 어디일지를 발견할 수 있다.

지금까지 간단하게 Unit test가 무엇인지와 하는 이유 및 일반적인 원칙에 대해서 알아보았다. 다음 글에서는 실제 내가 진행한 Unit test 코드를 공유하며 하는 방식에 대해 실습형식으로 글을 적어보려 한다.

그럼 이만...

profile
어렵지만 꾸준히 차근차근 해 나가자~!

0개의 댓글