iOS에서의 Unit Test

June·2023년 2월 6일
1

iOS-UnitTest

목록 보기
1/2
post-thumbnail

Unit Test 란?

단일 기능을 의미하는 코드 단위를 테스트하는 것.

1. 코드가 예상대로 작동하는지 확인

어떤 것을 입력할 때마다, 매번 정확한 것을 출력해야 함.

2. 코드가 작동하는 방식을 확인

코드가 예상대로 작동하는지 확인함으로써 회귀 방지 가능.

3. 회귀 방지

회귀 : 코드 수정 후 기능이 의도대로 작동하지 않는 경우.

4. CI/CD와 통합

Unit Test 통과하지 않을 시 코드 머지 불가.
팀에서 작업 시 지속적인 코드 테스트 가능. 현재 코드 머지하는 동안 지속적으로 단위 테스트 실행.

  • CI(Continuous Integration) : 지속적 통합
  • CD(Continuous Delivery) : 지속적 제공
  • CD(Continuous Deployment) : 지속적 배포

Unit Test 모범 사례

독립성

다른 테스트나 외부 소스에 의존하지 않음.
모든 단일 상황에서 항상 똑같은 작업을 수행해야 함.

자동화

CI/CD 설정되어 있을 때 백그라운드에서 실행될 수 있음을 의미.

Given - When - Then

테스트 코드 스타일을 표현하는 방식.

  • Given : 실제로 테스트할 것.
    테스트에 필요한 값 설정, 테스트의 상태 설정.
  • When : 테스트하고자 하는 조건.
    테스트 필요 조건 명시, 테스트하고자 하는 행동.
  • Then : 도출되는 결과.
    테스트 완료 시 보장해야 하는 결과를 명시, 예상되는 변화 설명.

Unit Test는 프로젝트에서 몇 %의 비중?

회사마다 프로젝트마다 각각 다르지만, 아마도 60%이상에 가까울 것.
즉 코드 기반의 절반 이상이 유닛 테스트를 적용, 유닛 테스트 실행 시 코드 기반의 적어도 절반이 항상 동일한 방식으로 작동한다는 것을 의미함.

하지만 결국, 양보다는 질.

유닛 테스트의 비중을 따지기보단, 항상 양보다 질을 생각하기.

TDD (Test Driven Development) 개념 존재

테스트가 개발을 주도한다.


TDD (Test Driven Development)

즉, 코드 작성 전에 유닛 테스트를 작성해야 한다.

    1. 먼저 테스트를 작성, 나머지 실행 시 실패.
    1. 테스트를 통과하기 위한 최소한의 코드를 작성한다.
    1. 리팩토링, 코드 개선. 단위 테스트 덕에 기능은 동일.
  • Red - Green - Refactor

Red

  • 테스트 작성
  • 컴파일
  • 테스트 실행
  • 실패 지켜보기
  • 테스트가 디자인 형성

Green

  • 테스트 실행
  • 테스트 통과에 충분한 코드 작성
  • 심플함에 집중

Refactor

  • 중복 제거, 품질 향상
  • 3의 법칙
  • 동작 보존

profile
안다고 착각하지 말기

0개의 댓글