이번 시간에는 ATDD에 대해서 공부해 보려 합니다.
ATDD는 사용자 요구를 더 잘 이해하기 위한 방안으로 탄생한 소프트웨어 개발론 인데요, 현재 TDD에 대해서 공부하고 있는 저로써 TDD의 심도있는 이해에 도움이 될 것 같아 공부해 보게 되었습니다.
❓ATDD란?
ATDD는 TDD에서 한 발 더 나아간 개념이라고 할 수 있는데요, ATDD는 인수 테스트-주도-개발 이란 뜻인데요, 여기서 인수는 ‘인수인계’에서 뜻하는 그 인수라는 점에서 ATDD가 ‘소통’에 집중된 소프트웨어 개발 방법론이라는 것을 알 수 있습니다.
개인적으로는 이 그림이 ATDD의 핵심을 말해준다고 생각합니다.
❓ATDD의 장점?
ATDD는 각 팀 별로 요구사항을 이해하고 있더라도, 그 이해가 다를 수 있다는 관점에서 사용자의 요구사항을 명확하게 인지하고자 탄생한 개념인데요, 이러한 이유 때문에 다음과 같은 장점을 가집니다.
- 배포 없이 대부분의 기능 동작을 테스트 할 수 있어 빠른 피드백을 받을 수 있다.
- 새로운 팀의 도메인과 서비스 흐름 파악에 큰 도움
- 요구사항을 명확하게 하기 때문에 문제를 초기에 발견할 수 있다.
사용자의 요구사항을 명확히 하여 빠른 피드백을 받을 수 있다는 것이 장점이라는 것이죠.
❓TDD와 ATDD의 차이점?
ATDD에 대해서 알아봤는데요, 그렇다면 TDD와 차이점이 뭘까요? 결국 테스트 주도 개발이란 점에서 같은 개념 아닐까요? 왜 ATDD란 개념이 새로 탄생한 것일까요?
이 둘의 차이점을 명확하게 개발 방법론으로 살펴봅시다.
TDD의 개발 방법은 다음과 같습니다.
ATDD는 다음과 같은데요,
팀 간의 이해를 명확히 하고, 그에 맞는 인수 조건을 정의하여 요구 사항을 철저히 충족할 수 있다는 것입니다.
❓ATDD 프로세스
위의 그림과 같이 ATDD 흐름이 이어지는데요, 이는 다음과 같은 프로세스를 통해 작성할 수 있습니다.
- 사용자 스토리 (요구 사항 식별)
- 인수 조건 작성When : 어떤 행동 또는 이벤트가 발생할 때를 정의합니다.
- Then : 행동 또는 이벤트에 대한 결과를 정의합니다.
- Given : 초기 상태를 나타내며 어떠한 조건에서 테스트를 수행할 것인지 정의합니다.
- TDD 방법론으로 테스트 코드 작성
❗ATDD를 공부하고 생각 하는 테스트 주도 개발에 대해서
TDD라는 체계 자체가 ‘객체 지향’을 조금 더 ‘객체 지향’스럽게 만들어주는 설계의 방법론이라는 느낌을 받았습니다. TDD 설계 방법을 준수하면서 코드를 작성하면, 자연스레 SOLID 법칙을 준수하게 되고, 빠른 피드백을 통해 지속 가능한 아키텍처를 만들 수 있다는 느낌을 받았습니다.
그러나 이러한 방법론을 무조건 따랴야 할 필요는 없다는 생각이 들었습니다. 중요한 것은 이러한 방법론이 아니라, TDD에 대한 본질적인 목적을 이해함으로써 안정성 있고 효율적인 소프트웨어 개발을 해 나가는 것이 중요하다는 생각입니다. (그렇게 되면 자연스럽게 TDD의 방법론을 적용하게 될지도)
'개발 상식 > 객체 지향 & 설계' 카테고리의 다른 글
[객체 지향] 코드를 재사용 하기위한 상속과 조합 (0) | 2024.02.23 |
---|---|
[개발 상식] BDD와 DDD (0) | 2023.11.10 |
[객체 지향] SRP의 진정한 의미 (0) | 2023.11.06 |
[개발 설계] 유연한 설계를 위한 유스케이스와 콘웨이 법칙 (0) | 2023.11.03 |
[개발 설계] MVVM이 뭔가요? (0) | 2023.11.02 |