본문 바로가기

Better SW Development

TDD 짝 프로그래밍 실습 후 체크리스트

때때로 TDD 짝 프로그램 실습을 진행 하곤 합니다. 시간적인 여유가 있을 경우에는 실습 후 다음과 같은 체크리스트로 점수를 측정합니다. 
  1. TDD의 세 가지 기본 원칙은 지키셨나요? (항목당 +1점)
    - 테스트 코드를 작성하기 전엔 업무 코드를 작성하지 않는다.
    - 실패하는 테스트 코드를 한 번에 한 개 이상 만들지 않는다.
    - 현재 실패하는 코드를 만족시키는 것 이상의 업무코드를 작성하지 않는다.
  2. 테스트 케이스는 몇 개? (실습 난이도에 따라서 적정 갯수 이상시 적절히)
    - 메소드당 1개 이상으로 만들었다. (+1) 
    - 테스트를 만들지 않은 메소드가 있다 (0)
  3. 테스트 케이스의 이름이 테스트 의도를 잘 나타낼 수 있게 작성되었다? (+2점) 
  4. assert문에 메시지 인자를 넣어서 작성했다.( +2점) 
  5. 문맥전환(Role change)은 잘 하셨나요? (잘했다 +3, 1번정도 +1, 거의 잘 안되었다 0점 혹은, 롤 전환 횟수 만큼 + 점수)
  6. 리팩토링(정련)은 하셨나요? (녹색 막대 후 반드시 했다 +1점)
  7. Red -> Green 시간 간격이 짧았다. (자신의 턴 내에서 최소 1회 이상 +1점)
  8. 드라이버가 의견 제안이나 질문을 잘 했다. (잘했다 +2점, 그냥저냥 1점, 안했다 0점)
  9. 네비게이터가 의견을 잘 받아 주었다. (+1점)
  10. 변수나 클래스 이름을 설명적으로 잘 짓기 위해 함께 노력했다(+2점)
  11. 테스트 케이스 작성에 기준이 있었다. (+1)
  12. 작성한 코드의 밸런스 : 작성한 테스트 케이스 숫자 / public 메소드의 숫자 + private 메소드의 숫자 만큼 + 점수
  13. 테스트가 성공했을때 짝 만의 제스처나 세러모니가 있었다. (+2점)
  14. 테스트 케이스를 자주자주 실행했다. (심정적 측정이긴 하지만 +1점 :)
  15. 테스트 케이스가 문맥에 맞게 적절히 작성된 것 같다. (심정적 측정이긴 하지만 +1점 :)
  16. 자세가 불편하지 않았고 개발 화면이 잘 보였다. (+1점)
  17. 초반 함께 설계하는 시간이 있었다. (+1점)
  18. 기능 목록(Function List)을 만들어서 코딩시에 활용 했다. (+1)
  19. 적절히 쉬는 시간을 함께 가졌다. (+2점)
  20. 시간이 없어서 포기한 기능이 있다. (-2점)

단순 심정적인 측정 보다는 좀 더 나은 결과를 만들 수 있습니다.
물론 TDD와 짝프로그래밍에 대해 설명은 선행되어야 겠죠? :)