Open API란?

  • 다양한 서비스와 컨텐츠 그리고 데이터를 좀 더 쉽게 이용할 수 있도록 공개한 인터페이스 (application pragramming interface)
  • 내부를 몰라도 Open API를 통해 해당 서비스의 기능 및 데이터를 쉽게 이용할 수 있다. 

Rest ?

  • 기존의 soap, wsdl 기반의 웹서비스를 대체하는 방식
  • CURD를 위해 Http method 를 사용
  • stateless 임 -> 세션, 쿠키값 등을 유지하지 않음
  • 디렉토리 구조와 같은 URI를 통해 리소스 접근하고, XML/Json 데이터 구조를 통해 데이터를 전송함
  • 구성
    • HTTP URI (Resource) + HTTP Method + Message (json)
  • Method
    • GET (Read) / POST (Create) / PUT (Update) / DELETE (Delete)
  • HTTP 응답코드
    • 2xx - 성공
      • 200 OK
    • 3xx - Redirection 
      • 304 Not Modified
    • 4xx - Client Error
      • 400 Bad Request
      • 401 Unauthorized
      • 403 Forbidden
      • 404 Not Found
    • 5xx - Server Error
      • 500 Internal Server Error
      • 503 Service Unavailable
      • 504 Gateway Timeout

테스트 접근 방법

  • open api의 사용자 관점에서 접근하되, sql query라고 생각하고 접근한다.
  • api 스펙 등 문서 기반으로 접근한다.
  • 전략
    • method type별 테스트 
      • GET : 조회 결과가 있을때, 없을때 
      • POST : 중복 생성이 불가한 경우를 고려한 중복 등록 시도
      • PUT : 존재하지 않는 데이터에 대한 수정 시도, 중복이 불가한 PK값으로 수정 시도
      • DELETE : 존재하지 않는 데이터 삭제 시도 등.
    • 응답코드 확인 테스트
      • 문서에 존재하는 응답코드 별로, 응답코드를 발생시키는 테스트 수행
      • 예) 필수 파라미터 누락, 존재하지 않는 데이터 조회 등
    • 파라미터에 대한 입력 예외 케이스 
      • String type의 경우 : 빈문자, 공백문자, 앞뒤 공백문자, 특수문자, 긴 문자열 등
      • 숫자의 경우 : 문자, int 범위를 넘어서는 숫자, 음수, 0 등
      • 날짜/시간 등 : 시간 연도 구분을 넘어가는 숫자 등 (25시간, 13월 등)
      • 정의된 코드 값 : 정의되지 않은 값, 대소문자 구분 등
      • 범위형 변수 : 시작과 끝, 시작과 끝을 벗어난 값 등
    • 비즈니스 흐름기반, 혹은 사용자 시나리오 기반 테스트 수행
      • api 하나로 기능을 확인할 수 없어, 여러 api를 호출해야 기능 하나를 확인할 수 있는 경우
      • 사용자 권한에 따라 다르게 동작해야 하는 경우
      • 여러 조건에 따라 다르게 동작해야 하는 경우 등.
    • 보안 테스트 수행
      • Parameter fuzzing
      • SQL Injections
      • Username harvesting
      • Cross-site scripting
      • External entities
      • Schema invalid XML
      • Large XML document
      • Malformed XML


+ Recent posts