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

[Postman 사용법] 7. Test Automation (Newman & Jenkins)

by kellis 2020. 8. 19.

1. Newman?

 

Newman은 포스트맨을 위한 커맨드 라인 Collection Runner입니다. 확장성을 염두에 두고 설계되었기 때문에 다른 서버나 시스템과 쉽게 통합이 가능합니다. 그래서 Jenkins나 Travis CI, Docker 등 많은 다른 서비스와 함께 사용하는 경우가  많습니다. 

 

먼저 Newman을 설치해 보도록 하겠습니다. Newman은 npm 레지스트리 와 github  있습니다.  단, Newman은 node.js 기반으로 동작하기 때문에 Newman을 실행하려면 node.js가 필수적으로 설치되어 있어야 합니다. 

node.js가 설치되어 있다고 가정하고, newman을 설치하고 collection을 실행해 보겠습니다. 

 

 

< Newman 설치 >

npm install -g newman

 

newman을 이용하여 컬렉션을 실행하는 것은 매우 쉽습니다. 테스트를 원하는 컬렉션을 JSON 파일로 내려받거나, URL을 통해 접근하여 실행할 수 있습니다. 

 

< JSON 파일 실행 >

newman run sys4uwiki.json

 

< LINK 실행 >

newman run https://www.getpostman.com/collections/7d96e24920c8162bcf44 -e dev_environment.json

-e 옵션을 사용하여 환경 변수도 함께 사용할 수 있습니다.

newman run에 대한 옵션 정보는 아래와 같습니다. 

newman을 통해 컬렉션을 실행하게 되면 아래와 같이 결과를 출력합니다. 

Newman은 파일 업로드 역시 지원합니다. 컬렉션의 요청 중 form-data로 파일을 가지고 있는 요청이 있다면, 동일하게 동작이 가능합니다. 단, Export 된 JSON파일에 수동으로 파일 경로에 대한 정보를 기재해 주어야 합니다.

Export된 JSON파일을 열어 파일 업로드 요청 부분을 살펴보면 아래와 같습니다. 

 

src가 빈 문자열로 지정되어 있기 때문에, 서버에 올린 업로드될 파일의 정보를 아래와 같이 기재해 주어야 합니다. 

 

 


2. Jenkins와 Newman을 사용한 Test Automation

 

CI 툴과 Newman을 사용하면 테스트를 자동화하는 것이 가능합니다. 여기에서는 젠킨스를 사용하도록 하겠습니다. 이외에 Travis CI와 같은 툴을 사용할 수 있습니다. 일반적으로 API에 대한 계약이 명확히 결정되고 난 뒤에 테스트 자동화를 하게 되는데, 이를 위해서는 필수적으로 두 가지 선행작업이 필요합니다.

첫째로 젠킨스가 설치된 서버에 Newman이 설치되어 있어야 하며, 

둘째로 테스트를 위한 collection JSON 파일(필요하다면 envirionment JSON 파일도 포함)이 서버 내 존재해야 합니다. 

로컬 상에서 newman을 이용하여 테스팅하는 것과 동일하게, 젠킨스가 newman 명령을 이용하여 collection JSON 파일을 실행하는 것이기 때문입니다. 

 

그럼 이전 장에서 만들었던 CRUD Collection을 사용하여 제대로 동작하는지 확인해보도록 하겠습니다. 이를 위해 다음과 같은 데이터가 서버에 존재해야 합니다. 

  • 서버 프로그램(반드시 같은 서버에 존재할 필요는 없습니다. 포트만 열려 있다면 url만 변경하여 서로 다른 위치에 존재하여도 무방합니다.)
  • 테스트를 위한 JSON 형식의 Collection 파일
  • JSON 형식의 Environment 파일
  • 업로드될 파일 

테스트 자동화를 위해 젠킨스 프로젝트를 생성하고, Build에서 아래 명령어를 실행합니다. 

sudo newman run /home/user/postman/postman_collection.json -e /home/user/postman/postman_environment.json

 

아래와 같이 테스트가 정상적으로 동작하는 것을 확인할 수 있습니다. 

 


Next...

 

다음 챕터에서는 일정한 주기로 테스트를 실행하여 늘 정상적인 상태를 유지하는지 확인할 수 있도록 모니터링 기능에 대해 알아보도록 하겠습니다. 

 

댓글