본문 바로가기
Software Test/Contract Test by Postman

[Postman 사용법] 5. 연쇄 요청 간 데이터 유지 및 세션 동작 방식

by kellis 2020. 8. 19.

1. Chained Request 

 

4장까지 기본적인 Postman의 사용법에 대해 알아보았습니다. 더 많은 기능들이 존재하지만, 여기까지만 알고 있다면 앞선 요청에서 반환된 데이터를 이어지는 요청에서 사용할 수 있도록 연쇄 요청을 작성할 수 있습니다. 세션 토큰이나 사용자 ID와 같은 정보를 이어지는 요청에서 계속적으로 사용해야 할 때 주로 이 방식을 이용합니다. 

 

이어지는 요청 간에 데이터를 유지하기 위해서는 응답으로 받은 데이터를 추출하여 전역 변수나 환경 변수에 저장하는 작업이 필요합니다.

간단한 예와 함께 확인해보도록 하겠습니다. 게시물을 삽입하는 요청과 삽입된 게시물의 ID를 받아 첨부 이미지 파일을 게시물 정보에 추가하는 요청이 있다고 가정해 봅시다. 

 

이 요청은 boardId를 반환합니다. boardId 정보를 test script에서 전역 변수로 만들어줍니다. 

 

이렇게 등록된 boardId는 요청 빌더에서 사용이 가능합니다.

 

이 경우 boardId에 마우스오버하면 아래와 같이 unresolved value라고 나타납니다. 

 

이는 boardId가 요청을 통해 들어오는 데이터로, 전역 변수에 등록되어 있지 않아 생기는 문제입니다. 동적 생성되기 때문에 동작하는 데 있어 아무런 문제가 없지만, 기본 데이터 없이 이름만 global 변수로 등록해주면 경고 창 없이 사용할 수 있습니다.

 


2. Postman에서 Session 처리 

 

세션을 사용하여 로그인을 유지하는 경우, 일반적으로 서버와 브라우저 간 통신에서 세션이 유지되는 이유는 JSESSIONID라는 세션 식별자때문입니다. 서버에서 Response 헤더에 세션 식별자인 JSESSIONID를 set-cookie로 추가하여 응답을 보내면(Java Servlet의 HttpSession의 경우 세션 객체를 사용하기만 하면 자동으로 이 작업을 수행) 클라이언트 헤더가 이를 읽고 다음 요청 시에 cookies에 JESSIONID를 추가하여 전송하게 됩니다. 즉, 서버는 JSESSIONID를 통해 세션 정보를 특정화하여 사용할 수 있게 되는 것입니다. 이 모든 것이 가능한 이유는 브라우저가 이를 수행하기 때문인데, Postman 역시 동일하게 수행됩니다.

로그인 예제를 통해 확인해 보도록 하겠습니다.

userId와 password를 form-data로 전송하는 POST 요청에 대해 서버 프로그램이 해당하는 user 객체를 session에 저장했다고 가정해 봅시다. 

 

요청에 대한 결과로 Cookies에 JSESSIONID가 들어간 것을 확인할 수 있습니다. Postman은 쿠키가 등록되면, 화면 우측의 Cookies를 통해 어떤 쿠키가 존재하는 지 확인할 수 있으며, 여기서 삽입, 삭제, 변경 또한 가능합니다. 

 

그럼 이제 로그인이 유지되고 있는지, 즉 세션에 User 객체가 존재하는 지 확인하기 위한 loginCheck 요청을 수행해 보겠습니다. 

 

정상적으로 동작합니다. 이는 Collection Runner를 통해 Chanined Request로 처리했을 때 더 확실하게 확인할 수 있습니다. 

 

 

로그인 요청시 Response 헤더에 Set-Cookie가 들어가 있으며, 

 

로그인 확인 요청 시 Request Header에 cookie가 들어가 있는 것을 확인할 수 있습니다. 

 


Conclusions

 

여기까지 요청간 데이터를 유지하는 방법까지 배워보았습니다. 여기까지의 내용을 바탕으로 다음 장에서는 간단한 CRUD  예제를 만들어보도록 하겠습니다. 

 

 

댓글