본문 바로가기
프론트엔드/TDD

TDD란? 테스트 주도 개발에 대해

by PARADISE247 2022. 10. 6.
반응형

TDD

개발을 마치고 예상치 못한 버그가 발생하거나 UI가 깨지는 등의 문제가 발생하는 경우가 많다.

복잡하게 짜여진 코드 속에서 문제의 원인을 항상 빠르게 찾기란 쉽지 않다.

이를 위해 사용하는 것이 바로 TDD Test-driven Development 이다. 개발 전에 테스트 코드를 작성하는 방식을 말한다. 

테스트 코드 작성  -> 테스트 -> (결과: 실패) -> 테스트 통과가 가능한 코드 작성 ->  테스트 -> (결과: 테스트 통과) -> 리팩토링

 

위와 같은 순서를 거쳐서 TDD를 수행하게 된다.

테스트 통과가 가능할 정도로만 코드를 수정하여 다시 테스트를 하고 테스트가 통과될때까지 반복해서 수정하는 것이다.

테스트를 통과하게 되면 그 이후에 코드를 리팩토링한다. 

 

Testing 

내가 짠 코드가 함수, UI, 성능이 의도한대로 요구사항에 맞게 동작하는지 테스트하는 것을 말한다. 

테스팅을 통해서 기능이 정상 동작하는지 파악하고 버그를 기존보다 더 빠르게 찾아내고 수정할 수 있다.

또한 유지보수도 쉬워지고 코드의 품질을 향상시킬 수 있다는 이점이 존재한다. 

 


Test Pyramid

Test Pyramid

Unit Test 

Unit Test 즉 단위 테스트는 정해진 단위에 따라 테스트 하는 것을 의미한다. 즉 내가 함수를 단위로 지정했을 경우 함수마다 테스트를 하는 것이고 단위를 모듈로 지정했을 경우 모듈마다 테스트를 진행하게 되는 것이다. 

 

Integration Test

통합테스트라는 뜻으로 위에서 말한 '단위'들을 묶어서 테스트하는 것이다. 단위별 테스트에선 문제가 없었으나 단위들을 연결후 동작시켰을때 각 단위들 사이의 연결, 상호작용에 있어서 문제가 있는 경우를 잡아낼 수 있다. 

 

E2E Test

UI Test 혹은 사용자 테스트 라고 부른다. 종합적인 결과물 전체를 테스트해보는 것이다. 

 

테스트를 Unit Test 만 하는지 혹은 Integration Test 까지만 하는지 등의 방법은 회사나 개발자에 따라 다를 것이다. 허나 유닛 테스트를 실행하고 테스트가 성공적이었다고 해서 단위들을 연결시키고 동작 시켰을때 성공적으로 동작할거라는 결과는 예측이 불가능하므로 적절한 테스트를 선택하여 실행하는 것이 좋다. 

반응형

'프론트엔드 > TDD' 카테고리의 다른 글

[Jest] 비동기 코드 테스트하기 Testing Asynchronous Code  (0) 2022.10.07
CI/CD란 무엇인가?  (0) 2022.10.07