TDD에 대해서

아카이브 · 2021. 9. 11. 20:46

TDD (Test Driven Development) - 테스트 주도 개발

사내에 CI/CD를 적용하면서 CI/CD에서 푸시를 하기전에 테스트 코드를 반영하여 푸시되기전에 내가 구성한 코드에 오류가 발생하는지 또는 프론트, 백앤드 간에 오류가 발생하는지 혹은 코드를 수정함으로써 다른 로직에 영향은 없는지를 TDD를 적용함으로써 예방하려함

 

1. 유닛테스트

단위 테스트(유닛테스트)는 테스트 유형에 따라 논리 단위 테스트, 통합 단위 테스트 등으로 나눌 수 있다.

  • 논리 단위 테스트 : 한 메서드내에서 mock을 이용하여 해당 함수가 이상없이 동작하는지를 검증한다.
  • 통합 단위 테스트 : 실제 운영 환경에서 컴포넌트 간 연동을 테스트한다. (해당 함수가 이상이 없더라도 실제환경에서는 이상이 생기는 경우가 발생하기 때문이다.)

 

Python에서의 단위테스트는 두가지로 분류된다.

 

 

Unittest

  • Python 내부 테스트
  • Django

Pytest

  • Flask
  • Requests
  • Pip

여기서 내가 적용한 방법은 Pytest를 이용했다.

 

1. 소스 구조가 TDD를 적용하기에는 번거로운 구조로 되어있어서 코드 리팩토링을 진행했다.

  • Application Factories를 사용할 수 있는 구조로 변경
  • Application단에 중복되는 로직들 모듈화, 캡슐화 진행
  • Blueprint 구조로 변경 (도메인별 분리)

 

2. GitLab - Runner를 별도의 서버에서 구동 후 진행중인 프로젝트 Repository에 등록해준다.

 

3. GitLab - PipeLine 작성

 

image : python:3.7

stages:
  - test
  
test:
  stage: test
  script:
    - echo "테스트 코드 구동 시작"
    - cd tests
    - python -m pytest
    - echo "테스트 코드 구동 완료"

 

4. GitLab에 environment variable 등록

 

5. 확인 

 

2. 통합테스트

 

진행중

'아카이브' 카테고리의 다른 글

Git Runner  (0) 2021.09.15
이슈 트래커에 대하여  (0) 2021.07.22
Django - 실습편 JWT (4)  (0) 2021.06.08
Django - 실습편 view (3)  (0) 2021.06.08
Django - 실습편 model (2)  (0) 2021.06.08