[테스트코드] 통합테스트

Welcome to Seoyun Dev Log·2022년 8월 26일

테스트코드

목록 보기
4/7

통합 테스트(Integration Test)

: 사용하지 않는 것을 권장한다.

통합테스트는 개발자가 변경할 수 없는 부분(ex: 외부라이브러리)까지 묶어서 검증할 때 사용
이는 DB에 접근하거나 전체 코드와 다양한 환경이 제대로 작동하는지 확인하는데 필요한 모든 작업 수행
하지만 통합 테스트가 응용 프로그램이 완전하게 작동하는 것을 무조건 증명하지는 않는다.

  • 장점
    - 단위 테스트에서 발견하기 어려운 버그를 찾을 수 있다.
  • 단점
    - 단위 테스트보다 많은 코드를 테스트하기 때문에 신뢰성이 떨어질 수 있다.
    • 어디서 에러가 발생했는지 확인하기 쉽지 않아 유지보수하기 힘들다.
    • 사용하는 곳에서 어떻게 사용하는 가에 따라서 달라지기 때문에 통합테스트를 꼭 필요한 경우가 아니면 사용하지 않는다.

단위 테스트(Unit Test)

: 도메인 테스트라고도 부른다

응용 프로그램에서 테스트 가능한 가장 작은 소프트웨어를 실행하여 예상대로 동작하는지 확인하는 테스트

단위 테스트에서 테스트 대상 단위의 크기는 엄격하게 정해져있지 않지만,
일반적으로 클래스 또는 메소드 수준으로 정해진다.
단위의 크기가 작을수록 단위의 복작성이 낮아지는데 테스트를 활용하여 동작을 표한하기 더 쉬워진다.

즉, 테스트 대상 단위의 크기를 작게 설정해서 단위 테스트를 최대한 간단하고 디버깅하기 쉽게 작성해야한다.
소프트웨어 내부 구조나 구현 방법을 고려하여 개발자 관점에서 테스트한다
그러므로 단위 테스트는 소프트웨어 내부 코드에 관련한 지식을 반드시 알고 있어야하는 화이트박스테스트이다.
단위 테스트는 TDD(테스트 주도 개발)와 함께 할 때 특히 더 강렬해진다.

  • 상황별로 나누어 테스트 코드를 작성한다.
    ex) 자동차가 전진한다. 자동차가 멈춘다. (...)

인수 테스트(Acceptance Test)

: 비즈니스 쪽에 초점을 둔다.

사용자 스토리(시나리오)에 맞춰 수행하는 테스트
프로젝트에 참여한 사람들(ex. 기획자, 클라이언트 대표, 개발자 등)이 토의해서 시나리오를 만들며
소프트웨어 내부 코드에 관심을 가지지않는 블랙박스 테스트이다.

  • 실제 사용자 관점에서 테스트할 때 주로 E2E(End-to-End) 형식을 이용해서 확인
  • java에서는 RestAssured, MockMvc 같은 도구를 활용하여 인수 테스트를 작성할 수 있다.
profile
하루 일지 보단 행동 고찰 과정에 대한 개발 블로그

0개의 댓글