프론트가 없는 프로젝트를 진행하면서 한 가지 불편한 점이 있었다. 바로 내가 작성한 API가 제대로 작동을 하는지 확인을 하기 어렵다는 것이다.
그래서 우리는 API가 정상적으로 작동하는지 확인하기 위해 Postman을 사용하는 경우가 많다. 하지만 기존의 사용법은 그저 한 개의 API를 테스트 하기 위한 사용이였지만 이번에는 조금 다르다.
이번에는 시나리오를 통해 한 개의 과정 자체를 모두 테스트 해보는 과정을 알아보자
ENV 파일 만들기
1. Environments 등록
먼저 우리는 기본적인 URL을 Enviroments에서 등록할 수 있고 해당 파일을 Collections에서 사용할 수 있다.
이런식으로 우리는 기본적으로 값을 다루게 될 것이다. 이렇게 등록을 하고 Collections에서 사용할 수 있다
2. env파일 등록
저런식으로 오른쪽 상단에 기본적으로 No Environment로 되어있을텐데 그것을 우리가 등록한 Env파일이 생성되어 있는 것을 볼 수 있다.
3. {{ }} 을 사용
먼저 회원가입으로 예를 들자면 Env파일에 저장되어있는 데이터중 어떠한 것을 사용하고자 한다면 {{ }} 을 사용해서 안ㅇ Variable값을 적어주면 된다.
나는 url로 적어주었기 때문에 이렇게 적어준다면 사용할 수 있다.
이런식으로 정상적으로 성공하는 것을 볼 수 있다. 우리는 이런식으로 env파일을 사용하게 될 것이고 이는 추후에 시나리오 테스트 자동화에 대한 내용을 저장하는데 중요한 키가 될 수 있다.
회원가입에서 로그아웃까지 과정을 그려보자
우선 회원의 정보를 다루는 시나리오를 만들어보려고 한다.
1. 전체적인 과정을 Collection에 등록
이렇게 내가 테스트해보고자 하는 과정을 이름을 정해서 등록을 해두었다.
2. Tests 내용 JavaScript(Postman)를 통해 제작하여 확인하기
우리는 Test를 하기 위해 Tests라는 곳을 알아야한다. 여기서는 Postman의 테스트 문법을 사용하게 되는데
pm.test("테스트 설명", function() {
// 여기에 테스트 로직을 작성합니다.
// 예를 들어, pm.response.to.have.status(200); 이런식으로 작성된다
});
이런식으로 사용하게 된다.
하나만 예를 들어 사용하자면 회원가입을 성공하면 테스트 결과값으로 200의 상태값을 반환하게 만들고 싶다.
pm.test(JSON.stringify(pm.response.json()), function() {
pm.response.to.have.status(200);
})
그럼 이런식으로 작성하게 되는 것이다.
그 후 테스트를 진행하게 되면 response값을 가져올 수 있고 밑의 사진 처럼 한가지의 시나리오를 모두 테스트를 해 볼 수 있다.
여기서 중요한 점이 바로 내 정보가져오기 같은 토큰이 있어야만 검증을 할 수 있는 API 요청을 하는 방법이 중요하다
3. 인증이 필요한 API 설정 방법
앞서 보았듯이 Tests를 이용할때 Postman 전용 JavaScript를 이용하는 것을 볼 수 있다. 이때 중요한 것은 로그인 후 가져오는 인증 코드이다. 나는 Access와 RefreshToken을 가져오게 된다. 나는 이중 인증에 필요한 AccessToken을 Authorization의 형태로 ENV파일에 저장을 하여 사용하고 싶다고 가정했을때 Tests 코드를 이렇게 작성할 수 있다.
그러면 environment에 Authorization의 이름을 가진 Variable이 생겨난다. 그럼 이제 그것을 인증 도구로 사용하게 되는 것이다.
이때 중요한것이 바로 Pre- request Script 이다 밑의 사진은 나의 정보를 가져오는 API이다.
Pre-request 란 이 요청을 할때 어떤 정보를 담아서 보낼 것이다. 라고 작성하는 것과 같다. 그리고 헤더에 우리가 받아온 토큰을 받아서 넘겨야 하기 때문에 위 같은 방식으로 작성해서 보내면 된다.
그러면 나의 정보를 가져오게 된다.
전송한 요청의 헤더를 보면 Bearer라고 시작하는 Authorization을 확인해볼 수 있다.
그리고 이렇게 Response 값도 가져오는 것을 알 수 있다.
여기서 주의할 점은 나는 연습용으로 만들었기 때문에 DB에 저장된 인코딩 된 Password까지 모두 확인하는 과정을 만들어 보았다. 하지만 우리가 정식으로 서비스를 하거나 보안에 신경을 쓴다면 절대절대 비밀번호는 전송되면 안된다.
이런식으로 나는 맨 위에 시나리오대로 작성을 하길 원했고 그 결과가 이러한 사진이 되는 것이다.
이렇게 사용자의 주소를 추가로 등록하고 memberStatus를 통해 회원상태가 "T"였던 것을 탈퇴한 회원의 상태로 보관하여 "F"로 변경되는 것 까지 다루어 보았다.
이런식으로 하나의 시나리오 뿐 아니라 상품을 등록하는 것, 상품을 구매하는 것, 리뷰를 작성하는 것 등등 다양한 시나리오를 만들어 확인해볼 수 있는 좋은 방법이다.
'프로젝트 > 개인 프로젝트' 카테고리의 다른 글
EC2의 서버와 로컬 서버의 응답 시간은 왜 차이가 나는 것일까? (0) | 2023.09.12 |
---|---|
Pageable의 Page 와 Slice의 성능 테스트 (0) | 2023.09.11 |
Global Exception & Business Exception(예외 처리) (0) | 2023.09.08 |
페이징(Pagination) (0) | 2023.09.08 |