2022. 6. 6.ㆍ공부
개발자는 기능을 구현하는 사람일수도 있지만, 조금 더 자신감있는 개발자가 되기 위해서는 테스트를 잘 작성하고 리팩토링을 하는 것도 중요하다. 제품이나 서비스의 품질을 확인하고 소프트웨어의 버그를 찾아 제품이 예상대로 동작하는지 확인해야한다. (함수, 특정 기능, ui, 성능, api 스펙)
* 일반적인 테스트 방법
1) 비즈니스 로직을 가진 소스 코드를 작성
2) 1에 해당하는 테스트 코드를 작성
3-1) 모든 test가 pass이면 퇴근한다.
3-2) test가 실패한다면, 모든 test가 pass가 될 때까지 어떤 부분이 잘못되었는지 확인하고 수정한다.
TDD라는 것은 일종의 개발 방법론인데, Test-driven development의 줄임말로 '테스트 주도 개발'이라고 한다. 개발하기 전에 테스트 코드를 먼저 작성하여 개발해나가는 방식이다.
* TDD 방식의 개발
1) 코드 작성 전 특정 기능을 세분화(딱 하나의 케이스)해서 테스트 코드 작성
2) 1이 실패할 시 성공할만큼의 양만 작성해서 성공하도록 만듬 -> 하나의 테스트 완성
3) 다음 기능으로 넘어가서 해당 기능에 해당하는 테스트 코드 작성
4) 3이 실패할 시 성공할만큼의 양만 작성해서 성공하도록 만듬 -> 하나의 테스트 완성
5) 다음 기능으로 넘어가서 해당 기능에 해당하는 테스트 코드 작성...
.....
모든 기능에 대해 success라는 결과를 얻었다면, 코드 퀄리티 향상을 위하여 아키텍처 개선하고 리팩토링한다. TDD는 명확한 요구 사항을 기반으로해서 설계자의 관점으로 코드를 작성할 수 있다. TDD 수행 시 모든 요구 사항(목표)에 대해 점검할 수 있으며 사용자 입장에서 코드를 작성할 수 있다. 개발자스럽게 이야기를 한다면 구현보다는 인터페이스에 집중해서 코드의 퀄리티를 향상시킬 수 있다.
프론트엔드 테스팅이 필요한 이유에는 두 가지가 있다.
1) 개발 단계에서 코드의 경험을 미리 확인할 수 있음
2) 신규 기능 개발/리팩토링 시, 기존 기능들이 여전히 잘 동작하는지 체크할 수 있음
테스트 종류 | 설명 | 대표 test runner |
예시 시나리오 | 비용 (코드 양, 시간) |
Unit Test | 최소 단위의 한가지 기능이 잘 작동하는지 확인하는 테스트 | Jest, Mocha, Jasmine |
util 함수가 잘 동작하는지 | 저 |
Integration Test | 어플리케이션의 여러 통합된 요소들이 함께 잘 동작하는지 확인하는 테스트 | React Testing Library, Enzyme | 버튼을 클릭했을 때 의도대로 변경되는지 | 중 |
E2E Test | 실제 유저 관점에서, 어플리케이션이 브라우저 상에서 의도한 대로 동작하는지 확인하는 테스트 | Selenium, Puppeteer, Cypress |
로그인부터 로그아웃까지의 기능이 문제 없이 잘 작동하는지 | 고 |
'공부' 카테고리의 다른 글
개발 환경 (2) | 2024.10.16 |
---|---|
[Deployment] firebase로 배포하기 (0) | 2022.06.07 |