흔한 QA 엔지니어

Postman + newman을 활용한 API 자동화(+html 리포트) 본문

Test Tools/Postman

Postman + newman을 활용한 API 자동화(+html 리포트)

블로그 닉네임 입력 제한 수는 몇 자인가요? 2025. 9. 26. 16:55

테스트 자동화를 도입할 때
비용 대비 효과가 좋은 것은 API입니다.
UI 의존성이 없어 유지보수가 쉽고
대량의 케이스를 데이터 드리븐 형태로 소화 가능하기 때문입니다!

카탈론도 대량의 케이스를 데이터 드리븐 형태로 소화 가능합니다.
다만 카탈론은 UI를 동반하기에 유지보수가 API보다는 번거롭습니다.

그리고 이를 위해 가장 효과적인 툴은 Postman이라는 생각이 드네요.
보고서를 위해 newman 조합도 같이 사용해줬습니다.

newman을 사용하면 html 리포트 출력이 가능합니다.
내부 활용은 물론 보고하기에도 좋습니다. 

총 요청은 1800개, 각 요청 당 2 ~ 3개씩의 검증 코드가 작성되어 있습니다.

 

다만 API 자동화를 위해서는
개발팀 내 API 명세 문서가 필수라는 점을 기억해주시면 좋겠습니다.
그렇지 않으면 개발자가 다 만들어야 합니다...
왜냐면.. 개발자의 머릿속에 있으니까요...

 
여튼 시작해보겠습니다.
API 자동화를 도입하게 된 계기는
순차적으로 실행할 리퀘스트 자체는 많지 않은데
테스트 케이스가 4천건(...)이 넘어가는 상황이 발생했기 때문입니다.
사실 이 정도 규모가 되면 수동으로는 제대로된 검증이 불가합니다.

그래서 제가 어떻게 진행했는지 자세하게 작성하고자 합니다.


1. 테스트 프로세스 설계

제가 테스트한 제품은 키관리 시스템이고
크게는 대칭키 / 비대칭키가 존재하여
키의 생성 / 수정 / 삭제나
해당 키를 이용하여 암복호화 / 서명 검증을 하는 기능을 제공합니다.
기능은 많지 않죠?

API 명세를 기반으로 프로세스를 설계했고,
이를 위해선 문서에 해당 사항이 작성되어야 합니다.
요즘은 Swagger로도 많이 관리하는 추세던데, 사용해보시면 좋겠습니다.
- URL / HTTP Method / Request Body / Response Body / HTTP Status / 연계 파라미터

1) 절차별 컬렉션 그룹화 
테스트할 API를 기능별(절차)로 그룹화합니다.
저는 크게 대칭키 / 비대칭키로 그룹화하였고
비대칭키 내에서도 암복호화 / 서명 검증은 절차가 상이하여 구분했습니다.

대칭키로 예를 들면
대칭키를 이용한 30개의 기능 × 60개의 알고리즘 = 총 1800개
케이스를 커버하도록 설계했습니다.

케이스는 많은데 절차(리퀘스트)는 동일하여 그룹화가 가능했던 것입니다.

 
구조 설계 - 트리 뷰 

── SymmetricKey (대칭키)
   ├── Encrypt / Decrypt
   │   ├── Case 1 (30 requests)
   │   ├── Case 2 (30 requests)
   │   └── ...
   └── CSV: symmetric.csv

── AsymmetricKey_Encryption (비대칭키 - 암복호화)
   ├── RSA PKCS1v15 (1024 / 2048 / 3072 / 4096)
   ├── RSA OAEP
   └── CSV: asymmetric_encrypt.csv

── AsymmetricKey_Signature (비대칭키 - 서명/검증)
   ├── RSA
   ├── ECDSA
   ├── DSA
   └── CSV: asymmetric_sign.csv

 
2) 데이터 구조화 및 흐름 설계 
고정된 요청 파라미터 - 엑셀(CSV)로 관리
이전 요청에서 받은 응답 파라미터 사용 -  스크립트로 환경변수에 저장

이 조합으로 데이터드리븐과 동적 플로우를 구현 가능합니다.

API를 독립적으로 요청 및 응답값을 확인하는 것은
단위 테스트의 일환이지만 
컬렉션에서 절차 단위로 리퀘스트를 구성 시 통합 테스트가 가능합니다. 

고정된 요청 파라미터 - 엑셀(CSV)
Postman에서 컬렉션 일괄 실행 시 엑셀을 첨부하여 사용이 가능하기에
엑셀로 고정된 요청 파라미터를 관리했습니다. 추가 케이스 관리도 편합니다.
예를 들어 요청 url이 http://test.com/keys 라면
엑셀 내 컬럼 - url / 값 - http://test.com 입력 후
{{url}}/keys 로 작성이 가능합니다.
리퀘스트 바디에서도 사용 가능합니다. 
(하단 이미지 참고)

이전 요청에서 받은 응답 파라미터 사용 -  스크립트

요청에 대한 응답 (Post-response) 을 검증하는 2건의 코드와
특정 응답 파라미터를 추출하여 환경 변수를 저장하는 코드를 작성했습니다.
그래서 다음 요청 시 해당 환경 변수를 리퀘스트 바디에서 사용합니다.
예) "url" : "{{url}}"
검증 코드에 대한 결과도 newman 리포트에 출력됩니다.

2. Postman 컬렉션 실행
1) Postman Collection 우측의 … 메뉴 > Run 클릭
2) Run Sequence 선택 / 실행할 리퀘스트 목록을 선택하면 됩니다. 
3) Select File을 클릭하여 엑셀(CSV) 업로드
4) Run 버튼을 클릭하면 Postman 내에서 결과를 확인할 수 있습니다!

 
3. newman을 사용한 html 리포트 출력
1) newman 설치

-- newman 설치 전 Node.js가 설치되어야 합니다.

-- newman 설치
npm install -g newman

-- html 리포트 플러그인 설치
npm install -g newman-reporter-html

2) 컬렉션 및 엑셀 파일을 동일한 폴더로 이동
3) 해당 폴더에서 CMD 실행 후 명령어 입력

-- 백엔드 구성 전이면 Mock 서버를 통해 테스트를 해볼 수 있습니다.
newman run postman_test_run.json -e test-Mock.postman_environment.json --iteration-data test.csv -r htmlextra --reporter-htmlextra-export report.html

4) CLI단에서 실행 후 html 파일이 해당 폴더에 생성됩니다.


절차는 동일한데 엑셀 내 특정 파라미터가 없는 경우도 있습니다.
다시 컬렉션을 만드는 것은 효율이 떨어집니다.

이럴 때 리퀘스트 바디 내 필드 삽입 조건을 스크립트로 작성하는 케이스도
다음에 작성해보겠습니다.