[스프링 부트 핵심가이드] 테스트코드 의 작성 .✔

FeelingXD·2023년 4월 1일
0

북스터디

목록 보기
5/13
post-thumbnail

왜 테스트 코드를 작성해야할까 ?🤔

  1. 코드 품질을 보장해준다.( 메서드(함수)가 올바르게 작동하는지 서비스 이전단계에서 확인할수있다.)
  • TDD(테스트 주도 개발) 은 (여러 논란이있지만) 소프트웨어 개발에서 널리 받아들여지고 있고 테스트 작성은 코드의 품질을 보장하는데 도움이됩니다. Spring은 테스트를 쉽게 작성하고 (어노테이션 지원 ,Junit 지원 등) 테스트 작성으로 서비스 이전에 버그를 조기에 발견하고 소프트웨어가 의도대로 동작하는지 확인할수있습니다.
  1. 수동 테스트 노력감소
  • 테스트 작성시 실제 서비스 단의 함수내용이 바뀌어도 테스트내용으로 테스트를 진행할수있습니다. 이는 똑같은 함수 내용에대해서 다른 테스트의 작성등 번거로움을 줄이고 장기적으로는 생산성 향상에 도움을 줍니다.

그외 다양한 이유들로 TDD(테스트 주도개발) 방범론이 대중화 되어있다.

테스트 코드를 작성하는 방법

given -when -then

given

  • 테스트 수행전 테스트에 필요한 환경을 설정하는 단계입니다. 테스트에서 사용하는 변수를 정의하거나 Mock 객체를 통해 특정 상황에 대한 행동들을 정의합니다. (주어진 환경을 설계하는 단계)

when

  • 테스트의 목적이되는 부분으로 어떤경우의 테스트할지가 나오는 단계입니다. 실제 테스트 코드가 작성되며 테스트를 통한 값이 도출됩니다.

then

테스트의 마무리단계로 결과를 검증하는 단곙비니다. when 단계에서 나온 값을 검증하는작업이 포함됩니다. 결과값이 아니더라도 이 테스트를 통해 나온 결과를 검중해야한다면 이 단계에서 진행합니다.

좋은 테스트를 장성하는 5가지속성(F.I.R.S.T)

빠르게(Fast)

  • 테스트는 가능한 빠르게 수행되어야합니다. 테스트가 느리면 코드를 개선하는 작업이 느려지며 코드의 품질을 보장할수없습니다. 이에 테스트는 가능한 간결하고 가볍게 그리고 빠르게 실행될수있도록 작성됩니다.

고립된(Isolate)

  • 하나의 테스트 코드는 하나의 대상을 수행해야합니다. 각각 테스트코드는 서로 독립된 테스트를 진행해야하며 각테스트가 서로의 결과에 영향을주면 좋은테스트라고 할수없습니다.

반복 가능한(Repeatable)

테스트는 어떤환경에서도 반복가능하도록 작성해야합니다. 위의 isolate와 비슷하나 개발환경의 변화나 네트워크 연결여부와 상관없이 수행돼어야합니다.

자가검증(self-validating)

테스트는 그 자체만으로 테스트의 검증이 완료돼어야합니다. 테스트가 성공했는지 아니면 실패했는지 확인할수있는 코드가포함되어야합니다.

적시에(Timely)

테스트 코드는 테스트하려는 애플리케이션 코드를 구현하기 전에 완성돼어야합니다. 즉 애플리케이션 로직 작성이후 .릴리즈전에 테스트과정을 거쳐서 통과된이후 릴리즈해야합니다.

테스트 주도 개발의 효과

디버깅 시간의 단축

  • 테스트 코드기반으로 개발이 진행된다면 테스트코드단계에서 문제를 도출하고 버그를 찾는시간이 효과적으로 단축됨

생산성 햔상

  • 테스트 코드를 통해 지속적으로 애플린케이션의 구조를 검증받기때문에 리펙토링횟수를 줄일수있음

재설계 시간 단축

작성돼 있는 테스트 코드를 기반으로 코드를 작성하기에 테스트 코드를 조정하는것으로 설계를 개선할수있음

테스트 주도 개발의 문제

가장 큰 단점은 바로 생산성의 저하이다.

  • 개발 속도가 느려진다고 생각하는 사람이 많기 때문에 TDD에 대해 반신반의 한다. 왜냐하면 처음부터 2개의 코드를 짜야하고, 중간중간 테스트를 하면서 고쳐나가야 하기 때문이다. TDD 방식의 개발 시간은 일반적인 개발 방식에 비해 대략 10~30% 정도로 늘어난다.

읽어볼글

https://blogshine.tistory.com/186 - [TDD} 테스트코드 작성팁
https://www.youtube.com/watch?v=bJfbPWEMj_c&ab_channel=%EB%B0%B1%EA%B8%B0%EC%84%A0 - 백기선 스프링 제대로 공부했는지 5분안에 확인하기

profile
tistory로 이사갑니다. :) https://feelingxd.tistory.com/

0개의 댓글