Untitled

얼마 전 서비스 전체에 영향을 미치는 수정 사항이 있었어요. 이에 대해서 저희 팀은 여러가지 대비를 했고, 저는 그 중 Python을 이용해 UI와 프론트, 서버의 에러를 점검하는 스크립트를 만들었습니다.

수정 사항으로 인해 영향을 받거나, 유저 유입량이 높은 URL을 수집하고 해당 URL들의 전반적인 상태를 점검하는데 활용했습니다.

전에 공유해드린 적이 있는 Python과 Selenium + Pyautogui + Requests 모듈들로 모든 기능을 구현할 수 있었는데요. 세 가지 모듈 모두 테스트 자동화를 위해 사용할 수 있으며 Requests 모듈은 크롤링, 스크래핑 등 서버에 요청을 보낼 때 사용합니다.

이 세 가지 모듈로 어떻게 UI, 프론트, 서버를 모두 점검할 수 있었는지 공유해 보겠습니다.


Untitled

URL 수집하기

점검에 앞서 어떤 웹 페이지를 점검할 것인지 대상을 선정해야 했습니다. 선정 기준은 아래와 같았습니다.

  1. 수정 사항에 직접적으로 영향을 받는 페이지.
  2. 유저의 유입이 많은 페이지.
  3. 서비스의 주요 기능을 제공하는 페이지.
  4. 그 외 점검 요청이 있는 페이지. 위의 기준에 따라 60개의 URL을 선정했습니다.

그리고 Python 코드로 URL을 읽어올 때 딕셔너리 형태로 용이하게 사용하기 위해서 해당 URL들을 json파일 형식으로 저장했습니다.

예시
{
	"wanted": "<https://www.wanted.co.kr>",
	"google": "<https://www.google.co.kr>",
	"naver": "<https://www.naver.com>"
}

json 파일의 Key(wanted, google, naver)와 value(각 URL들)구조와 Python의 딕셔너리 자료형의 구조가 동일하여 코드에서 파일을 읽어와 그대로 사용할 수 있었습니다.


Untitled

웹 페이지 점검하기

우선 웹 페이지의 점검 결과를 저장하기 위해 “Pass” 리스트와 “Fail” 리스트를 생성해 주었습니다. Selenium으로 수집한 URL에 브라우저를 열어 접근했고 아래 방법들로 웹 페이지와 서버를 점검했습니다.

가장 먼저 Requests를 이용해 해당 웹 페이지의 HTTP Code를 확인했습니다.

response = requests.get('url') #url에 get요청을 보내 response에 할당.
response.status_code() #response에 할당된 값에서 status_code를 확인.
>>> 200

위의 코드로 대상 URL에서 HTTP Code를 확인할 수 있고, 코드가 300 이상인 경우 에러가 발생했다고 간주합니다.

HTTP Code가 300 미만인 경우 웹 페이지의 서버 상태는 정상이나 프론트 단에서 발생하는 에러가 있을 수 있어 Selenium을 이용해 웹 페이지의 콘솔 에러를 확인했습니다.