DevOps 환경에서 API 테스트 자동화를 위해 Jenkins, Postman, Newman을 활용하는 방법
![](https://miro.medium.com/v2/resize:fit:700/1*v3DnPdax5eArXUVL4k2jug.png)
1. Postman으로 API 테스트케이스 작성
- API 테스트 생성하고 테스트하기
- Postman 테스트 Script 참고 : https://learning.postman.com/docs/postman/scripts/test-scripts/
![](https://miro.medium.com/v2/resize:fit:700/1*9cB1VAoewbYSXHmATMkOlQ.png)
- 참고로 API 테스트를 실패한 모습
- Collection화일을 export하여 저장하기(Jenkins에서 구동하기 위해)
![](https://miro.medium.com/v2/resize:fit:314/1*tpXtktRE1qQA-rV2ZAu6eg.png)
2. Newman 설치
- CLI로 Postman의 테스트 화일을 구동시켜주는 프로그램입니다.
- 참고 : https://learning.postman.com/docs/postman/collection-runs/command-line-integration-with-newman/
2.1. nodejs 설치
- apt-get install curl
- curl -sL https://deb.nodesource.com/setup_6.x|bash
- apt-get install -y nodejs
2.2. Newman 및 Reporting 설치
- npm install -g newman
- npm install -g newman-reporter-html
![](https://miro.medium.com/v2/resize:fit:700/1*oDuCPIdXx1hYvntuzA5Zxg.png)
3. 형상관리에 저장
- 저장된 Collaction 화일을 Jenkins Build시 읽기 위해 형상관리에 저장
![](https://miro.medium.com/v2/resize:fit:700/1*bWhFf0ssvEuR6T58X4jvlQ.png)
4. Jenkins로 Build
4.1.Pipeline에 Job 작성
- collection 화일로 postman의 테스크케이스 구동
newman run src/test/postman/[Get]helloworld.postman_collection.json - JUnit 테스트 결과와 같은 xml 포멧으로 API 테스트 결과 저장
— reporters cli,junit — reporter-junit-export ‘newman/NEWMAN-myreport.xml’ (주의 : cli, junit의 쉼표 다음에 띄어쓰면 안됨) - 상세 설명 참고
– https://www.npmjs.com/package/newman
– https://www.toolsqa.com/postman/generate-newman-reports-on-jenkins/
![](https://miro.medium.com/v2/resize:fit:700/1*LXzS97FXuX-bOKPyxObILw.png)
4.2. Jenkins Job 실행 결과
- Build 결과
(참고로 기존 JUnit 테스트 4개에 API 테스트 7개가 추가되어 총 11개)
![](https://miro.medium.com/v2/resize:fit:700/1*JFKIeJOmdnE-ePXFVs_sdw.png)
- Console Output
![](https://miro.medium.com/v2/resize:fit:532/1*WGLf1defMxeIR1yF2WgxFA.png)
4.3. 실행 결과 보기
- Newman에 의해 테스트 된 API 테스트 결과 확인
![](https://miro.medium.com/v2/resize:fit:700/1*UtLovYEbfIuKAmVprXGyGw.png)
- 참고로 Postman과 Jenkins(Newman) 결과 비교
![](https://miro.medium.com/v2/resize:fit:700/1*tDpN3Tt58DgaUZVk5-yabg.png)
- 테스트 현황
![](https://miro.medium.com/v2/resize:fit:700/1*hcKsB8tgTV5v4jXQ6oHwaA.png)
4.4. 만약 API 테스트 결함이 있는 경우
- 한개의 API 테스트 결함이 발생 된 경우
![](https://miro.medium.com/v2/resize:fit:700/1*8bpfPcJsXvn_yLgJeihpIw.png)
![](https://miro.medium.com/v2/resize:fit:678/1*--43oYlBiZggcqQy0zeSsg.png)
![](https://miro.medium.com/v2/resize:fit:700/1*wOWDFIigqByOQu4Oan0VHw.png)
![](https://miro.medium.com/v2/resize:fit:700/1*p4-egK1XSNpj780_TLiFog.png)