소프트웨어 개발자/SW 개발론

[SW 개발] 테스트 중심의 개발 TDD (with. Unit, E2E, Integration)

yubi5050 2022. 8. 25. 18:46
"의도하지 않은 결함 수가 많아지면 개발자는 변경을 주저한다"

출처 : https://blogshine.tistory.com/186

 

테스트 주도 개발 (TDD) 란?

Test Driven Development 의 약자로 테스트 주도 개발이란는 뜻을 가지는 소프트웨어 개발 방법론 중 하나이다.

 

작성한 코드의 검증이나 수정(리팩토링)시 기능이 의도한대로 동작하는지 체크할 때 사용

검증 절차를 통한 안정성을 높여 준다.

 

 

테스트 종류

구현한 코드가 정상적으로 작동하는지 확인하기 위해선 테스트가 필요한데, 테스트를 하고자 하는 범위(상황)에 따라 다양한 테스트 방법이 등장했다.

  • UnitTest (단위테스트)
  • EndtoEnd Test (종단 테스트)
  • Integration Test (통합 테스트)

 

Unit Test

  • 함수 or Class 등 코드의 작은 부분을 테스트 하는 방식
  • ex. 함수에 다양한 입력 값 넣어보며 결과가 의도대로 나오는지 확인

 

E2E Test

  • E2E 테스트는 End2End의 약자로 실제 유저가 프로그램을 사용하는 상황을 가정하여 테스트
  • 기획한 시나리오 대로 동작하는지, 비즈니스 적으로 의도하지 못한 시나리오는 없는 지 등을 확인하며 작성
  • ex) 실제 유저 A가 되어 시나리오대로 클릭해보며, 정상적으로 되는지 확인

 

Integration Test

  • Integration Test는 UnitTest 단위에서 해결 할 수 없는 외부 시스템 (DB 등) 을 결합하여 테스트하는 방식
  • 전체 시스템이 정상적으로 잘 작동하는지 체크
  • 비교적으로 많은 부분의 포인트를 동시에 확인하기 때문에 에러 발생시 검출이 쉽지 않음
  • 그래서 Unit Test에 좀더 초점을 두어 진행하는 것이 바람직
    ex) 유저 A로 시나리오대로 진행시 다른 시스템들의 상호작용이 정상적으로 잘 이루어 지는지 확인