...
포스트맨 시나리오 테스팅
다음 SNS 서비스 홈페이지를 테스트 한다고 가정해보자.
우선 로그인 api를 요청해 로그인이 잘되는지 확인하고, api 요청으로 게시물을 작성하여 글을 올려볼 것이다.
단, 게시물을 작성할때 로그인 상태이여야 하는데, 보통 사용자가 홈페이지에 로그인 했는지 안했는지 여부는 세션 쿠키를 통해 인증한다.
따라서 이번 포스팅에서는 로그인 api 요청을 통해 사용자의 세션 쿠키를 얻어, 글쓰기 api 요청에 세션 쿠키를 넣어 글쓰기 동작을 하는 시나리오를 테스트 해보는 시간을 가져볼 것이다.
실제 서비스 동작 테스트
실제 홈페이지에서 UI 버튼들을 눌러 로그인과 글쓰기를 하면 어떻게 서버와 통신이 이루어지는지 먼저 보자.
다음과 같은 SNS 홈페이지에서 진행해본다고 가정하자.
F12를 눌러 개발자 도구를 키고, 계정 로그인을 진행 한다. (회원가입은 끝마쳤다고 가정)
로그인을 진행하면 서버로 http://localhost:8002/auth/login 이라는 REST API가 요청됨을 확인할 수 있다.
그리고 로그인 결과에 대한 세션 쿠키(connect.sid)를 얻게 되는데, 이 세션쿠키를 서버에 요청할때마다 브라우저에서 보내 내가 지금 로그인한 사용자임을 서버로부터 식별하게 만든다.
상단의 Payload 탭을 보면, 로그인 api를 보낼때 어떤 body 파라미터를 보냈는지 알수 있다.
로그인을 했으면 이제 글쓰기 하여 게시글을 발행해보자.
이렇게 서버 코드를 보지 않아도, 어떻게 클라이언트와 서버 간의 REST API 통신이 이루어지는지 알아봤다.
로그인과 글쓰기 과정에서 요청한 REST API URL 값과, Payload의 Body 데이터를 이용하여, POSTMAN에서 API 시나리오 테스트 자동화를 진행해보자.
REST API 테스트
먼저 워크스페이스의 컬렉션에 Nord Bird 라는 컬렉션을 만들고 login과 post라는 request를 만들어 등록한다.
로그인 요청 테스트
이제 login request 항목으로가 api를 작성해주자
그리고 아래와 같이 테스트 스크립트를 작성한다. (테스트 스크립트에 관해선 이 글을 참고하길 바란다)
pm.test("로그인 성공 !!", () => {
pm.response.to.have.status(200); // 만일 200 status 면
const cookies = pm.cookies.get('connect.sid'); // connect.sid 쿠키값을 얻어 변수에 저장
console.log(`쿠키 값 : ${cookies}`);
pm.environment.set("set-cookie", cookies); // set-cookie 라는 환경변수에 쿠키값을 저장
})
이제 로그인 REST API를 Send하면 다음과 같이 결과값을 받게 된다.
결과값에서 Cookies 항목에 들어가보면, connect.sid라는 세션쿠키 값을 얻게 되는 걸 볼 수 있다.
이 세션쿠키를 Postman 테스트 스크립트에서 set-cookies 라는 환경변수에 저장하라고 코딩했었다.
실제로 환경변수 항목을 보면 잘 들어가있음을 볼 수 있다.
글쓰기 요청 테스트
그럼 이 세션 쿠키 값을 헤더에 넣어 글쓰기 REST API 요청을 해보자.
API 테스트가 PASS 됨을 확인 할 수 있다.
실제로 홈페이지에 가보면 다음과 같이, 포스트맨 API 조작으로만 로그인하고 글도 쓰는 시나리오 테스팅을 진행한 것이다.
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.