Why bdd?

2024, May 08    

To-do

  • 왜 cucumber를 사용하려고 하는지, 이점이 뭔지 파악하기
  • spring-context 하위에 작성하기
  • jenkins와 통합해서 테스트 자동화 작업
    • JenkinsFile에 cucumber 테스트 단계 추가하고,
    • 리포트 단계도 추가한다.

Background

  • 이미 junit5로 인터페이스 기반 테스트 케이스가 작성되어있는 상태
  • API 인수테스트는 karate로 시나리오가 작성되어 일배치로 자동화되어있다.

Why BDD?

  • 그렇다면 추가적으로 왜 bdd를 적용해야하는가?에 대한 설명이 필요했다.
    • 서드파티 API에 대한 테스트 시나리오가 존재하지 않아서, 항상 수동으로 체크하고 있었다.
    • 그래서 서드파티 API를 개발하지 않으면, 비즈니스 도메인을 쉽게 이해하기 어려운 점이 있었다. (학습비용 큼)

karate vs cucumber

  • cucumber는 spring context와의 통합을 지원하고 있다. (karate는 명시적이진 않지만 주입시켜서 동작하게 할 수 있긴하다.)
  • cucumber가 자연어 스타일의 특수 구문을 제공하기 때문에, 비개발자도 시나리오를 알 수 있다.
  • karate는 rest api 테스트에 특수되어있다. cucumber는 어떠한 종류의 테스트도 가능하기 때문에 인수테스트로도 커버가 가능하다. → 내가 하려는 목적
  • cucumber는 junit과 통합이 가능하다.
  • cucumber는 Gherkin 언어를 사용하기 때문에 비 개발자도 쉽게 이해할 수 있으며, 테스트 코드와 도메인 언어 간의 분리로 코드 유지보수 및 확장이 편리하다.

try1. spring context + junit5 + cucumber

try2. bddmockito 사용

Conclusion

  • 결론은, 좀더 bdd스타일을 적용해서 junit테스트케이스에 bddmockito를 적용하고 잘 사용해보는 것으로 결정했다. 🤣

Reference