테스트 코드와 TDD

공부하는 감자·2024년 5월 9일
0

Testing

목록 보기
1/1

Testing 이란?

Software Test

  • 개발자들이 말하는 ‘테스트’는 Software Test를 말한다.
  • 어플리케이션 제품이나 서비스의 품질을 확인하고 숨어있는 소프트웨어의 버그를 찾는데 사용한다.
  • 즉, 제품이 원하는 대로(예상하는 대로) 동작하는지 검증하고 확인하는 것이다.
  • 제품은 다음이 될 수 있다.
    • 함수
    • 특정한 기능
    • UI
    • 성능
    • API 스펙
  • 목표와 플랫폼, 환경에 따라 다양한 테스트가 있다.

TDD

  • Test-driven development (테스트 주도 개발)
  • 개발(코드 작성) 전에 테스트 코드를 먼저 작성하는 방식이다.
  • 어떤 특정한 기술, 라이브러리나 프레임워크가 아니라 개발 방식, 개발 방법론 중 하나이다.
  • TDD는 다음 절차를 반복한다.
    1. 테스트 코드를 작성한다. (실패)
    2. 테스트가 성공할 수 있을 만큼 코딩을 한다. (성공)
  • 그 다음, 코드를 개선하고 퀄리티를 올리고 리팩토링을 올릴 수 있다.
  • 작성하고자 하는 요구사항 분석과 명확한 이해가 필요하다.
    • 즉, 요구사항(목표)에 대해 점검하고 사용자 입장에서 코드를 작성할 수 있다.
    • 구현보다는 인터페이스에 집중해서 작성해 나갈 수 있으므로 코드의 퀄리티가 향상된다.
    • 시스템의 전반적인 설계가 향상된다.
    • (개발을 조금씩 해가므로) 개발 집중력이 향상된다.

블랙박스 vs 화이트박스

테스트는 크게 두 가지로 나누어 본다.

  • 블랙박스 테스트는 기능 테스트를 말한다. → 기능 자체가 되고 안되고
    • 단위 테스트 - 함수 레벨
      • ex. sum 함수를 테스트한다면 입력값을 넣었을 때 출력값이 잘 나오는지
      • 코드 커버리지를 주로 보게 된다.
    • 통합 테스트 - 시나리오 기반 테스트
      • 연동 테스트 : 단말에서 호출해본다던지

      • APP의 기능을 사용자 시나리오 기반으로 리스트업 하고(Testcase) 테스트한다.

        1) QA 팀에서 실제 테스트를 수행하는 방법

        2) 웹/앱을 UI 관점에서 테스트하는 방법(셀레니움처럼)이 있다.

        3) API 테스트하는 방법 → API가 여러 개 엮여서 하나의 기능처럼 동작하면 따로 다 정리한다. SoapUI ?

    • 회귀 테스트 - 수정/기능
      • 수정 혹은 기능 추가가 된다면 기존 기능에도 문제가 없는지 테스트
      • 단위/통합 테스트를 반복적으로 수행
    • 성능 테스트
      • 트래픽을 API 별로 퍼센트를 지정하고(몇 퍼센트씩 호출할지 배분) 스레드를 지정해서 동시 다발적으로 호출한다.
      • 이때 정상인지, CPU나 메모리에 문제는 없는지 확인한다.
      • 병목 현상이 일어나는지 않는지 확인하고, 용량을 산정하는데 중요하다.
  • 화이트박스 테스트는 소스 레벨의 테스트를 말한다.
    • code review
    • code inspection

Reference

테스트 코드와 TDD 🧪(feat. 프론트엔드, 백엔드를 위한 테스트 코드)

2년간 개발 프로젝트 현장에서 수행한 소프트웨어 테스트 방법론 말씀드립니다~ 10분이면 테스트 전체 조망 (feat. 소프트웨어 개발 현장에서)

profile
책을 읽거나 강의를 들으며 공부한 내용을 정리합니다. 가끔 개발하는데 있었던 이슈도 올립니다.

0개의 댓글