팀에서 담당하고 있는 주요 application이 릴리즈 기간이 되면 기능 검증과 병행하여 에이징 테스트를 수행하고 있다. 팀에서 정의한 에이징 테스트는 최소 N일 이상동안 일반적인 서비스 상황에서 application에 이상이 없는지를 확인하는 시험을 의미한다.
에이징 테스트를 진행하기 위해서는 변경되는 application들을 신규 환경에 설치하고, 에이징 테스트 시나리오에 따라 환경 설정을 하고, dummy client를 실행하여 일정 부하를 주며 다양한 지표를 모니터링 자료로 기록을 하도록 일부 script 나 서비스를 실행하여야 한다.
이 반복적인 과정이 RC 버전이 릴리즈될 때마다 진행이 되어야할 경우, 기능 검증과 병행하여 진행하기에는 꽤나 시간이 소요된다. 하여 팀에서 에이징 테스트 환경 구성을 자동화 하기로 하였다. 담당하기로 했던 팀원이 나머지는 모두 자동화 스크립트로 작업이 완료되었는데 단 하나, admin 화면을 통해 일부 설정들을 제어(일부 app을 맵핑하거나, 인증키를 추가 하는 등..)해야하는 작업에서 막혔다고 하였다.
현재 그 application의 admin은 django admin으로 구현되어 있기에 django admin의 api를 호출하여 자동화가 가능할 것 같았다. 실제 자동화 작업에 추가하려면 script에서 api client를 구현해야 하지만, 일단 django admin의 api를 활용하여 호출이 잘 될지에 대해 먼저 확인을 해보기로 하였다.
결과는 성공이었고, django admin의 api를 호출하기 위한 몇 가지 Tip을 정리해 놓으려고 한다.
Django Admin API를 사용하기 위해 알아야할 Key 값들
GET 호출 시, Response Body에서 Parsing -> POST 호출 시, Request Body Parameter로 추가
csrfmiddlewaretoken
postman 사용 시, 꿀팁!!) 이 값의 경우 GET API 응답 body에서 parsing하여 다음 request에 추가해야 하므로, Postman에서 "Tests"에 아래와 같은 스크립트를 추가하여 환경변수로 셋팅하여 다음 request에서 활용하도록 한다.
const $ = cheerio.load(responseBody);
pm.environment.set("_csrfmiddlewaretoken", $("input[name='csrfmiddlewaretoken']").val());
console.log(pm.environment.get("_csrfmiddlewaretoken"));
Cookie (Response Header에서 Parsing -> Request Header에 추가)
csrftoken
sessionid (로그인 후에 생성)
특히, Cookie의 경우 추후 script에서는 직접 추가를 해줘야 겠지만 postman에서는 자동으로 처리(최초 생성, 응답에서 파싱하여 다음 요청에 활용)를 해주기 때문에 따로 header에 중복 추가를 하지 않아도 된다.
(postman request header를 눌러보면 기본 hidden 처리가 되어 있으므로, 확인을 하고 싶다면 "N hidden" 버튼을 눌러 확인 가능하다.)
Django Admin API를 활용한 호출 예제
Django Admin에 로그인 -> Configuration에서 Language를 EN(영어)에서 FR(프랑스어)로 변경하는 것을 예제로 준비했다. 실제 application의 Configuration 페이지에서 다국어 변경 지원 기능이 있어서 해당 기능을 활용한 것이고, API의 URL이나 Parameter들에 대해서는 각자의 환경에 맞게 변경하여야 한다.
(0) API 호출 순서
GET login Page // 로그인 페이지 조회 ; csrftoken을 획득, body에서 csrfmiddlewaretoken 획득
POST login // ID, PW로 로그인 ; csrftoken, sessionid를 획득
GET configuration Page // 설정 페이지 조회 ; body에서 csrfmiddlewaretoken 획득
POST configuration change // 언어를 EN -> FR로 변경
(1) GET login Page
(2) POST login
(3) GET configuration Page
(4) POST configuration change
실제 API 결과에 대해서는 admin에서 언어 변경이 잘 되었는지 확인하였다. - 끝 -
'Engineering > Jmeter, Postman' 카테고리의 다른 글
[jmeter][beanshell sampler] beanshell sampler에서 stdout 값을 저장하여 response assertion 추가하기 (0) | 2023.07.02 |
---|---|
jmeter : Windows CMD 또는 Linux Command 로 실행하기 (0) | 2022.07.03 |
Postman : GraphQL query 요청하기 (0) | 2022.02.27 |
Jmeter : Counter (Config Element) Example (0) | 2021.10.24 |
Postman : HTTP responsebody를 parsing하여 연속된 Request의 parameter로 사용하기 (0) | 2021.07.11 |
댓글