* 컨퍼런스 시청 후 개인적인 느낌을 서술한 감상문이다!
영상 링크 : https://www.youtube.com/watch?v=OeNGEB7AAfY
1. 무엇을 소개하는가?
QAMate Autoflow라는, 넥슨의 사내 툴을 소개하는 영상이다.
뭔가 완성도가 너무 좋아서 상용화 되지 않았을까? 하는 이유로 검색을 해봤는데, 아쉽게도 사내에서만 운용되는 툴 같다..
유튜브 영상을 직접 캡쳐해서 가져오면 뭔가 안될거같아서, 어떤 툴인가를 설명하자면
이런 느낌으로 노드(N)와 간선(E)을 이용해 스크립트를 짜는 툴이었다.
영상에서는 메이플스토리에서 서버를 선택하고 캐릭터를 선택한 후 로그인하는 과정을 자동화 하는 시연을 보여주었다.
사전 조건 : 서버 선택 페이지
- 클라이언트의 특정 좌표를 클릭하는 노드 #서버 선택
- 몇초간 기다리는 간선 #채널 선택 페이지 나올때까지 기다림
- 클라이언트의 이미지 좌표를 더블 클릭하는 노드 # 채널 선택
- 몇초간 기다리는 간선 # 캐릭터 선택 페이지 나올때까지 기다림
이런식으로 구성되어있고, "2차 비밀번호 입력" 과 같은 좌표나 이미지를 찾아가는 것으로는 구현하기 힘든 행동에 대해서는 "커스텀 노드" 또한 만들어서 활용하는 모습을 볼 수 있었다.
2. 도입배경
기존 QA들이 테스트 자동화를 시도할 때, 아래와 같이 진행 중이었다고 한다.
- 상용 솔루션 도입 검토
- 내부에서 업무 중에 개발
- 파이썬으로 직접 스크립팅
상용 솔루션 도입 검토를 하자니 비용의 문제 + 기껏 다 구축했는데 갑자기 서비스 종료를 하면 어쩌나 라는 걱정,
내부 업무 중 개발을 하자니 QA 업무 중 자동화까지 구현하기에는 너무 리소스 낭비,
파이썬으로 직접 스크립팅 하자니 러닝커브가 있어 신입 QA에게는 벽이 있었다고 한다.
이에 따라, 툴 프로그래머 이신 발표자는 아래와 같은 목표를 했다고 한다.
- 상용 솔루션보다 잘 만들어야 함
- 파이썬 배우기보다 더 쉬워야 함
- 범용성 있어야 함
3. 그래서 만든것
위 목표와 요구사항을 받아들여, 아래처럼 제작을 했다고 한다.
- 러닝커브 낮추기
레고로 비유해서 처음에는 난이도가 낮은 레고를 구입했다가 점점 어려운 레고를 구입하는 것 처럼, 초창기 버전에서는 간단한 기능 (ex. 어디좌표/이미지 클릭) 정도로만 구현했다가 이후 복잡한 기능을 추가했다고 한다. - 귀찮음 줄이기
보통 자동화를 구현할 때, 여러 귀찮은 과정이 있는데 이러한 문제를 최대한 단순화 했다고 한다.
- 좌표 찾기 귀찮다: 클라이언트 스샷으로 좌표를 빠르게 얻을 수 있다고 한다.
- 이미지 따오기 귀찮다: 위와 마찬가지로 스샷으로 이미지를 빠르게 잘라서 파라미터로 세팅할 수 있다고 한다.
- 노드 만들기 귀찮다: 유저의 액션을 녹화하면 노드로 자동 만들어지게 했다고 한다.(Record & Replay 라고 하나?) - 노드의 조합
마우스 클릭을 10번하는 이벤트 노드를 만들기보단, 마우스 클릭 + 10번 반복노드를 만드는 방식으로 만들었다. - 단축키
가장 재미있었던 부분인데, 스타크래프트 단축키를 사용해 B + T 키를 입력하면 Text Input 노드가 생성된다!
분명 실무자에게는 한계가 있을 수도 있지만, 실사용을 해볼 수 없는 입장에서는 진짜 강력한 툴이라고 생각된다!
이전 회사에서 자동화 구현 중, 모바일 기기 해상도가 각기 달라 정말 단순하게도 그림판을 켜서 좌표를 손수 따오는 나의 방식을 생각하면..
4. 그리고 재미를 주기 위해
- 크레딧을 만들었다.
처음 개발 당시의 기여자에 대해 명단을 작성해준다. - 커스텀이 실용적이면 정식 패치에 합류한다.
자주 사용되거나, 엄청나게 복잡한 기능을 단순하게 구현해내는 노드를 만들면 정식 패치에 합류하고, 마우스 호버 기능으로 "○ ○ ○가 만듦" 같은 내용을 써주는 것 같다. - 스크립트를 만들면 서버에 올라간다.
내가 만든거에 대해 타인에게 공유하고, 타인이 만든 효율적인 스크립트를 내가 써보면서 하나의 작은 커뮤니티 역할을 하는 것 같다.
크레딧이나 커스텀에 내 이름이 적혀있고, 신입이 사용하다가 내 이름이 적혀있는걸 본다면 어깨가 절로 솟을 것 같다!
또, 서버에서 스크립트를 공유하면서 나와 타인의 자동화 아이디어를 공유하고, 교류하지 않을까??
5. 추가될 기능
Git의 Pull Request 형식으로 개발자의 첨삭을 받을 수 있다고 한다. 2년 전 글이니 만약 이 툴 사용이 폐기되지 않았다면! 아마 구현되지 않았을까 한다.
6. 느낀점
역시 국내 1위 게임회사 라는 생각을 했다.
이전에 독학으로 자동화를 만들어보곤 했지만, 항상 만들다 보면 정신이 없어지는 코드가 나오고 그러는데..
정말 깔끔하게 자동화를 해석하고 구현하는게 대단했다!
이런 툴을 만드는 것 까지는 아니더라도, 이런 기능을 모듈화하는 아이디어라던가? 그렇게 만들면 범용성 높게 만들 수 있었을 것 같다.
이런걸 두고 객체 지향이라고 하는걸까? 맞는 표현인지는 모르겠지만..
아무튼 짧지만 아주 좋은 컨퍼런스를 들어서 너무 유익했다!
'노트' 카테고리의 다른 글
[Docker] 인프런 - 도커 기초🐋[完] #003 (0) | 2025.04.16 |
---|---|
[Docker] 인프런 - 도커 기초🐋 #002 (0) | 2025.04.15 |
[Docker] 인프런 - 도커 기초🐋 #001 (2) | 2025.04.14 |
[CS] 1.1 + 0.1 == 1.2 가 False인 이유 (2) | 2025.03.11 |
[컨퍼런스] SLASH 24 - 토스 닥터 후기 (2) | 2025.02.20 |