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 관련 용어
- 테스트가 완료된 코드인지 아닌지 알려주는 기능
- 테스트의 적절한 범위?
- 스펙이 있는 것들은 모두 테스트가 있어야함
- 경계값 필수
마무리
- Xcode의 UI테스트는 아직 무의미함 (이런 기능도 있구나…)
- 프로젝트 스텝1에서도 유닛테스트를 적용해보고 싶으면 해봐도 좋음
Leave a comment