카테고리 없음

Agile Project Management Guide - 테스팅 Testing

oaos 2025. 6. 11. 00:10

애자일 프로젝트 관리에서 테스팅은 단순한 최종 단계의 활동이 아니라, 프로젝트 전반에 걸쳐 가치를 제공하고 위험을 완화하는 핵심적이고 지속적인 요소입니다. 출처에서 언급된 내용은 애자일 프로젝트 관리의 더 큰 맥락에서 테스팅이 어떻게 통합되고 중요한 역할을 하는지 보여줍니다.

다음은 테스팅 관련 개념들을 애자일 프로젝트 관리와 연결하여 논의한 내용입니다.

1. 작동하는 소프트웨어를 통한 진행 상황 측정

애자일 프로젝트의 가장 중요한 원칙 중 하나는 **"작동하는 소프트웨어가 진행 상황의 주된 측정 기준"**이라는 것입니다. 이는 단순히 코드를 작성하는 것을 넘어, 실제로 기능하고 고객에게 가치를 제공할 수 있도록 테스트되고 검증된 소프트웨어를 의미합니다.

  • **비기능적 요구사항(Non-functional Requirements, NFRs)**도 제품 백로그(Product Backlog)와 완료 정의(Definition of Done, DoD)에 추가되어 제품의 기능 개발과 함께 구현되어야 합니다. 이는 보안, 가동 시간 등과 같은 비기능적 요구사항도 작동하는 소프트웨어의 필수적인 부분으로 간주되며, 이들 또한 테스트의 대상이 됨을 시사합니다.

2. 테스트 주도 개발 (Test-Driven Development, TDD)

익스트림 프로그래밍(eXtreme Programming, XP)의 핵심 실천 방법 중 하나인 TDD는 애자일 프로젝트에서 테스팅의 중요성을 극명하게 보여줍니다.

  • TDD는 코드가 작성되기 전에 테스트를 먼저 작성하는 방식을 취합니다. 이는 개발자가 코드를 작성하기 전에 무엇을 구축해야 하는지에 대한 명확한 이해를 갖도록 돕고, 테스트가 통과될 때까지 코드를 개발 및 수정합니다.
  • 이 과정은 'Red-Green-Refactor' 또는 'Red-Green-Clean' 사이클로 설명됩니다:
    • Red (빨간색): 실패하는 단위 테스트를 먼저 만듭니다. 이는 아직 코드가 없거나, 기존 코드에 버그가 있기 때문입니다.
    • Green (녹색): 테스트를 통과하는 코드를 작성합니다.
    • Refactor/Clean (리팩토링/정리): 코드를 정리하고, 중복을 제거하며, 결합도를 낮추고 응집도를 높이는 작업(리팩토링)을 수행합니다. 이 단계는 테스트가 통과된 후 코드를 개선하여 더 나은 설계와 유지보수성을 확보하는 데 중점을 둡니다.
  • TDD의 주요 장점은 개발 초기 단계에서 결함을 발견하는 데 도움이 된다는 것입니다. 이는 애자일의 '빠른 실패(Failing Fast)' 개념과 일맥상통합니다. '빠른 실패'는 오류를 조기에 그리고 저렴하게 발견하여 오해를 파악하는 좋은 방법이며, 특히 초기 단계의 불확실성이 높은 프로젝트에 유용합니다.
  • 소스는 "개발자가 스스로 테스트를 작성하는 것에 유의하라"고 경고하는데, 이는 테스트의 객관성과 포괄성을 위해 다른 팀원의 검토나 다른 유형의 테스트(예: 통합 테스트)가 필요할 수 있음을 암시합니다.

3. XP의 핵심 관행으로서 테스팅과 리팩토링의 상호작용

테스트 시나리오 작성은 소프트웨어 설계와 함께 이루어지는 중요한 활동입니다. XP의 핵심 관행인 리팩토링은 코드를 정리하고, 중복을 제거하며, 결합도를 낮추고 응집도를 높이는 작업인데, 이는 테스트 스위트가 잘 갖춰져 있을 때 가장 효과적으로 수행될 수 있습니다. 견고한 테스트는 리팩토링 과정에서 기존 기능이 손상되지 않았음을 보장하여, 개발자가 자신감을 가지고 코드를 개선할 수 있게 합니다. 이는 기술적 탁월성과 좋은 디자인에 대한 지속적인 관심이라는 애자일 원칙을 지원하며, 민첩성을 향상시킵니다.

4. 지속적인 개선과 피드백

애자일 프로젝트는 지속 가능한 개발 속도를 유지하며, 이는 끊임없는 테스트와 피드백을 통해 가능합니다.

  • 팀은 정기적으로 더 효과적이 될 수 있는 방법을 성찰하고 그에 따라 행동을 조정해야 합니다. 이러한 성찰과 조정은 종종 테스트 결과와 피드백을 기반으로 이루어집니다.
  • 애자일 모델링 가치 중 하나인 피드백은 다이어그램을 통해 아이디어를 전달하고 빠르게 피드백을 얻는 것을 포함합니다. 작동하는 소프트웨어에 대한 데모는 자동화된 인수 테스트 스크립트와 함께 수행될 수 있으며, 이는 이해관계자로부터 직접적인 피드백을 얻는 중요한 수단이 됩니다.

5. 투명성 및 지식 공유

테스트 결과와 결함 정보는 애자일 프로젝트의 투명성 유지에 기여합니다.

  • 애자일 프로젝트에서는 지식 공유가 필수적이며, 모든 정보는 모든 사람과 공유되어야 합니다. 나쁜 소식을 숨기지 않고 문제를 직면하는 투명성은 프로젝트의 성공에 필수적입니다. 테스트에서 발견된 문제나 결함에 대한 솔직한 공유는 팀이 신속하게 문제를 해결하고 학습하며 개선할 수 있도록 돕습니다.

결론적으로, 애자일 프로젝트 관리에서 테스팅은 단순히 소프트웨어의 버그를 찾는 것을 넘어섭니다. 이는 지속적인 가치 전달, 품질 보증, 조기 위험 감지, 코드의 지속적인 개선, 그리고 이해관계자로부터의 빠른 피드백을 가능하게 하는 핵심적인 활동입니다. TDD와 같은 실천 방법들은 테스팅을 개발 프로세스에 깊이 통합하여 애자일의 유연성과 적응성을 극대화하며, '작동하는 소프트웨어'를 통해 실제 진행 상황을 측정하는 데 필수적인 기반을 제공합니다.

반응형