Unit Test(단위 테스트)

uglyduck.dev·2020년 9월 29일
1

개념 모아 🗂

목록 보기
8/40

정의

  • 소프트웨어의 개별 단위 / 구성 요소를 테스트하는 수준의 소프트웨어 테스트

목적

  • 소프트웨어의 각 단위가 설계된 대로 작동하는지 확인(검증)
  • 개발 단계에서 최소 단위 테스트를 수행하여 시간 절약

단위의 규정의 고찰

  • 객체 지향 디자인은 클래스를 단위로 취급하는 경향이 있으며, 절차적 또는 기능적 접근 방식은 단일 기능을 하나의 단위로 간주할 수 있음
  • 단위가 클래스라는 개념으로 시작하나, 밀접하게 관련된 많은 클래스도 하나의 단위로 취급할 수 있음

장점

  • 단위 테스트는 개발 주기 초기에 버그를 수정하고 비용을 절감하는데 도움을 줌
  • 개발자가 코드베이스를 이해하고 빠르게 변경할 수 있도로 도와줌
  • 좋은 단위 테스트는 프로젝트 문서로 사용됨
  • 코드 재사용에 도움을 줄 수 있음
  • 모듈 식 특성으로 인해 다른 부분이 완료되기를 기다리지 않고 프로젝트의 일부를 테스트할 수 있음

단점

  • 프로그램의 모든 오류를 포착 할 수는 없음
  • 통합 오류나 광범위한 시스템 수준 오류를 포착할 수 없음

단위 테스트 지원 도구(xUnit)

  1. JUnit : Java 프로그래밍 언어에 사용되는 테스트 도구. 데이터를 테스트 한 다음 코드에 삽입
  2. NUnit : 모든 .net 언어에 널리 사용되는 단위 테스트 프레임 워크. 병렬로 실행할 수 있는 데이터 중심 테스트 지원
  3. JMockit : 오픈 소스 단위 테스트 도구. 기록 및 검증 구문으로 API를 Mocking 할 수 있음
  4. EMMA : 코드 분석 오픈 소스 툴 킷. JAVA 기반 이므로 외부 라이브러리 종속성이 없으며 소스 코드에 액세스 할 수 있음
  5. PHPUnit: PHP 프로그래머를 위한 단위 테스트 도구

단위 테스트 규칙

  1. 단위 테스트 케이스는 독립적이여 한다

    • 클래스가 데이터베이스에 의존하는 경우 데이터베이스와 상호 작용하여 클래스를 테스트하는 사례를 작성하지 말고 해당 데이터베이스 연결 주위에 추상 인터페이스를 작성하고 모의 객체로 해당 인터페이스를 구현해야 함
  2. 모든 것에 대한 테스트 사례를 만들지 마라

    • 시스템 동작에 영향을 주는 테스트에 중점을 둠
  3. 테스트 환경에서 개발 환경을 분리해라

  4. 프로덕션 데이터와 가까운 테스트 데이터를 사용해라

  5. 결함을 수정하기 전에 결함을 노출시키는 테스트를 작성해라

    • 먼저, 결함을 올바르게 수정하지 않으면 나중에 결함을 잡을 수 없다.
    • 둘째, 테스트 스위트가 더욱 포괄적이다.
    • 셋째, 이미 결함을 수정 한 후에 테스트를 작성하기에는 너무 늦었다.

Reference

profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글