Automation Test

모바일 앱 자동화테스트 (날씨날씨)

qa2qa 2026. 4. 4. 21:21

들어가며

이전 글에서 MQA Harness의 방향과 구조를 소개했다.
이번 글에서는 실제로 앱 하나를 골라서 테스트하는 과정을 보여주려고 한다.

테스트 대상은 "날씨날씨" — 플레이스토어에 있는 날씨 앱이다.
내가 만든 앱이 아니고, 미리 분석한 적도 없다. 그냥 "이 앱 테스트해줘"라고 말하면 어디까지 되는지 확인해보고 싶었다.


테스트 시나리오

목표는 단순하다. 위치를 검색해서 해당 도시의 날씨를 확인하는 것.

  1. 앱 실행
  2. 위치 추가 화면 진입
  3. 도시 검색
  4. 날씨 확인

사람이 하면 30초면 끝나는 플로우다. 자동화로 하면 어떤 일이 벌어지는지 보자.


Step 1: 앱 실행 — 바로 팝업이 뜬다

앱을 실행하자마자 "큰글씨 위젯이 새로 나왔어요!" 팝업이 뜬다.

 

사람이야 "닫기" 누르면 그만이지만, 자동화 스크립트는 이걸 예상하지 못하면 바로 멈춘다.
앱마다 업데이트 안내, 권한 요청, 공지사항 등 예상 못한 팝업이 수시로 뜬다.

MQA는 "닫기", "다음에", "허용", "OK" 같은 일반적인 팝업 패턴을 미리 정의해두고 자동으로 dismiss한다.

 

팝업을 닫으니 홈 화면이 보인다. 서초구 내곡동, 21°.


Step 2: "+" 버튼 — 텍스트가 아니라 아이콘이다

도시를 추가하려면 화면 우상단의 "+" 아이콘을 탭해야 한다.
그런데 이건 텍스트가 아니라 아이콘이다. UI hierarchy를 뒤져봐도 이 버튼에는 텍스트도, content-description도 없다.

UI 자동화 도구 대부분은 "텍스트로 요소를 찾는" 방식이 기본이다.
텍스트가 없는 아이콘 버튼은 ID가 있으면 ID로, 없으면 좌표로 탭해야 한다.

MQA는 스크린샷을 분석해서 해당 아이콘의 위치를 추정하고, 좌표 기반으로 탭한다.
사람이 "오른쪽 위에 있는 플러스 버튼을 누르자"라고 판단하는 것과 비슷하다.

"+" 탭 성공. 위치 관리 화면이 나오고, 하단에 "위치 검색 및 추가" 검색바가 보인다.


Step 3: 검색 — 한글이 안 된다

검색바를 탭하면 키보드가 올라온다.

 

 

여기서 "제주"를 입력해야 하는데, 문제가 있다.
테스트 자동화 도구의 텍스트 입력 기능은 ASCII만 지원하는 경우가 많다.
한글, 일본어, 중국어 같은 멀티바이트 문자는 기본 입력 방식으로 안 된다.

ADB를 통한 우회 방법이 있지만 깔끔하지는 않다. 이번에는 영어 "Jeju"로 검색했다.

 

 

다행히 이 앱은 영어 검색도 지원한다. "대한민국 제주특별자치도 제주시"가 첫 번째 결과로 나온다.


Step 4: 결과 — 제주시 18°

제주시를 선택하니 날씨 화면이 나온다.

 

 

제주시, 18°, 어제보다 1° 높아요.
시간별 예보, 미세먼지, 옷 추천까지 한 화면에 보인다. 하단에 "추가하기" 버튼도 보인다.

테스트 성공.


30초짜리 플로우에서 부딪힌 것들

사람이 하면 30초인 플로우에서 자동화가 부딪힌 문제를 정리하면:

문제 원인 해결
예상 못한 팝업 앱 업데이트 안내 팝업 패턴 자동 dismiss
"+" 버튼 못 찾음 아이콘에 텍스트/ID 없음 스크린샷 분석 → 좌표 탭
한글 입력 불가 자동화 도구 ASCII 전용 영어 우회 (또는 ADB broadcast)

 

단순해 보이는 플로우 하나에 자동화의 핵심 난관이 다 들어있다.


앱이 하나 더 늘었을 뿐인데

1편에서 "어떤 앱이든 테스트할 수 있는 범용 하네스"를 목표로 한다고 했다.
날씨날씨 앱은 그 두 번째 시도다.

솔직히 말하면, 앱이 바뀔 때마다 새로운 문제가 나온다.
"+" 아이콘처럼 텍스트가 없는 요소, 한글 입력 제한, 앱마다 다른 팝업 패턴.
하나 해결하면 다음 앱에서 또 다른 문제가 기다리고 있다.

하지만 그게 포인트다. 새 앱을 테스트할 때마다 하네스가 조금씩 더 범용적으로 진화한다.
날씨날씨에서 배운 "아이콘 좌표 탭" 패턴은 다른 앱에서도 쓸 수 있다.
팝업 dismiss 패턴은 앱이 늘어날수록 더 촘촘해진다.