iOS Test Driven Development

여기에 정리된 내용은 모두 iOS Test-Driven Development by Tutorials - raywenderlich 책 내용을 기초로 합니다.

1. TDD란?

반복적으로 테스트를 통해 많은 작은 변화를 만들어 소프트웨어를 개발하는 반복적인 방법입니다.

TDD 사이클:

  1. 실패 테스트를 작성
  2. 테스트를 통과하도록 수정
  3. Refactor
  4. 위의 과정 반복

1.1 TDD를 사용하는 이유

소프트웨어가 잘 작동하고 앞으로도 계속 잘 작동하도록 보장하는 가장 좋은 방법입니다.

TDD는 테스트가 잘되도록하는 방법을 제공합니다:

  • 첫 번째 단계는 실패한 테스트를 작성하는 것입니다. 이것은 테스트가 실패했음을 증명합니다. 실패할 수 없는 테스트는 그다지 유용하지 않습니다.
  • 새 테스트를 작성하기 전에 다른 모든 이전 테스트를 통과해야합니다. 이를 통해 테스트를 반복 할 수 있습니다.
  • 모든 테스트를 자주 실행하면 테스트를 빠르게 실행할 수 있도록 인센티브가 제공됩니다.
  • 리팩토링하면 프로덕션 코드와 테스트 코드를 모두 업데이트합니다. 이것은 코드의 유지보수를 보장합니다.
  • 프로덕션 코드와 테스트를 병렬로 반복하여 작성하면 코드가 테스트 가능하다는 것을 보장합니다.

1.2 무엇을 테스트해야하는가?

  • 자동화 된 방식으로 캐치 할 수없는 코드에 대한 테스트를 작성합니다. 클래스의 메소드, 사용자 정의 getter, setter 및 사용자가 작성한 대부분의 코드가 포함됩니다.
  • Generated code에 대한 테스트를 작성하지 않습니다. 예를 들어, generated getter와 setter에 대한 테스트를 작성하는 것은 가치가 없습니다. 스위프트는 이것을 아주 잘 처리하기 때문에 잘 작동한다는 것을 믿을 수 있습니다.
  • 컴파일러가 포착 할 수있는 문제에 대한 테스트를 작성하지 않습니다.
  • 앱에서 사용하는 first- 또는 third-party 프레임워크와 같은 종속성 코드에 대한 테스트를 작성하지 않습니다.

1.3 정리

  • TDD는 좋은 테스트 작성을 위한 일관된 방법을 제공합니다.
  • 좋은 테스트는 실패, 반복, 빠른 실행 및 유지 관리가 가능합니다.
  • 실제 개발 비용에는 초기 코딩 시간, 시간이 지남에 따라 새로운 기능 추가, 기존 코드 수정, 버그 수정 등이 포함됩니다. TDD는 유지 보수 비용과 버그 수를 줄여서 가장 효율적인 접근 방식으로 만듭니다.

2. TDD 사이클

  1. Red: 앱 코드를 작성하기 전에 실패 테스트 작성
  2. Green: 테스트를 통과하기위한 최소한의 코드 작성
  3. Refactor: 앱 코드와 테스트 코드 정리
  4. Repeat: 모든 기능이 구현 될 때까지 이러한 사이클 반복

2.1 Red: 실페 테스트 작성

앱 코드를 작성하기 전에 실패 테스트 작성합니다. 컴파일 실패도 테스트 실패로 카운트 합니다.

2.2 Green: 테스트를 통과하도록 수정

2.3 Refactor: 코드 정리

앱 코드와 테스트 코드 모두 정리합니다. 여기에는 몇가지 고려할 사항이 있습니다.

  • 중복된 로직
  • 주석: 어떻게 수행되었는지가 아니라 왜 수행했는지 설명해야합니다.
  • Code smells: 때로는 특정 코드 블록이 단순히 잘못된 것처럼 보입니다. 직감을 믿고 이러한 ‘code smells’를 제거합니다.

2.4 Repeat: Do it again

앱 개발 전반에 걸쳐 TDD를 최대한 활용합니다.

2.5 정리

  1. Red: 앱 코드를 작성하기 전에 실패 테스트 작성
  2. Green: 테스트를 통과하기위한 최소한의 코드 작성
  3. Refactor: 앱 코드와 테스트 코드 정리
  4. Repeat: 모든 기능이 구현 될 때까지 이러한 사이클 반복


Improve this page