솔루션은 버그가 없도록 유지하는것이 중요하다.
하지만, 새로운 기능이 추가되고 리팩토링 등으로 소스는 매번 변하기 마련이고, 그때마다 모든 화면을 검토해볼 수 는 없다. 소스를 업데이트하고 사람이 일일히 화면을 손수 클릭하여 버그가 없는지 파악하면 좋으련만 현실적으로 불가능하기 때문이다. 이러한 상황속에서 사내에서 화면 안정성을 위하여 테스트 자동화를 해볼 기회가 생겼는데 이를 postman으로 만들어서 포스팅한다.
Postman이란?
Postman은 개발한 API를 테스트하고, 테스트 결과를 공유하여 API 개발의 생산성을 높여주는 플랫폼. (부분유료)
혼자서 사용하는것은 무료.
공유할때는 최대 request가 25개밖에 되지않으므로 유료가입이 필수. 또한 api mock도 최대 1000번 밖에 쏠수없다..
Postman의 주요 기능
- API 테스트 : 기본기능
- API 및 mock서버 생성 : API Builder를 사용하여 Postman에서 직접 API를 설계 할 수 있음. (기본 스키마 형식은 Open API 3.0이며 기본 언어는 YAML) mock서버도 새롭게 생성하여 API에 연동하여 호출가능. (REST 대응답서버를 간단하게 만들수 있다는 뜻)
- 모니터링 : 모니터링은 API와 웹 사이트가 계속 작동하는지 확인.평균응답시간, 실행유형, 특정요청, 날짜 등의 필터링을 걸어서 일목요연하게 결과 확인가능. 5분마다 컬렉션러너와 유사하게 컬렉션의 각 request를 실행하여 테스트를 진행. 테스트가 실패하면 자동으로 이메일등의 알람을 받도록 함.
webAdmin테스트 구축
- postman proxy
- webAdmin을 로컬기동한 후, 해당ip로 지정 web UI - postman - web Backend 구조로 어떤 요청이 들어왔는지 postman에서 확인가능. (프록시전환 앱이 필요함. 본인은 'swithyOmega' 사용)
- 구조
- 컬렉션쪽의 테스트에 스크립트를 추가했다면, 모든요청마다 해당 스크립트를 실행하므로 일일이 추가해줘야할 번거로움이 없음
- 컬렉션은 컬렉션 / 폴더 / 요청 구조로 이루어져있으며 각각 사전스크립트 / 테스트 / 변수(폴더제외)를 가짐
- 변수
- global, collection, environment, data, local 5가지 변수가 존재
- global 변수를 사용하면 컬렉션, 요청, 테스트 스크립트 및 환경간에 데이터에 액세스 가능. global변수는 작업 공간 전체에서 사용.
- collection변수는 컬렉션 의 요청 전체에서 사용할 수 있으며 환경과 독립적. 컬렉션 변수는 인증 / URL 세부 정보와 같이 단일 환경 만 사용하는 경우에 적합
- environment변수는 다양한 환경에 맞게 처리를 조정. 한 번에 하나의 환경 만 활성화 가능.
- data변수는 외부 CSV 및 JSON 파일에서 가져와 Newman 또는 Collection Runner를 통해 컬렉션을 실행할 때 사용할 수 있는 데이터를 정의.
- local변수 는 임시적이며 요청 스크립트에서만 접근가능. 지역 변수 값은 단일 요청 또는 컬렉션 실행으로 범위가 지정되며 실행이 완료되면 더 이상 사용불가.
- 변수 사용
- 아래와 같은 테스트코드 작성가능(스니펫을 이용하여 기본틀 생성가능)
- 테스트
- 아래와 같은 테스트코드 작성가능(스니펫을 이용하여 기본틀 생성가능)
pm.test("Status code is 200", function () { // 응답코드가 200인지
pm.response.to.have.status(200);
});
pm.test("Body not matches string", function () { // 응답바디에 hasError가 포함되어있지 않은지
pm.expect(pm.response.text()).to.not.include("hasError");
});
pm.test("Whether it was created correctly or not", function () { // 응답바디의 instanceId가 컬렉션변수 ID값과 일치하는지
pm.expect(pm.response.json().instanceId).to.equal(pm.collectionVariables.get("ID"));
});
- 실행
- postman runner를 이용하여 실행순서 및 실행여부등을 조작하여 간편하게 테스트할 수 있음. (포트스맨 안에서실행)
- cli를 이용할경우 newman(cli용 postman 컬렉션러너)를 사용. (node v10이상설치가능) (서버에서 실행)
- newman run 'postman.json' [옵션]
- 테스트 순서
Pre-request-Script 및 Tests에 다음 실행할 요청의 순서를 정할 수 있음.
지정한 요청명은 유니크해야하며 중복일경우 제일 뒤에있는 요청이 실행되므로 주의. 또한, 무한반복의 가능성 염두.
postman.setNextRequest("Request명");
프록시를 통하여 각각화면이 클릭될때의 json을 알아놓고 모든 화면마다 테스트케이스를 통과하도록 만들어둔다.
포스트맨 내부에서 runner를 통하여 전체 통과가 되는지 확인후에, 전체 json을 추출.
서버에 newman을 설치하고 newman run xx.json을 실행하여 통과가 되는지 확인.
이것을 스케줄러에 등록하여 매일 지정된시간에 실행하여 오류가 있는지 확인할 수 있다.
참고
https://learning.postman.com/docs/getting-started/introduction/
'IT > ETC' 카테고리의 다른 글
리액트(React) 간단 문법 정리 (4) | 2024.01.30 |
---|---|
REST API (0) | 2023.03.26 |
JSP vs 서블릿 (0) | 2023.03.26 |
HTTP 상태코드 (0) | 2023.03.26 |
GIT 설치 및 사용법 (0) | 2022.01.24 |
댓글