PromleeBlog
sitemap
aboutMe

posting thumbnail
실무에서의 React TDD 적용 시 고려사항 - React로 시작하는 TDD 14편
Considerations for Applying React TDD in Practice - TDD with React Part 14

📅

🚀

들어가기 전에 🔗

지금까지 13편에 걸쳐
React
TDD의 기술적인 방법들을 익혔습니다.
이제 여러분은 혼자서도 충분히 테스트 코드를 작성하고 기능을 구현할 수 있습니다.

하지만
회사
(실무)라는 환경은 조금 다릅니다.
'테스트 짤 시간이 어디 있어? 기능 개발하기도 바쁜데!'
이런 말을 듣게 될 수도 있고, 이미 테스트가 하나도 없는 거대한 코드를 마주할 수도 있습니다.

오늘은 기술적인 내용을 넘어,
실무에서 TDD를 성공적으로 안착시키기 위한 전략
을 이야기해 보겠습니다.

🚀

1. 테스트 작성 비용과 효과 (J-Curve) 🔗

가장 많이 듣는 질문은 'TDD를 하면 개발 시간이 2배로 걸리지 않나요?'입니다.
솔직하게 말씀드리면,
초반에는 시간이 더 걸리는 것이 사실
입니다.
마치
보험
과 같습니다. 매달 보험료(시간)를 내지만, 사고(버그)가 났을 때 엄청난 비용을 아껴줍니다.

🚀

2. 모든 것을 테스트하지 말 것 🔗

실무에서 실패하는 가장 큰 이유는
모든 것을 테스트하려다 지쳐 떨어지기 때문
입니다.
효율적인 TDD를 위해
선택과 집중
이 필요합니다.

🚀

3. 자동화: CI/CD 파이프라인 구축 🔗

아무리 좋은 테스트 코드를 짜놔도, 개발자가 실행하는 것을 깜빡하면 무용지물입니다.
가장 좋은 방법은
Github에 코드를 올릴 때마다 자동으로 테스트를 돌리는 것
입니다.
이것을
CI
(지속적 통합)라고 합니다.

GitHub Actions 설정 예시 🔗

프로젝트 루트에 .github/workflows/test.yml 파일을 만들면, 깃허브가 알아서 테스트를 수행해 줍니다.
.github/workflows/test.yml
name: Run Tests
 
on:
  push:
#    branches: [ main ] # main 브랜치에 푸시될 때만 동작하도록 변경
    branches: [ "**" ] # 모든 브랜치에 대해 동작하도록 변경
  pull_request:
    branches: [ main ]
 
jobs:
  test:
    runs-on: ubuntu-latest
 
    steps:
      # 1. 코드를 내려받습니다.
      - uses: actions/checkout@v4
 
      # 2. Node.js를 설치합니다.
      - name: Use Node.js
        uses: actions/setup-node@v4
        with:
          node-version: '18'
 
      # 3. 의존성 패키지를 설치합니다.
      - name: Install dependencies
        run: npm ci
 
      # 4. 테스트를 실행합니다. (이 단계가 실패하면 Merge가 막힙니다)
      - name: Run tests
        run: npm test
이렇게 설정해 두면, 누군가 테스트를 깨뜨리는 코드를 올렸을 때 깃허브가
빨간색 X 표시
를 띄우며 경고해 줍니다.
'인간의 기억력' 대신 '시스템'을 믿으세요.

🚀

4. 레거시 코드 대처법 (보이스카우트 규칙) 🔗

이미 테스트가 하나도 없는 거대한 프로젝트를 맡게 되었다면 어떻게 해야 할까요?
처음부터 모든 테스트를 다 짜려고 하면 1년이 걸려도 못 합니다.

보이스카우트 규칙 🔗

"머물렀던 자리를 왔을 때보다 더 깨끗하게 치우고 떠나라."
이렇게 야금야금 테스트를 늘려가다 보면, 어느새 중요한 로직들은 테스트 커버리지 안으로 들어오게 됩니다.

🚀

결론 🔗

소스 코드는 GitHub - Promleeblog/react-tdd-setup 에서 확인할 수 있습니다.
Terminal
git clone https://github.com/PROMLEE/my-tdd-app.git
cd my-tdd-app
git checkout part14
오늘은 실무에서 TDD를 적용할 때 고려해야 할 현실적인 조언들을 나눴습니다.


TDD는
은탄환
(Silver Bullet)이 아닙니다.
하지만 복잡한 프론트엔드 생태계에서 개발자의 정신 건강을 지켜주는 가장 든든한 방패임은 틀림없습니다.

다음 시간에는 대망의 마지막
15편. React TDD 정리
를 통해, 앞으로의 학습 방향을 제시하며 시리즈를 마무리하겠습니다.

참고 🔗