만든 것진행 중
adb 기반 게임 QA 서버
게임 화면은 UI 트리가 없습니다. 그래서 눈으로 조작하고, 판정은 로그로 합니다.
안드로이드 게임 빌드를 자동으로 검증하는 커스텀 MCP 서버. Python, 도구 22종, 유닛테스트 104개. 실기기를 USB로 물려 놓고 돌린다.
기성 안드로이드 자동화 도구를 쓸 수 없어서 직접 만들었다. 이유가 하나 있다.
게임 화면에는 붙잡을 게 없다
일반 앱은 접근성 트리가 있다. “로그인 버튼”이라고 이름을 부르면 도구가 찾아서 누른다.
게임은 화면 전체를 네이티브 서피스 하나에 그린다. 트리를 뽑으면 빈 껍데기가 나온다. 버튼도, 텍스트도, 좌표도 없다. 있는 건 픽셀뿐이다.
기성 도구가 전제하는 것이 전부 없으니, 조작과 판정을 각각 다시 만들어야 했다.
세 갈래로 적었다
| 무엇이 문제인가 | |
|---|---|
| 조작과 판정 | 붙잡을 게 없는 화면을 어떻게 누르고, 무엇으로 결과를 정하나 |
| 무인 루프 | 사람이 안 보는 실행이 성립하려면 무엇이 필요한가 |
| 나온 것 | 밤새 돌린 결과와, 자동화 결함이 아닌 것이 처음 나왔을 때 |
같은 케이스를 PC 빌드에도
케이스 세트는 폰용으로 쓰여 있었는데, 같은 게임의 PC 빌드도 검증해야 했다.
126개를 다시 쓰는 대신 전송층만 갈았다. 하네스가 adb를 기대하는 자리에 파일 브리지를 끼웠다. 명령 표면은 그대로고 반대편만 다른 것.
통한 이유는 케이스가 애초에 안드로이드에 관심이 없었기 때문이다. 여기를 누르고, 기다리고, 이게 떴는지 확인한다 에만 관심이 있었다. 기기 의존은 맨 아래 한 층뿐이었고, 그 한 층을 갈아 끼우니 라이브러리가 통째로 살았다. 풀런 126케이스 937초.