본문 바로가기
IT지식/Web, Server

[Web] 유닛 테스트, 통합 테스트, 기능 테스트에 대해 공부해보자

by five-sun 2022. 12. 21.
728x90

개발을 하다 보면 코드가 잘 동작하고 있는지 버그가 없는지 테스트를 해야한다.

이 테스트를 하는 방법과 종류를 테스트의 범위에 따라 분류해 보면 유닛 테스트, 통합 테스트, 기능 테스트로 나눌 수 있다.

 

테스트 케이스의 개수는 유닛 테스트, 통합 테스트, 기능 테스트 순으로 크지만 코드의 범위는 이의 역순이다.

 

유닛 테스트(Unit Test)

유닛 테스트는 코드 중 작은 부분을 테스트 하는 것이다. 함수 하나하나 각각 개별로 테스트 코드를 작성하는 것과 같다. 만약 테스트에 네트워크나 데이터베이스 같은 외부 리소스가 포함된다면 그것은 유닛 테스트가 아니다.

 

기본적으로 테스트를 위한 입력 값을 주어서 그에 대한 함수의 출력 값이 정확한지 아닌지를 판단하는 것이 유닛테스트라 할 수 있다. 코드의 설계가 별로 좋지 않다면 유닛 테스트를 작성하기도 어렵다. 따라서 함수 하나하나 테스트 코드를 작성하는 유닛 테스트는 좀 더 나은 코드를 만들 수 있도록 도와준다.

 

테스트 중심 개발일 때, 유닛 테스트는 꼭 작성해야 하며, 코드의 디자인을 개선해주고 나중에 코드의 리팩토링이 필요할 때 어떤 부분을 완전히 분리할 필요 없이 깔끔하게 해준다.

 

통합 테스트(Integration Test)

통합 테스트는 이름에서 의미하는 바와 같이 각각의 시스템들이 서로 어떻게 상호작용하고 제대로 작동하는지 테스트하는 것을 의미한다.

통합 테스트는 유닛 테스트와 비슷한데, 큰 차이가 하나 있다. 유닛 테스트는 다른 컴포넌트들과 독립적인 반면 통합 테스트는 그렇지 않다. 유닛 테스트에서 데이터베이스에 접근하는 코드는 실제 데이터베이스와 통신하는 것이 아니지만, 통합 테스트는 실제 통신해야 한다.

 

통합 테스트는 유닛 테스트만으로 충분하다고 느끼지 못할 때 수행한다.

통합 테스트는 대게 유닛 테스트를 작성하는 것보다 복잡하고 오랜 시간이 걸리므로 통합 테스트가 꼭 필요한 것이 아니라면 유닛 테스트를 작성하는데 집중하는 것이 좋다.

 

기능 테스트(Functional Test)

기능 테스트는 E2E 테스트 혹은 브라우저 테스트라고 불린다.

기능 테스트는 어떤 애플리케이션이 제대로 동작하는지 완전한 기능을 테스트하는 것을 의미한다.

 

예를 들어, 어떤 웹 애플리케이션을 기능 테스트한다고 가정해보면 브라우저 자동화 도구를 사용해 특정한 페이지를 클릭한다던가 하는 것이 기능 테스트라 할 수 있다.

 

기능 테스트는 유닛 테스트, 통합 테스트와 완전히 다른 레벨이다. 기능 테스트는 작성하기 매우 어렵고 높은 복잡성을 가지고 있기 때문에 많은 시간이 걸린다.

 

출처: https://cjwoov.tistory.com/9

 

[Test] 유닛 테스트(Unit Test), 통합 테스트(Integration Test), 기능 테스트(Functional Test)란?

세 줄 요약 유닛 테스트: 함수 하나하나와 같이 코드의 작은 부분을 테스트하는 것 통합 테스트: 서로 다른 시스템들의 상호작용이 잘 이루어 지는지 테스트하는 것 기능 테스트: 사용자와 어플

cjwoov.tistory.com

.

728x90