알렉스대디
2018. 1. 27. 00:15
2018. 1. 27. 00:15
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 - 성공
- 3xx - Redirection
- 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