iOS 캠프 TIL - 2020.12.14 월

Updated:

6주차 리뷰 - Play Kahoot!

  • 퀵 정렬은 평균적으로 가장 빠른 정렬 방법이기에 붙여진 이름이다 (그 당시 기준으로…)

TDD (테스트 주도 개발) - 리뷰어 붱이 특강

  • 켄트 백 - TDD를 재정의한 사람
  • Cycle
    • Red: 실패하는 테스트 케이스 작성
    • Green: 실패하는 테스트케이스를 만족하는 코드 작성
    • Refactor: 코드의 동작은 유지하며 개선
  • TDD가 지향하는 바: Clean Code That Works
    • 큰 단위의 문제를 작은 단위로 나누게된다
    • 지속적인 피드백을 통해 목표를 개선한다
    • 빠르게 실패하고 개선 하는 것
  • 테스트를 하면 좋은 점
    • 테스트는 훌륭한 스펙 정의 문서가 된다
  • 테스트를 하지않으면 코드를 수정(리팩토링)하기 어렵고 두려워진다
  • 테스트코드를 나중에 작성하면 안되나?
    • 테스트를 고려하는 코드(테스트가 가능한 코드)로 작성하게 된다
    • 테스트(스펙)에 대한 구체적인 이해를 기술한 채로 개발하게 된다
    • 어떤 코드를 작성할지에 대해 충분한 이해를 하게 된다

유닛 테스트

  • 코드의 특정 모듈이 의도된 대로 정확히 작동하는지 검증하는 절차
  • 각 테스트 케이스는 서로 분리되어야 한다

어떤 테스트를 작성해야 할까

  • FIRST
    • Fast
    • Independent
    • Repeatable
    • Self-validating
    • Timely
  • Right - BICEP
    • Right: 결과가 올바른가?
    • Boundary: 모든 경계 조건이 Correct한가?
    • Inverse: 역 관계를 확인할 수 있나?
    • Cross-check: 다른 수단을 사용해서 교차확인 할 수 있나?
    • Error Condition: 을 강제로 만들 수 있나?
    • Performance: 성능 특성이 한도내에 있나?

라이브 코딩

  • 계산기 더하기 기능 테스트와 기능 구현 과정
  • TDD 관련 용어
    • Mock
    • Stub
    • Fake
    • Spy
  • 테스트가 완료된 코드인지 아닌지 알려주는 기능
    • Code Coverage
  • 테스트의 적절한 범위?
    • 스펙이 있는 것들은 모두 테스트가 있어야함
    • 경계값 필수

마무리

  • Xcode의 UI테스트는 아직 무의미함 (이런 기능도 있구나…)
  • 프로젝트 스텝1에서도 유닛테스트를 적용해보고 싶으면 해봐도 좋음

Leave a comment