REST API 테스트 가이드

 

Summry

본 문서에서는 REST API 테스트 가이드를 정리한다.

POSTMAN, SWAGGER 등 다양한 툴을 이용하여 테스트 자동화를 수행하는것을 추천한다.

send me email if you have any questions.


테스트 접근 전략

API의 오픈 정도, 대상, 중요도에 따라서 테스트 설계 수준을 정한다.
실제 테스트를 진행하는 경우 기본 테스트와 응답코드 기반 테스트는 필수이다.

  • 레벨 1. 기본 테스트
    • 필수입력 값/모든 입력 값에 대한 기본적인 테스트
  • 레벨 2. 응답코드 기반 테스트
    • 스펙에 정의된 응답코드별 테스트
  • 레벨 3. 메소드 타입별 테스트
    • GET/POST/PUT/DELETE 방식에 따른 테스트
  • 레벨 4. 입력 파라미터에 따른 테스트
    • 입력 값의 타입, 코드형, 범위, 순서에 따른 테스트
  • 레벨 5. 비즈니스 흐름 기반 테스트
    • 보다 복잡한 정황에 따른 테스트

(공통) 인증, 인코딩, 타임존 등에 대한 테스트

1. 기본 테스트

기본 테스트는 API가 기대한 대로 정상 수행되는지 확인하는 가장 기본적인 테스트이다.

  1. 입력한 값을 제외한 나머지 파라미터들이 정해진 디폴트 값으로 정상 수행되는가.
    • ex) 게시글 작성 API의 경우 조회수 칼럼을 0으로 지정한 경우 실제로 0으로 생성되는가?
  2. 디폴트 값이 아닌 입력한 각 값들로 기능이 정상 수행되는가.
    • ex) 게시글 작성 API의 경우 입력한 게시글 제목과 내용이 잘 반영되어 생성되는가?

2. 응답코드 기반 테스트

스펙에 정의된 각 응답 코드가 발생하는 입력 값과 상황을 설정하여 테스트를 수행한다.
하나의 응답코드가 여러 상황에 따라 발생할 수 있는 경우 테스트 케이스를 추가한다.

400 error test case example

  1. 필수입력 파라미터가 누락되었는가.
    • ex) 게시글 작성 API의 경우 게시글 제목을 입력하지 않은 경우 400 return
  2. 파라미터 경계값 분석
    • ex) 게시글 작성 API의 경우 카테고리 번호 파라미터의 입력값을 1~10까지 정했다면 그 조건에 부합하는지 검사하고 아닌 경우 400 return
  3. 파라미터 타입에 맞지 않는 값을 입력하였는가
    • ex) 게시글 작성 API의 경우 조회수가 int가 아니라면 400 return

3. 메소드 타입별 테스트

그림1

4. 입력 파라미터에 따른 테스트

입력 값의 타입에 따른 테스트를 수행한다.

그림2

5. 비즈니스 흐름 기반 테스트

복잡한 정황을 고려하여 다른 API와의 호출 관계, 자원의 상태나 존재 유무에 따른 테스트를 수행한다.

  1. ex) 재고가 떨어진 제품에 대해 구매 요청시 현재 재고가 아닌 예약 주문의 수량이 증가하는지 확인
  2. ex) 비회원으로 주문하는 경우 게스트 ID가 잘 부여되어 수행되는지 확인