MEMO

[TDD] Test-Driven Development 테스트 주도 개발 본문

기타

[TDD] Test-Driven Development 테스트 주도 개발

by_dev 2020. 6. 23. 20:13

TDD 법칙?

첫째, 실패하는 단위 테스트를 작성할 까지 실제 코드를 작성하지 않는다.

둘째, 컴파일은 실패지 않으면서 실행이 실패되는 정도로만 단위 테스트를 작성한다.

셋째, 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 구현한다.

 

F.I.R.S.T UNIT TEST 법칙

F. Fast 빠르게

테스트는 빨라야 한다. 테스트가 느리면 자주 돌릴 엄두를 낸다. 자주 돌리지 않으면 초반에 문제를 찾아내 고치지 못한다. 결국 코드 품질이 망가지기 시작한다.

 

I. Independent 독립적으로

테스트를 서로 의존하면 된다. 테스트가 다음 테스트가 실행될 환경을 준비해서는 된다. 테스트는 독립적으로 그리고 어떤 순서로 실행해도 괜찮아야 한다. 테스트가 서로에게 의존하면 하나가 실패할 나머지도 잇달아 실패하므로 원인을 진단하기 어려워지며 후반 테스트가 찾아내야 결함이 숨겨진다.

 

R. Repeatable 반복가능하게

테스트는 어떤 환경에서도 반복 가능해야 한다. 실제 환경, QA 환경, 버스를 타고 집으로 가는 길에 사용하는 노트북 환경에서도 실행가능해야 한다. 테스트가 돌아가지 않는 환경이 하나라도 있다면 테스트가 실패한 이유를 둘러댈 변명이 생긴다. 게다가 환경이 지원되지 않기에 테스트를 수행하지 못하는 상황에 직면한다.

 

S. Self-Validation 자가검증하는

테스트는 bool값으로 결과 내야 한다. 성공 아니면 실패다. 통과 여부를 알리고 로그 파일을 읽게 만들어서는 된다. 통과 여부를 보려고 텍스트 파일 두개를 비교하게 만들어서도 된다. 테스트가 스스로 성공과 실패를 가늠하지 않는다면 판단은 주관적이 되며 지루한 수작업 평가가 필요하게 된다.

 

T. Timely 적시에

테스트는 적시에 작성해야 한다. 단위 테스트는 테스트하려는 실제 코드를 구현하기 직전에 구현한다. 실제 코드를 구현한 다음에 테스트 코드를 만들면 실제 코드가 테스트하기 어렵다는 사실을 발견할지도 모른다. , 테스트가 불가능하도록 실제 코드를 설계할지도 모른다.

'기타' 카테고리의 다른 글

[Clean Code] 정리  (0) 2020.06.01
[Expo] Eject 없이 네이버 아이디 로그인(네아로) 적용하기  (1) 2019.05.07
Comments