1. 테스트를 추가해라
2. 모든 테스트를 실행하고 새로운 테스트가 실패했는지 확인해라
3. 코드를 작성해라
4. 테스트 및 리팩터 코드를 실행해라
5. 반복
초기 버그 알림
본인과 다른 개발자가 자유롭게 재실행 할 수 있는 자동화된 테스트를 구축
할 수도 있음더 빠른 개발자 피드백 루프
단위 테스트 변경 시 자동으로 실행
될 수 있으므로 개발 및 디버깅 세션 중에 더 빠른 피드백을 제공인터페이스 설계 지원
개발자가 구현 작업을 하기 전에 API를 설계하도록 함
리팩토링에 대한 자신감
버그가 적고 더 빠르고 확장 가능한 코드 생성
개발자에게 이로움
새로운 기능을 디버깅하고 개발하는 데 훨씬 적은 시간이 걸림
Given I am on the home page
When I enter my username "myeamil@gmail.com"
And I enter my password "mypassword"
Then I should see my eamil "myemail@gmail.com" on the dashboard
커뮤니케이션
높은 가시성
강력한 가시성
을 얻음최종 사용자 만족도
구분 | TDD | BDD |
---|---|---|
테스트 디자인 | - 실제 코드 작성 전에 테스트 작성 - 버그 방지, 기능, 사례 누락 방지 - 테스트 범위 측면에서 달성 할 계획 문서화 | |
테스트 관점 | [테스트 중심] - 개발자 - BDD에 비해 출력이 중요하지 않음 | [행동 중심] - 최종 사용자 - GIVEN 조건 하에서 출력이 정확해야 함 |
의사소통 및 피드백 | - 숙련된 프로그래머만 테스트를 이해할 수 있음 - 정확한 동작을 지정하는 기능이 부족하나 소프트웨어 코드를 사용하면 더 높은 품질을 얻을 수 있음 | - 고객관점에서 테스트를 이해하고 더 빨리 피드백을 보낼 수 있음 - 단순하고 설명적인 영어로 작성 |
구현체의 성숙도
가 높아짐
구현체의 성숙도
- 목적 코드 작성 시에 일어날 수 있는 예외사항 추정과 다른 모듈과의 연계성 고려, 문제 해결을 위한 패턴화 능력 등의 성숙을 말함
Reference
Samuel Addico, "What is BDD and Why?",https://kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=48&dbnum=172089&mode=detail&type=techreport(2020.07.24)
한국데이터산업진흥원, "오래도록 발전하는 개발자로 살아가기 : 입에 쓴 보약, TDD와 BDD", https://kdata.or.kr/info/info_04_view.html?field=&keyword=&type=techreport&page=48&dbnum=172089&mode=detail&type=techreport (2020.07.24)
guru99, "Difference between Cookie and SessionTesting Software: What is TDD?",https://medium.com/javascript-scene/testing-software-what-is-tdd-459b2145405c (2020.07.24)
Eric Elliott, "What is Test Driven Development (TDD)? Tutorial with Example",https://medium.com/javascript-scene/testing-software-what-is-tdd-459b2145405chttps://www.guru99.com/test-driven-development.html(2020.07.24)
Jithin Nair, "What’s the Difference Between TDD and BDD?", https://blog.testlodge.com/tdd-vs-bdd/(2020.07.24)