쌩로그

Postman으로 API 순차적으로 테스트하기 본문

Tool

Postman으로 API 순차적으로 테스트하기

.쌩수. 2025. 4. 16. 17:57
반응형

목록

  1. 포스팅 개요
  2. 본론
  3. 요약

1. 포스팅 개요

회사에서 고객사에 솔루션을 도입하려는 중이다.
이때 고객사에서 사내 솔루션을 테스트하기 위해 애플리케이션을 제공해준다고 했다.
애플리케이션이 제공하는 여러 API(URL) 를 호출할 수 있도록 해야 했는데,
POSTMAN에서 이러한 기능을 제공해주고 있었다.

그에 대한 사용법을 기록하고자 남긴다.

api 호출이 적절한 표현이지만, 폼에 대한 호출도 불러일으키므로 통상적으로 URL이라고 표현한다.

2. 본론

원래는 POSTMAN을 쓸 때 API 테스트를 하기위해 하나의 Request 를 일일이 들어가서 호출했었다.
그러면서 한 번에 할 수 있었으면 좋겠다는 생각을 했었는데,

마침 기능을 제공하고 있었다.

애플리케이션은 Todo 애플리케이션이다.

보이는 UI는 이렇다.
(GPT한테 간단히 만들어달라고 했다.. 구린 거 아는데, 구린 거 안다고 하니깐 더 구려보이니 취소선 치겠다.)

URL은 보시다시피 localhost:8080이다.

나는 순차적으로 이렇게 호출할 것이다.

  1. GET localhost:8080
  2. GET localhost:8080/create
  3. POST localhost:8080/todos
  4. POST localhost:8080/update/{id}
  5. GET localhost:8080/edit/{id}
  6. POST localhost:8080/update/{id}
  7. GET localhost:8080/edit/{id}

기능은 다음과 같다.

  1. 전체목록
  2. 생성 폼
  3. 생성
  4. 변경
  5. 변경 폼(확인)
  6. 변경
  7. 변경 폼(확인)

잠깐!

잠시 해명할 게 있다...
API를 잘 못 설계했다...
폼 화면 URL 과 호출 API 를 맞췄어야 했는데, 그냥 빠르게 하려다보니까, 저런 식으로 했다.

그러니깐 결과적으로는
(현재 나의 CRUD 원칙도 반영)

