DEV

if kakao 2020 : kotest가 있다면 TDD 묻고 BDD로 가! 요약

블린더르 2020. 11. 21. 20:39
if kakao 2020 의 kotest가 있다면 TDD 묻고 BDD로 가! 를 보고 요약한 자료입니다. 자세한 내용은 영상을 참고하세요.
if(kakao)2020
오늘도 카카오는 일상을 바꾸는 중
https://if.kakao.com/session/106#mainContent

TDD

코드를 작성하고 테스트 케이스를 작성하는 것이 TDD가 아니다.

테스트 케이스가 우선 그 다음 코드를 작성 하는 것이 TDD 라고 할 수 있다.

장점

Testable Code 란 테스트가 가능한 코드를 말한다.

모듈 크기를 줄이는 설계를 요구하고 커플링을 작게 만들어 유지보수를 쉽게 만들 수 있다.

왜 TDD를 안할까?

대부분 테스트 작성의 장점과 TDD의 장점을 알지만 TDD를 사용함에 있어서 작성하는 비용 때문에 사용하지 않는다.

필요성 < 비용이기 때문이다.

테스트를 쉽게 작성하는 방법이 있을까?

상상해서 만드는 것보다 이미 작성된 요구 사항과 기획서가 테스트가 된다면 편할 것이다.

이것이 BDD 이다.

BDD 작성

Given: 주어진 환경

When: 행위

Then: 기대결과

로그인 상태 / 버튼을 누른다 / 결과가 나온다

Given / When / Then

TDD, BDD 차이

테스트 케이스 목적에 관해서 차이가 있다

TDD: 기능 확인 / add(1,1) 이 2인지 확인

BDD: 행위 확인 / 사용자가 = 를 눌렀을 때 1+1 의 값 2 가 화면에 표시되는지 확인

BDD는 TDD에서 파생되었고 시나리오 검증이 가능하다.

BDD에서 사용하는 모듈은 TDD로 검증이 된다.

둘중 하나만 쓰는 것이 아닌 둘 다 사용하여 상호보완적으로 사용한다.

BDD 테스트 케이스 작성시에 기획 누락을 찾을 수 있다.

kotest

BDD 와 TDD 스타일로 사용 가능

BehaviorSpec

Given / When / Then 구조를 지원하는 BDD 용 스타일

FeatureSpec

Feature/ Scenario 구조를 지원하는 BDD 용 스타일

AnnotationSpec

JUnit 형태의 Testcase 작성을 하게 해주는 TDD 용 스타일

ExpectSpec

DSL 로 Testcase 작성을 하게 해주는 TDD 용 스타일

Mockk

kotest 와 잘 어울리는 라이브러리

mocking

mock을 생성하여 어떠한 행위를 할 것인지에 대하여 사전 정의하여 사용하며 외부 서비스의 사용 등 에 사용한다.

verify

해당하는 행위가 원하는 대로 시행되었는지 검증

예제 코드 저장소

harry-jk/ifkakao-2020-code
Studio BDD/TDD example code GitHub is home to over 50 million developers working together to host and review code, manage projects, and build software together. Millions of developers and companies build, ship, and maintain their software on GitHub - the largest and most advanced development platform in the world.
https://github.com/harry-jk/ifkakao-2020-code

반응형