호우동의 개발일지

Today :

article thumbnail

썸네일


테스트 우선 철학

  • 점증적 개발 방식
    • 시스템 테스트를 위해 사용할 수 있는 시스템 명세가 없음
    • 매우 비공식적인 방식으로 테스팅 프로세스 진행(계획 주도 테스팅 대비)
  • 테스트 우선 개발 방법
    • 테스트를 개발 프로세스의 중심에 둠
    • 모든 테스트를 성공하기 전엔 개발을 진행 못함
  • XP에서 수행하는 테스팅의 주요 특징
    • 테스트 우선 개발
    • 시나리오를 가지는 점증적 테스트 개발
    • 테스트 개발 및 검증에서 사용자 참여
    • 테스트 자동화 프레임 워크 사용

테스트 주도 개발법(Test Driven Development)

  • 테스트 우선 철학이 발전하여 일반화된 기법
  • 코드 작성 전에 테스트 먼저 작성
    • 코드를 작성하면서 테스트 실행 가능
    • 개발 과정에서 문제점을 찾을 수 있음
  • 테스트는 프로그램과 같이 작성되어야 함 ← 자동으로 테스트를 실행하기 위해
  • 새로운 기능이 추가될 때마다 이전 테스트와 새로운 테스트가 자동적으로 수행
    → 새로운 기능이 에러를 발생시키지 않음을 확인

테스트 우선 접근법

예시

  • 사용자 스토리를 개발해 놓은 상황을 가정
    • 스토리는 몇 개의 과업 카드로 나뉨
    • 과업에 나와 있는 구현을 확인하기 위해 한 개 이상의 단위 테스트를 만듦

테스트 자동화

  • 기능 구현 전에 테스트가 실행 가능한 요소의 형태로 작성되는 것
  • 테스트 기능은 다음의 특성을 지켜야 함
    • 독립적으로 작동이 가능해야 함
    • 테스트할 입력의 제출을 시뮬레이션 가능해야 함
    • 결과가 출력 명세에 부합하는지 확인해야 함
  • 자동화 테스트 프레임워크
    • 쉽게 실행 가능한 테스트를 작성, 실행할 때 테스트 집합을 적용하는 시스템
  • 테스트 자동화로 인해 테스트 집합을 빠르고 쉽게 실행 가능
    → 새로 작성한 코드로 인해 문제를 즉시 찾을 수 있음

테스트 우선 개발의 문제점

  • 프로그래머는 테스트보다 프로그래밍에 더 관심
    • 불완전한 테스트를 작성하는 경우 → 발생할 가능성이 있는 모든 예제 확인 X
    • 어떠한 테스트들은 점증적으로 작성하기 어려움
      • 복잡한 UI를 가진 시스템에서 디스플레이 규칙과 화면 간 이동 흐름을 테스트하는 경우
    • 테스트 집합의 완전성을 판단하기 어려움
      • 테스트 집합이 완전한 커버리지를 보장 못하는 경우
      • 시스템의 중요한 부분이 실행되지 않아 테스트를 못 받는 경우
      • 테스트를 리뷰하지 않고 테스트만 추가 작성하면 버그를 발견하지 못한 채 배포될지도