ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Postman CLI기반 API 테스트 자동화
    분석과탐구 2024. 4. 9. 16:25

    개요

    Postman을 사용하여 개별 API 테스트를 하는 것은 널리 알려진 개발 방법이다. 그러나, 개별 API뿐만 아니라 여러 API를 CLI에서 일괄적으로 테스트할 수 있다는 사실은 그렇지 않다. 프로그래머가 버튼을 매번 누르는 것보다, Postman CLI을 기반으로 테스트를 자동화하여 효율적으로 개발을 할 수 있을 것이다. 이에 그 방법을 제시하고자 한다.

    Postman CLI

    Postman은 GUI기반으로 API를 테스트할 수 있다. 하지만, 자동화를 하기에 GUI는 부족한 점이 있다. 이에, Newman이라는 이름의 node.js 패키지가 나왔고, CLI 기반으로 테스트를 할 수 있었다. 현재, Postman CLI이라는 이름으로 공식적으로 CLI툴을 지원한다.

     

    Postman CLI를 이용하여 테스트를 하려면 몇 가지 정보가 필요하다.

    • workspace의 ID
    • workspace에 접근할 수 있는 API key
    • 테스트하려는 collection ID
    • collection에 제공하는 글로벌 변수, 환경 변수

    위 정보를 얻는 방법과 사용 방법의 예시를 보여줄 예정이다.

    Postman CLI을 활용하기 위한 정보 얻기

    1. workspace ID 획득

    Postman 화면

    Postman을 켜고 좌측상단의 Workspace를 누른 후, 맨 우측의 i 버튼을 누른다.

    Workspace ID를 확인할 수 있다.

    2. API key 획득

    다음 링크 https://web.postman.co/settings/me/api-keys에 들어가서 로그인을 하면 API key를 생성할 수 있다.

    Postman

    3. Collection ID 획득

    자동화의 기반이 되는 것은 Collection이다. Collection에 등록된 API를 호출하여 테스트하기 때문이다. Collection 안에는 디렉토리가 있어, 관련 있는 API를 모아둘 수 있다.

    Postman의 Collection

     

    Collection ID는 Postman의 Collection을 선택 후, 우측의 i버튼을 눌러서 확인할 수 있다.

    Postman

    다음은 i 버튼을 누르면 우측에 뜨는 화면이다.

    ID가 있을 것이다.

    4. 환경변수, 글로벌 변수 획득

    환경변수, 글로벌 변수는 링크만 필요하므로 따로 설명하지 않고 Postman CLI의 예제 코드로 보여줄 예정이다.

    Postman CLI 테스트 자동화

    1. 테스트 코드 예시

    설치 방법은 건너뛴다. 다음은 사용한 Powershell 코드이다.

    $postman_collection_id = "id" 
    $postman_api_key = "key"
    $workspaceId = "id"
    
    # -g 플래그로 workspace의 글로벌 변수를 가져와 사용할 수 있다.
    postman collection run $postman_collection_id \
    -g "https://api.getpostman.com/workspaces/${workspaceId}/global-variables?apikey=${postman_api_key}"

     

    위와 같이 간단하다. 플래그와 함께 인자를 넘겨 필요한 기능을 켜고 끌 수 있다.

    2. 결과 예시

    결과는 다음과 같다. 먼저 중간 과정이다.

    Postman CLI로 collection을 테스트한 중간 과정

    topic_create라고 보이는 것은 디렉토리이다. Collection 안에는 Directory를 두고 관련 있는 API를 모아 계층 구조를 만들 수 있다.

     

    다음은 결과이다. 실행한 테스트와 실패 여부, 걸린 시간 등을 보여준다.

    Postman CLI로 collection을 테스트 결과저

    3. 적용 방향

    위와 같이 Postman CLI을 이용하여 테스트 자동화를 할 수 있다는 근거를 얻었다. 어떻게 프로젝트에 적용할 수 있을 것인가? 직접 해보니 다음 방향이 좋았다.

    Collection을 분리한다.

    Collection 하나만을 쓰는 것이 아니라 2개 이상으로 나누는 게 좋다. Postman CLI의 테스트 대상이 Collection 기반이기 때문이다. 난 두 가지로 분리하였다. 하나는 단순 기능 테스트용이다. 아래와 같이 opinion API의 CRUD를 테스트하는 것이다. 프로그래머가 직접 클릭하여 테스트하게 되는 경우에 해당한다.

    단순 CRUD

     

    다른 하나의 Collection은 유스케이스 기반이다. 정해진 단계를 거쳐서 테스트를 진행한다. 아래와 같이 로그인의 성공 시나리오와 실패 시나리오를 테스트할 수 있다. 이 Collection은 사용자가 직접 눌러서 테스트하는 것이 아니라 Postman CLI를 활용한다. 

    유스케이스

    Postman CLI를 활용하면 결과뿐만 아니라 과정도 볼 수 있다. 아래 결과를 보면 응답 코드 200, data 프로퍼티가 존재해야 함 등의 테스트를 볼 수 있을 것이다. 이것은 Postman의 API를 보면 요청 후 결과값에 대한 테스트 스크립트와 대응하는 것이다. 

    로그인 성공 시나리오

    이것은 Postman의 API의 요청 후 결과 값을 테스트하기 위한 스크립트와 대응하는 것이다. 

    login api의 결과값을 테스트하는 스크립트

     

    계속해서....

    참고

    '분석과탐구' 카테고리의 다른 글

    PHP의 Fiber  (0) 2024.04.11
    스트리밍 서비스가 궁금하다  (0) 2023.12.16
    클라우드 트래픽 비용 비교  (0) 2023.11.29
    객체지향 프로그래밍  (0) 2023.10.22
    JWT와 세션  (0) 2023.07.22

    댓글

Designed by Tistory.