폼 / 호출

  • GET localhost:8080/register /POST localhost:8080/register`
  • GET localhost:8080/modify/{id} / POST localhost:8080/modify/{id}
  • 삭제 폼은 없음 / POST localhost:8080/remove

이렇게 하는 게 더 좋았을거 같다.


컬렉션 만들기

컬렉션을 만든다.
POSTMAN에서 좌측에 Collections - + - Blank collection

이름 설정

끝이다.

필자는 이번 애플리케이션에 대해 very-simple-todo 라고 했다.

Request 만들기

자 이제 Request를 만들자.

순차적으로

생성폼

생성

변경

변경 후

변경 2

변경 2 후

id 설정

위의 Request 사진들 중간에 {{id}} 라고 있을 것이다.
변수로 설정하고, 받아오는 것이다.

변수의 범위를 지정할 수 있다.

범위는 다음과 같다.(범위가 넓은 순)

  • 전역 변수
  • 컬렉션 변수
  • 환경 변수
  • 데이터 변수
  • 로컬 변수

변수 범위보다는 해당 포스팅의 성격과는 다르기에 지금은 컬렉션 변수를 사용할 것이다.

글 아래에 참고 글을 넣을건데, 거기서 확인하면 된다.

컬렉션 변수를 넣을건데,

작업 컬렉션 - Variables 를 들어가면된다.

내가 이때까지 해당 앱에 대해 test를 진행했었기 때문에, 최근 id가 41이다.
(details는 무시)

그래서 42번부터 생성된다고 생각하고,
생성된 것에 대해서 update를 친다고 가정하여
초기 id를 42로 넣도록 하겠다.

아래와 같이 설정하면 된다.

그러면 위에서 id가 필요했던 부분에서 이 id를 사용하게 된다.

이제 끝났다.

이 URL들을 한번에 호출해보자.

컬렉션 - Run 을 하면 된다.

그러면 아래와 같이 나온다.

보는 바와 같이 모든 URL을 다 선택할 수도 있고, 체크를 해제하여 제외시킬 수도 있다.
일단 나는 다 돌린다.

Run very-simple-todo를 누르면 된다.

그럼 결과가 크롬 브라우저의 개발자 도구에서 console처럼 보이도록 나온다.

(중간에 숫자가 나오는 것은 필자가 넣어놨다. 아래에 나온다.) ~

이렇게 하면 된다.

포스팅 끝이다.

라고 끝내면 실망이 클 것이다.
혹시나 눈치챘을 수도 있겠지만, URL 선택부분에 보면 우측 중간에 iterators가 있다.

즉, 이 URL들을 몇 번 호출할 건지 묻는 것이다.

이제 여러 번 URL 호출을 해보자.

여러 번 호출하기

그리 어렵지 않다.
금방 말한 iterators 수를 올려주면 된다.

그리고 Run을 하면 끝이다.

script 작성

사실 할 얘기가 남았다..

이게 아마 마지막이다.

시나리오를 짜보자...

한번의 URL 호출 사이클을 도는 동안 해당 사이클에 생성된 데이터에 대해서만 update하고 싶을 수도 있다.

만약에 위에서 설정한 변수를 사용한다고 가정하고,

iterators 에 5를 주고,,,

아니 5까지 갈 필요도 없다. 2를 준다고 가정해보자.

1번의 사이클을 도는 동안에는 1회 사이클을 도는 동안 생성된 데이터에 대해서 update가 잘 될 것이다.

그런데, 2번째 사이클을 돌때는..?
물론 생성은 될 것인데, 수정되는 데이터는 1회의 사이클에서 생성되고 수정되었던 데이터에 수정밑 삭제 API가 호출될 것이다.

그래서 사이클을 순회하는 동안 id값을 올려줘야 한다.

바로 이때 script를 작성해주면 된다.

script는 자바스크립트다

Script

스크립트는 Request마다 다 작성할 수 있다.

id가 필요했던 URL에 대한 script를 보자.

이렇게 스크립트 창이 있고 좌측에 Pre-requestPost-response가 있다.

요청 전, 요청 완료 후 를 작성할 수 있다.

필자는 요청 완료 후는 필요없어서 요청 전에만 script 처리를 해줬는데,

여러 URL을 호출한 후에 중간에 숫자가 나왔을 것이다.
바로 위 사진처럼 console.log()를 찍었기 때문이다.

id를 찍었었다.

그리고 pm.variable.set("Id", pm.collectionVariables.get("id));

pathVariable 의 id를 컬렉션의 id 값으로부터 받아온 값으로 설정하겠다는 것이다.

그래서 호출을 하게되면 최종적으로 URL은 http://localshot:8080/todos/update/42 가 되는 것이다.

id 가 필요한 곳은 다 동일하게 script를 이와 같이 작성했다.

(별표를 보자.)
지금 내가 Post-response 도 작성했단 것이다.

마지막 URL 호출이 끝났으므로, 이제 2회 사이클 테스트를 위해 id값을 올려줘야 한다.
그래서 마지막 호출이 완료된 후에 컬렉션의 id에 +1 을 하라고 다음과 같이 스크립트를 작성해놨다.

console.log("현재 id:", pm.collectionVariables.get("id"));
const id = parseInt(pm.collectionVariables.get("id"), 10);

const newId = id + 1;
console.log("끄으으으읕", newId);


pm.collectionVariables.set("id", newId);

(자바스크립트를 몰라 +1을 하는데 애먹었다... 20이었을 때 21을 올리려고 했는데, 201 로 나오더라..)

parteInt(값, 진수); 하고, 10진수를 받아와서 + 1 값을 newId 에 넣어서
setting 해줬다.

이렇게하면 1사이클에 생성된 데이터에 대해서만 수정에 대한 호출이 발생하게 되어있다.

필자가 3회만 돌려본다.

참고로 아까 한 번의 사이클만 돌렸을 때의 결과다

아래는 3회 돌리고 난 후의 결과다.

그리고 collection의 id 변수는 다음과 같이 변경되어있다.

그리고 위에 그림에 보이는 것처럼 컬렉션에도 Script가 있다.

필자가 작성해보니 컬렉션 테스트 전후로 돌리는지 알았지만,

각 Request 전, 후에 대한 설정이다.

마치 스프링의 Test에서 BeforeEach / AfterEach의 기능처럼...

이렇게 POSTMAN의 기능에 대해서 알아보았다.

요약

  1. 포스트맨은 Collection의 기능을 통해서 여러 URL 호출을 할수 있도록 기능을 제공한다.
  2. 변수를 설정할 수 있다. 그리고 변수들은 범위가 있고,
  3. (자바)스크립트를 통해서 변경할 수 있다.
  4. iterators 에 값을 줘서 몇번을 돌릴건지 설정할 수 있다.
  5. 사실 Performance Test(성능 테스트) 기능도 제공하고 있는데, 추후에 봐야할 거 같다.

참고

https://dongle-smile.tistory.com/15?category=1221921

https://velog.io/@soyean/API-%ED%85%8C%EC%8A%A4%ED%8A%B8-%EC%9E%90%EB%8F%99%ED%99%94-%ED%99%98%EA%B2%BD%EB%B3%80%EC%88%98-%EC%84%A4%EC%A0%95

728x90

'Tool' 카테고리의 다른 글

[Tool] 성능 테스트 도구 nGrinder  (0) 2025.03.17
인텔리제이 꿀팁 ( 계속 추가 예정 )  (2) 2025.02.05
포스트맨 전역변수 선언  (0) 2023.05.17
Comments