if kakao 2020 의 kotest가 있다면 TDD 묻고 BDD로 가! 를 보고 요약한 자료입니다. 자세한 내용은 영상을 참고하세요.
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
해당하는 행위가 원하는 대로 시행되었는지 검증
예제 코드 저장소
Uploaded by Notion2Tistory v1.0.0