본문 바로가기

Software Engineering

TDD vs BDD vs DDD (+JDD)

기존의 폭포수 모델 에서 동일하게 가지고 있는 문제를 해결하기 위한 개발 방법론.

  • TDD(Test Driven Development) : 테스트 주도 개발. 코드를 작성하기 전에 테스트(Test)를 먼저 작성.
  • BDD(Behavior Driven Development) : 행동 주도 개발. 코드를 작성하기 전에 코드가 수행할 행위(Behavior)에 대한 명세를 먼저 작성.
  • DDD(Domain Driven Design) : 도메인 주도 개발. 여기서 도메인이란, SW로 해결하고자 하는 문제의 영역, 즉 만들고자 하는 서비스를 잘게 쪼개놓은 단위(JAVE, 객체지향, OOP)

1) TDD

- 참고) https://rinthel.github.io/rust-lang-book-ko/ch11-01-writing-tests.html

 

테스트 작성하기 - The Rust Programming Language

테스트는 테스트 아닌 코드가 프로그램 내에서 기대했던 대로 기능을 하는지 검증하는 러스트 함수입니다. 테스트 함수의 본체는 통상적으로 다음의 세 가지 동작을 수행합니다: 필요한 데이터

rinthel.github.io

- 테스트 주도 개발(Test-driven development TDD)은 매우 짧은 개발 사이클을 반복하는 소프트웨어 개발 프로세스 중 하나이다. 개발자는 먼저 요구사항을 검증하는 자동화된 테스트 케이스를 작성한다. 그런 후에, 그 테스트 케이스를 통과하기 위한 최소한의 코드를 생성한다. 마지막으로 작성한 코드를 표준에 맞도록 리팩토링한다.

- 코드를 짜기 전에 먼저 해야하는 게 테스트 코드 만들기

- 먼저 red light를 보고 -> green light로 바꾸기

- https://jojoldu.tistory.com/674?category=1036934 

 

1. 테스트하기 좋은 코드 - 테스트하기 어려운 코드

팀 분들과 함께 NextStep - 이펙티브 코틀린 강좌를 수강하고 있다. 최근에 과제 회고를 처음 진행했는데, 이때 나온 주제가 테스트 하기 좋은 코드였다. 이 주제는 사실 이미 너무 많이 회자된 주

jojoldu.tistory.com

https://mingule.tistory.com/43

 

TDD, BDD란?

TDD (Test Driven Development) TDD란, 말 그대로 테스트 주도로 개발을 이끌어 나가는 것이다. 즉, 테스트를 먼저 작성하고 나서, 테스트가 정상적으로 돌아갈 때 까지 테스트를 하면서 코드를 작성하는

mingule.tistory.com

 

2)BDD

- Given, When, Then

- BDD는 시나리오를 기반으로 테스트 케이스를 작성하며 함수 단위 테스트를 권장하지 않는다

- 테스트 대상은 A 상태에서 출발하며(Given) 어떤 상태 변화를 가했을 때(When) 기대하는 상태로 완료되어야 한다. (Then), 또는 Side Effect가 전혀 없는 테스트 대상이라면 테스트 대상의 환경을 A 상태에 두고(Given) 어떤 행동을 요구했을 때(When) 기대하는 결과를 돌려받아야 한다. (Then)

- tdd에서 actual과 expected에 환경을 추가한 것 같음

 

 

3) DDD

- JAVA진영에서 파생되어 나온 개발 방법으로 context에 맞춘 함수들이 하나의 도메인안에 있어야 한다가 기본이다

- MTV, model = domain

- 하지만, DDD를 지키려고 하면 수많은 제약사항이 발생함. 우주 안에 또하나의 우주를 만들어야함.

- 객체안에는 필드가 있고 행동하게하는 메서드가 있다 -끝- 

- function과 method는 다르다

https://huisam.tistory.com/entry/DDD

 

DDD(Domain Driven Design) - 도메인 주도 설계란? 마이크로서비스의 관점에서

객체지향에서부터 도메인 주도 설계를 이해하기 위해서는 객체지향을 먼저 이해할 필요가 있습니다 객체지향에서의 핵심은 뭘까요? 객체지향에서의 핵심은 실세계의 객체(물건, 사람, 주문 ....

huisam.tistory.com

https://victorydntmd.tistory.com/117

 

객체 지향 프로그래밍( OOP ) 개념

1. 객체 지향 프로그래밍 ( Object Oriented Programing ) 1) 객체 객체란 말 그대로 대상을 나타내는 단어입니다. 예를 들어, 사람 개인 한 명 한 명을 모두 객체라 할 수 있고, 책 한 권 한 권을 객체라

victorydntmd.tistory.com

https://happycloud-lee.tistory.com/94

 

DDD 핵심만 빠르게 이해하기

마이크로서비스의 설계 방법론인 DDD(Domain Driven Design)에 대해 제가 가진 지식과 그간의 경험을 기반으로 정리하였습니다. 이 글을 읽기 전에 먼저 일하는 방식 변화를 이끌고 있는 애자일, 마이

happycloud-lee.tistory.com

 

 

+ JDD 주둥아리 주도 개발 

https://github.com/Lee-WonJun/JDD-Description

 

GitHub - Lee-WonJun/JDD-Description: Ju-Dung-A-Li Driven Development

Ju-Dung-A-Li Driven Development. Contribute to Lee-WonJun/JDD-Description development by creating an account on GitHub.

github.com

+ reference1)

https://happycloud-lee.tistory.com/261?category=8322466 

 

일하는 방식 변화 핵심만 빠르게 이해하기: 애자일, 마이크로서비스, 데브옵스, 클라우드

새로운 변화의 물결 내용 순서 마이크로서비스가 최근에 왜 주목 받고 있는지 거시적 관점인 일하는 방식 변화의 측면에서 이해하는 것이 목표입니다. 이를 위해 일하는 방식 변화가 왜 필요한

happycloud-lee.tistory.com

 

'Software Engineering' 카테고리의 다른 글

[Mac OS] Root Password 설정  (0) 2022.11.17
npm/yarn install  (0) 2022.11.17
[devops]Docker, jenkins  (0) 2022.09.10
[WSL] Ubuntu command  (1) 2022.09.10
[python web] Django (1)  (0) 2022.09.10