dev_beomgeun
꾸준하게 차근차근
dev_beomgeun
전체 방문자
오늘
어제
  • 분류 전체보기 (170)
    • 전공 (0)
      • 운영체제 (0)
      • 알고리즘 (0)
      • 자료구조 (0)
      • 데이터베이스 (0)
      • 네트워크 (0)
    • 개발 공부 (32)
      • 웹 (6)
      • 리눅스 (4)
      • 머신러닝 (1)
      • 스프링 (17)
      • Git (2)
      • AWS (2)
    • 개발 도서, 강의 (3)
      • 스프링 입문을 위한 자바 객체지향의 원리와 이해 (0)
      • 모든 개발자를 위한 HTTP 웹 기본 지식(김영한.. (2)
      • 스프링 부트와 AWS로 혼자 구현하는 웹서비스 (1)
    • 문제 풀이 (118)
      • 백준 알고리즘 (72)
      • 프로그래머스 알고리즘, SQL (38)
      • Hackerrank SQL (8)
    • 프로젝트 기록 (4)
      • 캡스톤 종합설계 (4)
      • 반려하루 프로젝트 (0)
    • 활동 기록 (12)
      • 네이버 부스트캠프 (7)
      • 취준 & 코테 (4)
      • 소프트웨어 마에스트로 13기 (1)
    • 이것저것 (1)

블로그 메뉴

  • 홈
  • 깃허브
  • 링크드인
  • 방명록

공지사항

인기 글

태그

  • Hackerrank
  • BFS
  • 프로그래머스 SQL
  • 네이버 부스트캠프
  • 일기
  • 부스트캠프
  • Baekjoon
  • 백준
  • dp
  • 반성
  • 기록
  • 백준 DP
  • 회고
  • 프로그래머스
  • 서블릿
  • AI Tech
  • c++
  • 그래프탐색
  • HackerRank mysql
  • 스프링

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
dev_beomgeun

꾸준하게 차근차근

개발 도서, 강의/스프링 부트와 AWS로 혼자 구현하는 웹서비스

2. 스프링 부트에서 테스트 코드를 작성하자

2021. 10. 1. 22:14
728x90

TDD(Test Driven Develop)과 단위 테스트(Unit Test)는 다르다

 

1. TDD는 테스트가 주도하는 개발로 테스트 코드를 먼저 작성하는 것으로 시작한다.

  • 항상 실패하는 테스트를 먼저 작성
  • 테스트가 통과하는 프로덕션 코드를 작성
  • 테스트가 통과하면 프로덕션 코드를 리팩토링

2. 단위 테스트는 TDD의 첫 번째 단계인 기능 단위의 테스트 코드를 작성하는 것을 의미한다.

또한 TDD와 달리 무조건 테스트 코드를 먼저 작성해야 하는 것도 아니고, 리팩토링도 포함되지 않는다.

순수하게 테스트 코드만 작성하는 것을 의미.


그렇다면 테스트 코드는 왜 작성해야 할까?

 

  • 단위 테스트는 개발단계 초기에 문제를 발견하게 도와준다.
  • 개발자가 나중에 코드를 리팩토링하거나 라이브러리 업그레이드 등에서 기존 기능이 올바르게 작동하는지 확인할 수 있다.
  • 단위 테스트는 기능에 대한 불확실성을 감소시킬 수 있다.
  • 단위 테스트는 시스템에 대한 실제 문서를 제공. 단위 테스트 자체가 문서로 사용이 가능.

우리가 개발하는 실제 예시와 비교

  1. 코드를 개발하고
  2. 프로그램(Tomcat)을 실행한 뒤
  3. Postman과 같은 API 테스트 도구로 HTTP 요청하고
  4. 요청 결과를 로그나 프린트를 통해 검증한다.
  5. 결과가 다르면 프로그램을 중지하고 코드 수정하고 위의 과정을 반복한다.

위와 비교해서 테스트 코드의 장점

  • 테스트 코드를 작성하면 프로그램을 내렸다가 다시 실행할 필요가 없다.
  • 로그나 프린트를 통해 눈으로 검증할 필요가 없고, 자동 검증이 된다.
  • 개발자가 만든 기능을 안전하게 보호
    • 기존의 A 기능에 B기능을 추가
    • 기존에 잘 되던 A 기능에 문제가 생김을 발견
    • 규모가 커지면 하나의 기능을 추가할 때마다 서비스의 모든 기능을 테스트할 수 없다.
    • 기존의 A 기능을 테스트하던 코드를 통해 기존 기능이 잘 작동되는지 테스트가 가능하다.

자바의 유닛 테스트 프레임워크는 JUnit이다.

 


스프링 부트는 내장 WAS를 포함하고 있다.

  • 내장 WAS란 외부에 별도의 Web Application Server를 두지 않고, 애플리케이션을 실행할 때 내부에서 WAS를 실행하는 것을 의미
  • 이렇게 되면 항상 서버에서 톰캣을 설치할 필요가 없게 되고, 스프링 부트로 만들어진 Jar 파일로 실행하면 된다.

장점

  • 언제 어디서나 같은 환경에서 스프링 부트를 배포할 수 있다.
  • 외장 WAS를 사용할 경우 모든 서버는 WAS의 종류와 버전, 설정을 일치해야 한다.
  • 서버가 한 대가 아니라, 여러 대인 상태에서 버전이나 설정을 바꿔줘야 한다면?
  • 새로운 서버를 추가한다면? -> 매번 모든 서버의 설정을 일치시켜야 한다.

 

출처 : 스프링 부트와 AWS로 혼자 구현하는 웹 서비스

https://github.com/jojoldu/freelec-springboot2-webservice

 

GitHub - jojoldu/freelec-springboot2-webservice

Contribute to jojoldu/freelec-springboot2-webservice development by creating an account on GitHub.

github.com

728x90
저작자표시 비영리 변경금지 (새창열림)
    dev_beomgeun
    dev_beomgeun
    백엔드 개발을 하며 얻은 지식과 경험을 공유합니다. 현재 카카오페이에서 백엔드 엔지니어로 일하고 있습니다.

    티스토리툴바