[Back-end] 유닛/통합/기능 테스트

Geun·2022년 4월 18일
0

Back-end

목록 보기
59/74
post-custom-banner

유닛 테스트

유닛 테스트(Unit Test)전체 코드 중 작은 부분을 테스트 하는 것이다.

유닛 테스트는 매우 간단하고 명확해야 한다.
테스트를 위한 입력값을 주어 그에 대한 함수의 출력값이 정확한지 아닌지 판단하는 것이 유닛테스트인데,
코드의 설계가 좋지 못하다면 유닛 테스트를 작성하기 어려워진다.

통합 테스트, 기능 테스트는 이벤트의 흐름에 이상이 없는지 테스트하는데 좋은 반면,
유닛 테스트는 어떤 부분에 문제가 있고 고칠 부분이 어디인지 명확하게 할 때 용이하다.

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


통합 테스트

통합 테스트(Integration Test)는 각각의 시스템들이 서로 상호작용하고 제대로 작동하는지를 테스트하는 일이다.
유닛 테스트는 다른 컴포넌트들과 독립적인 반면, 통합 테스트는 그렇지 않다.
예를 들어 유닛 테스트에서 데이터베이스에 접근하는 코드는 실제 데이터베이스와 통신하지는 않지만 통합 테스트는 실제로 통신해야 한다.

통합 테스트는 유닛 테스트만으로 충분하지 못하다고 생각할 때 사용된다.
통합테스트는 대체로 유닛 테스트를 작성하는 것보다 복잡하고 시간이 오래걸린다.
따라서 통합 테스트가 꼭 필요한 것이 아니라면 유닛 테스트를 작성하는데 더 집중하는 것이 좋다.


기능 테스트

기능 테스트(Functional Test)는 E2E Test 혹은 Browser Test라고 불린다.
기능 테스트는 어떤 애플리케이션이 제대로 동작하는지 완전한 기능을 테스트하는 일이다.

예를 들어, 웹 애플리케이션을 기능 테스트한다고 하면 브라우저 자동화 도구를 사용해 특정 페이지를 클릭하거나 하는 일이 기능 테스트이다.

유닛 테스트는 수백 가지가 있을 수 있지만, 기능 테스트는 그렇지 않다.
기능 테스트는 작성하기 어렵고 높은 복잡성을 가지고 있어 많은 시간이 걸린다.
이런 이유로 기능 테스트를 매우 세밀하게 나눠서 수행하는 것은 좋지 않다.
대신 기능 테스트는 사용자와 앱의 상호작용을 테스트하고 싶을 때 유용하다.

ex) 회원 가입과 같이 브라우저에서 앱의 특정 흐름을 수동으로 테스트하는 경우와 같은 상황
이런 경우의 기능테스트라면 유저가 회원가입을 마치고 유저가 회원가입을 정상적으로 완료하였음을 알리는 페이지나 home 페이지를 올바르게 출력하는 것을 보장해야 한다.


참고자료

https://cjwoov.tistory.com/9

post-custom-banner

0개의 댓글