테스트 방식

박세현·2024년 10월 13일
0

추가공부

목록 보기
10/12
post-thumbnail

테스트 방식

1. API 테스트

  • API 테스트는 시스템 간의 상호작용을 확인하는 테스트로, 주로 백엔드의 기능을 검증합니다. 데이터 처리, 요청-응답, 비즈니스 로직 등을 확인하는 데 사용됩니다.

  • API 테스트는 소프트웨어의 백엔드 로직을 검증하는 테스트 방식으로, 애플리케이션의 클라이언트와 서버 간의 통신을 중점적으로 테스트합니다. RESTful API나 GraphQL과 같은 API 요청에 대한 응답이 올바른지, 비즈니스 로직이 제대로 처리되는지를 검증하는 방식입니다.

API 테스트는 주로 다음과 같은 것을 검증합니다

  • 요청에 대한 응답 상태 코드 (예: 200 OK, 404 Not Found)
  • 요청에 대한 응답 본문 (Response Body) 확인
  • 성능 및 응답 시간 측정
  • 인증 및 권한 처리

1) API 테스트 수행 방법

  • Postman
    API의 요청과 응답을 직접 테스트할 수 있는 도구입니다. 각종 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용해 API의 동작을 확인할 수 있습니다.
  • Jest + Supertest
    JavaScript/Node.js 환경에서 API 테스트를 자동화할 수 있습니다. Supertest는 HTTP 요청을 쉽게 테스트할 수 있게 해줍니다.
  • JUnit + RestAssured
    Java(Spring) 환경에서 RESTful API를 테스트하는 데 유용한 도구입니다.

2) API 테스트 수행 절차

2-1) API 엔드포인트 정의

  • 테스트하려는 API의 엔드포인트(URL)를 정합니다. 예를 들어, POST /users/login API 엔드포인트가 있을 수 있습니다.

2-2) 입력 데이터 준비

  • API에 요청할 파라미터나 본문(body) 데이터를 준비합니다. 이때 잘못된 데이터를 통해 예외 처리도 검증해야 합니다.

2-3) API 호출

  • 테스트 케이스에서 준비한 입력 데이터를 사용하여 API를 호출합니다. 이때 HTTP 메서드(GET, POST, PUT, DELETE 등)를 사용해 요청을 전송합니다.

2-4) 응답 확인

  • API가 반환하는 응답을 확인합니다. 응답 코드(200, 400, 500 등)와 응답 데이터(JSON, XML 등)를 비교해 올바르게 동작하는지 확인합니다.

2-5) 테스트 자동화

  • Postman, JUnit, REST Assured와 같은 도구를 사용하여 API 테스트를 자동화할 수 있습니다.

3) API 테스트 도구

  • Postman
    API 요청을 쉽게 테스트하고 자동화할 수 있는 도구로, 요청을 보내고 응답을 확인할 수 있습니다.
  • REST Assured
    Java 기반으로 RESTful API 테스트를 지원하는 라이브러리로, 코드를 통해 API 테스트를 자동화할 수 있습니다.
  • JUnit/Mockito
    단위 테스트 도구로, API의 비즈니스 로직을 테스트할 때 주로 사용합니다.

4) API 테스트의 장점

  • 백엔드 로직 검증
    API 테스트는 클라이언트와 독립적으로 서버 로직을 검증할 수 있습니다.
  • 빠른 피드백
    UI 테스트보다 더 빠른 속도로 실행할 수 있어, 서버의 동작을 신속하게 확인할 수 있습니다.
  • 자동화 용이성
    코드를 통해 API 테스트를 쉽게 자동화할 수 있어 반복적인 테스트에 적합합니다.

2. UI 테스트

  • UI 테스트는 애플리케이션의 사용자 인터페이스가 예상대로 작동하는지를 확인합니다. 주로 프론트엔드를 검증하며, 사용자 상호작용을 통한 테스트가 이루어집니다.

  • UI(User Interface) 테스트는 소프트웨어의 프론트엔드 부분, 즉 사용자 인터페이스가 제대로 동작하는지 검증하는 테스트 방식입니다. UI 테스트는 사용자의 시각적인 상호작용이 기대하는 대로 동작하는지 확인하며, 주로 버튼 클릭, 입력 필드, 화면 전환 등의 기능을 테스트합니다.

UI 테스트는 주로 다음을 검증합니다

  • 버튼, 링크, 폼과 같은 UI 요소가 정상적으로 동작하는지 확인
  • 입력 값에 대한 검증 및 오류 처리
  • 레이아웃 및 화면 표시가 요구 사항에 맞게 구현되었는지 확인
  • 다양한 브라우저에서 UI가 일관되게 작동하는지 확인 (크로스 브라우징 테스트)

1) UI 테스트 수행 방법

  • Selenium
    웹 브라우저를 자동으로 제어하여 UI 테스트를 수행합니다. 브라우저에서 직접 버튼을 클릭하거나 폼을 제출하는 등의 작업을 자동화할 수 있습니다.
  • Cypress
    모던 웹 애플리케이션을 위한 프론트엔드 테스트 도구로, 빠르고 직관적인 UI 테스트를 지원합니다.
  • React Testing Library
    React 컴포넌트의 동작을 테스트하는 도구입니다. 사용자가 컴포넌트와 상호작용하는 방식을 흉내내어 테스트를 수행합니다.

2) UI 테스트 수행 절차

