테스트

김준영·2023년 4월 28일
1

Code States

목록 보기
15/33

단위 테스트(Unit Test)


기능 테스트

단위로 따지자면 단위가 가장 크다.

애플리케이션을 사용하는 사용자 입장에서 애플리케이션이 제공하는 기능이 올바르게 동작하는지를 테스트

기능 테스트를 하는 주체는 주로 해당 애플리케이션을 개발한 개발자가 될 수도 있지만 일반적으로 QA 부서 또는 외부 QA 업체가 된다. 종종 Frontend 개발자도 서버 측 애플리케이션이 잘 동작하는지 가볍게 테스트를 진행하기도 한다.

통합 테스트

통합 테스트는 애플리케이션을 만든 개발자 또는 개발팀이 테스트의 주체가 되는것이 일반적이다.

통합 테스트는 클라이언트 측 툴 없이 개발자가 짜 놓은 테스트 코드를 실행시켜서 이루어지는 경우가 많다.

슬라이스 테스트

애플리케이션을 특정 계층으로 쪼개어서 하는 테스트를 의미한다.

슬라이스 테스트 역시 해당 계층에서 HTTP 요청이 필요하고, 외부 서비스가 연동되기도 하며 특히나 데이터 액세스 계층의 경우 여전히 DB와 연동되어 있기 때문에 슬라이스 테스트는 단위 테스트보다는 말 그대로 계층별로 쪼개어 테스트한다는 의미의 슬라이스 테스트라고 부른다.

단위 테스트라고 부르기에는 단위가 큰 테스트이며, 또한 애플리케이션의 일부만 테스트하기 때문에 부분 통합 테스트라고 부르기도 한다는 점 참고하세요.

단위 테스트

단위 테스트 코드는 메서드 다누이로 대부분 작성된다.

통합 테스트나 슬라이스 테스트에서 데이터베이스와 연동된다고 해서 무조건적으로 단위 테스트라고 부르기 어렵다기보다는 데이터베이스의 상태가 테스트 이 전과 이 후가 동일하게 유지될 수 있다면 데이터베이스가 연동된다고 해도 단위 테스트에 포함될 수는 있습니다.

하지만 일반적으로 단위 테스트는 최대한 독립적인 것이 좋고, 최대한 작은 단위인 것이 더 좋습니다.

더 작은 단위일수록 다른 연관된 기능들을 생각할 필요도 없고, 테스트 코드 짜기도 더 단순해지고 그만큼 빠르게 테스트를 수행할 수 있기 때문입니다.

단위 테스트를 해야 되는 이유


  • 애플리케이션을 실행하고 종료하고, 요청을 보내고 하는 조금은 번거로운 일들을 단순화할 수 있다.
  • 구현한 코드가 의도한 대로 동작하는지 결과를 빠르게 확인할 수 있다.
  • 작은 단위의 테스트로 미리미리 버그를 찾을 수 있기 때문에 상대적으로 적은 시간 안에 문제를 찾아낼 가능성이 높다.

테스트 케이스란?

테스트 케이스란 테스트를 위한 입력 데이터, 실행 조건, 기대 결과를 표현하기 위한 명세를 의미하는데, 한마디로 메서드 등 하나의 단위를 테스트하기 위해 작성하는 테스트 코드라고 생각하면 된다.

단위 테스트를 위한 F.I.R.S.T 원칙


  • Fast
    • 테스트 케이스는 빨라야 한다. 너무 느리면 돌리고 싶지 않다.
  • Independent
    • 테스트 케이스는 독립적이어야 한다. 어떤 테스트 케이스를 먼저 실행시켜도 실행되는 순서와 상관없이 정상적인 실행이 보장되어야 한다.
  • Repeatable
    • 테스트 케이스는 어떤 환경에서도 반복해서 실행이 가능해야 된다.
    • 외부 서비스나 외부 리소스가 연동되는 경우 앞에서 언급한 원칙들을 포함해서 동일한 테스트 결과 역시 보장하지 못하기 때문에 단위 테스트 시에는 외부의 서비스나 리소스의 연동을 끊어주는 것이 바람직하다.
  • Self-validating
    • 단위 테스트는 성공 또는 실패라는 자체 검증 결과를 보여주어야 한다는 의미.
  • Timely
    • 단위 테스트는 테스트하려는 기능 구현을 하기 직전에 작성해야 한다는 의미.
profile
ㅎㅎ

0개의 댓글