POST MAN
Postman 이란?
Postman은 개발한 API를 테스트하고, 테스트 결과를 공유하여 API 개발의 생산성을 높여주는 플랫폼 입니다.
위 사이트에 가입 후 하단에 윈도우 용으로 다운로드를 합니다.
실제로 게임 QA로써 API 자체를 테스트하는 경우는 없지만 과연 게임이외에 다른 플랫폼에서는 어떠한 툴을 사용하는지 잠깐 파보기로 했습니다.
(나중에 관련된 툴을 만들 수도 있을지도??)
예전에 앱을 취미로 개발한 적도 있었기 때문에 다른 API자체를 불러오고 사용하는데는 큰 거부감은 없었고 (생각해보면 툴을 만들때 얼마나 많은 라이브러리와 제공 API를 보았는가..)다른 QA분들도 따라할 수 있도록 실제 API를 테스트하는 간단한 사용법을 쓰고자 합니다.
1. 공용 오픈 API 신청
코시국이니 국가에서 제공하는 코로나 관련 공용 API를 신청하여 사용해보도록 합시다.
우선 아래 공공데이터 포털에 원하는 API를 찾아 활용 신청을 진행합니다.
https://www.data.go.kr/index.do
그리고 원하는 오픈 API를 선택하고 활용신청을 합니다.
저는 예방접종 센터 관련된 API를 선택하였습니다. (앱을 만들려고 했는데 이미 어느 천재분이 벌써 만드셨더군요..)
해당 활용신청을 완료하고 늦으면 몇일 정도 지나면 인증키를 확인 할 수 있게 같이 전달해 줍니다.
아까와 같은 오픈 API 탭 하단으로 스크롤 하면 활용 명세 관련해서 가이드도 있고 API 목록으로 신청한 OpenAPI 호출관련 테스트도 해볼 수 있습니다.
거의 대부분 사용법과 결과를 알려주기 때문에 프로그래밍에 약간에 지식만 있다면 정보를 가져오고 사용하는데 큰 문제가 없을 것 입니다.
(단, 여기서도 발급받은 인증키를 설정해야 합니다.)
2. 포스트맨에 발급받은 API 테스트 인증키 설정
우선 발급받은 API의 인증키를 설정해야 합니다.
물론 다양한 API별 키가 있겠지만 여기서는 API Key로 설정합니다.
'Authorization' 탭으로 이동해서 Type을 'API Key'를 누르고 적절한 값을 입력합니다.
3. 필요한 EndPoint 와 파라미터 확인
현황을 확인하기 위해서는 활용신청 정보에 발급 현황에 End Point 와 page라는 파라미터와 perPage라는 파라미터가 필요합니다.
4. 테스트 호출
이제 SEND키를 눌러 정상적으로 호출 되는지 확인 해봅시다.
내용이 정상적으로 나온다면 인증과 추가 테스트를 하는 환경이 되었습니다.
(나중에 어플에서 Return값을 JSON으로 받아오기 때문에 적절하게 변환 및 가공한다면 활용할 수 있을 듯..)
5. 테스트 스크립트 작성
포스트맨은 API를 다양하게 테스트 할 수 있는 테스트 기능을 지원해줍니다.
테스트 코드는 JAVA로 작성 가능하며 우측에 SNIPPETS 메뉴를 누르면 자동으로 해당 코드를 완성(예제)
해주기 때문에 특별한 프로그맹 지식이 없어도 어느정도 작성이 가능합니다.
이후 Send 버튼을 통해 요청 정보에 대한 Response를 받으면 자동으로 작성한 테스트 코드가 실행되며 하단에 Test Results 탭에 결과가 표시됩니다.물론 개발 언어를 알고 있다면 지원되는 함수와 문법을 확인하면서 직접 작성도 가능합니다.
[코드]
var maxcurrentCount = 10;
//SNIPPETS Ver
pm.test("TEST 1 : Status code is 200 : SNIPPETS", function ()
{
pm.response.to.have.status(200);
});
pm.test("TEST 2 : Check currentCount : SNIPPETS", function()
{
const responseData = pm.response.json().currentCount;
pm.expect(responseData).to.above(maxcurrentCount);
});
//CODE Ver
pm.test("TEST 3 : Status code is 200", function () {
if(pm.response.code != 200)
throw new Error("Status code is not " + pm.response.code);
});
pm.test("TEST 4 : Check currentCount", function()
{
var currentCountData = pm.response.json().currentCount;
if(currentCountData <= maxcurrentCount)
throw new Error("currentCountData is Less .. Value Is " + currentCountData);
});
//CODE Ver
pm.test("TEST 5 : Status code is 201 for Fail", function () {
if(pm.response.code != 201)
throw new Error("Status code is not " + pm.response.code);
})