2-1) 테스트 시나리오 정의

  • 사용자가 실제로 애플리케이션을 사용하는 방식에 맞춰 테스트 시나리오를 정의합니다. 예를 들어, 로그인 화면에서 올바른 정보를 입력하고 로그인 버튼을 누르는 과정입니다.

2-2) 요소 선택

  • UI의 특정 요소(버튼, 입력 필드 등)를 선택하여 테스트합니다. 요소 선택은 주로 CSS 선택자, ID, 클래스명 등을 기반으로 이루어집니다.

2-3) 동작 수행

  • UI 상에서 버튼 클릭, 텍스트 입력 등의 동작을 수행합니다.

2-4) 결과 확인

  • 사용자가 예상한 결과가 실제로 UI에 나타나는지 확인합니다. 예를 들어, 로그인 성공 후에는 메인 페이지로 이동하는지, 올바른 오류 메시지가 출력되는지 확인합니다.

2-5) UI 테스트 자동화

  • Selenium, Cypress, Puppeteer 등의 도구를 사용해 UI 테스트를 자동화할 수 있습니다.

3) UI 테스트 도구

  • Selenium
    웹 애플리케이션의 동작을 자동으로 테스트하는 오픈 소스 도구로, 다양한 브라우저와 프로그래밍 언어를 지원합니다.
  • Cypress
    자바스크립트로 작성된 현대적 웹 애플리케이션 테스트를 위한 도구로, UI 테스트를 쉽고 빠르게 작성할 수 있습니다.
  • Puppeteer
    헤드리스 크롬 브라우저를 제어하는 Node.js 라이브러리로, 브라우저에서 UI 상호작용을 자동화하는 데 사용됩니다.

4) UI 테스트의 장점

  • 사용자 경험 검증
    실제 사용자 인터페이스가 올바르게 동작하는지 확인할 수 있어, 사용자 경험(UX)을 보장할 수 있습니다.
  • 브라우저 호환성 테스트
    여러 브라우저에서 UI가 동일하게 동작하는지 확인할 수 있습니다.
  • 자동화 가능
    UI 상의 반복적인 작업을 자동화해 효율적인 테스트가 가능합니다.
  • API 테스트는 백엔드 로직과 서버 간의 데이터 흐름을 중점적으로 검증하는 테스트 방식이며, 주로 성능과 정확성을 확인합니다.
  • UI 테스트는 프론트엔드에서 사용자가 상호작용하는 화면을 테스트하며, 사용자의 시각적 경험을 검증하는 데 중점을 둡니다.

3. 자동화 테스트 (Automation Testing)

  • 자동화 테스트는 수작업 없이 테스트를 반복 실행할 수 있도록 도구와 스크립트를 사용하여 테스트하는 방식입니다. 위에서 언급한 API 테스트와 UI 테스트 모두 자동화할 수 있습니다. 테스트 자동화를 통해 테스트 시간이 줄어들고, 코드 변경 후 발생할 수 있는 문제를 빠르게 확인할 수 있습니다.

  • CI/CD 파이프라인에서 자동화된 테스트를 주기적으로 실행하여 코드가 배포되기 전에 문제를 발견할 수 있습니다.

  • Jenkins, GitHub Actions, CircleCI와 같은 도구를 통해 자동화된 테스트를 통합할 수 있습니다.

4. 매뉴얼 테스트 (Manual Testing)

  • 매뉴얼 테스트는 도구나 스크립트를 사용하지 않고, 사람이 직접 소프트웨어의 기능을 테스트하는 방식입니다. UI가 복잡하거나 새로운 기능을 추가했을 때, 예외 상황을 테스트할 때 주로 사용됩니다.

  • 매뉴얼 테스트는 자동화된 테스트가 놓칠 수 있는 사용자 경험(UX)을 개선하는 데 큰 도움이 됩니다.

5. 종류별 테스트 적용 예시

  • API 테스트: 백엔드 서버의 RESTful API가 제대로 동작하는지 확인 (로그인, 회원가입 API 등).
  • UI 테스트: 사용자가 웹 페이지에서 버튼을 클릭하거나 폼을 제출할 때, 화면에 오류 없이 제대로 표시되고 작동하는지 확인.
  • 자동화 테스트: 애플리케이션의 모든 주요 기능을 CI/CD 파이프라인에서 자동으로 테스트하여 빠른 피드백 제공.
  • 매뉴얼 테스트: 사용자가 새로운 기능을 경험할 때의 인터랙션을 직접 테스트하여 UI/UX 개선.

6. 기타 테스트 방식

1) E2E 테스트 (End-to-End Test)

  • 전체 워크플로우를 테스트하는 방식으로, API와 UI를 포함한 시스템 전체를 통합적으로 테스트합니다. 사용자 관점에서 소프트웨어가 처음부터 끝까지 정상적으로 동작하는지 검증하는 테스트입니다.
  • E2E 테스트는 UI와 API의 상호작용을 모두 검증하므로, 전체 시스템의 통합성을 보장할 수 있습니다.

2) 단위 테스트 (Unit Test)

  • 단일 기능 또는 모듈이 제대로 동작하는지를 검증합니다. API의 비즈니스 로직이나 프론트엔드의 개별 컴포넌트 등을 독립적으로 테스트하는 방식입니다.
  • 단위 테스트는 빠르고, 코드 변경 시 영향을 최소화할 수 있는 장점이 있습니다.
profile
귤귤

0개의 댓글