본문 바로가기
CS/BackEnd

테스트 주도 개발

by Diligejy 2022. 6. 20.

1. 테스트 주도 개발 절차

a. RED - 실패하는 테스트 추가

b. GREEN - 테스트 통과, 최소한의 코딩

c. REFACTOR - 구현 설계 개선, 테스트 통과 유지

 

 

2. 테스트 실패

a. 구체적인 하나의 요구사항을 검증하는 하나의 테스트를 추가

b. 추가된 테스트가 실패하는지 확인

    - 실패하는 것을 확인해야 테스트가 동작함을 믿을 수 있음

    - 운영 코드 변경이 진행되지 않았기 때문에 실패했는지 확인해야 함

 

3. 테스트 성공

a. 추가된 테스트를 비롯해 모든 테스트가 성공하도록 운영코드 변경

b. 테스트 성공은 요구사항 만족을 의미

c. 테스트 성공을 위한 최소한의 변경

 

4. 켄트 벡의 설계 규칙

a. Passes the tests

b. Reveals intention

c. No duplication

d. Fewest elements

https://martinfowler.com/bliki/BeckDesignRules.html

 

bliki: BeckDesignRules

When developing Extreme Programming in the 90's, Kent Beck developed four rules of simple design: Passes the tests, reveals intention, no duplication, and fewest elements.

martinfowler.com

 

5. 오버엔지니어링

프로그래머는 요구사항 명세에 명확히 지정되지 않은 성능 달성이나 구현 설계 품질 개선에 빠져드는 경향을 가짐

 

이런 목표는 그 자체로 나쁜 것이 아니지만 지나치면, 더 중요한 목적, 기능 요구사항에 써야 할 자원을 불필요하게 낭비하게됨

 

테스트 주도 개발은 가장 중요한 목표를 우선 달성하도록 유도하며 오버엔지니어링에 빠졌음을 느낄 때 안심하고 다음으로 나아갈 수 있도록 피드백을 제공

 

6. 핵심은 피드백

테스트 주도 개발의 핵심은 정해진 절차가 아니라 짧은 주기로 지속되는 피드백

피드백에 기반해 안정적으로 지식과 코드를 늘려나가는 것이 목적

 

댓글