본문 바로가기
AI 관련 자료

AI와 Maestro로 안드로이드 앱 자동화 테스트하기 - #1 스크립트 작성부터 리포트까지 한 번에

by Jay Son 아기 냥이 해린 짱💖 2026. 7. 11.
반응형

AI와 Maestro로 안드로이드 앱 자동화 테스트하기 

#1 스크립트 작성부터 리포트까지 한 번에

안드로이드 앱을 개발하다 보면 화면이 하나둘 늘어날수록 반복되는 수동 테스트가 점점 부담스러워집니다.

  • 버튼 하나씩 눌러보기
  • 화면 이동 확인하기
  • 값이 제대로 변경되는지 확인하기
  • 다시 빌드해서 처음부터 반복하기

처음에는 금방 끝나는 작업이지만, 기능이 많아질수록 테스트 시간이 개발 시간만큼 길어지는 경우도 있습니다.

이번 글에서는 Maestro라는 오픈소스 UI 자동화 도구를 이용해 AI에게 테스트 스크립트 작성을 맡기고, 실제 단말에서 실행한 뒤 HTML 리포트까지 자동 생성하는 과정을 소개합니다.

이번 글에서 다루는 내용

  • Maestro란 무엇인가?
  • AI로 Maestro 테스트 스크립트 만들기
  • 실제 단말에서 자동 실행하기
  • HTML 리포트 확인하기

Maestro가 무엇인가?

Maestro는 Android와 iOS에서 사용할 수 있는 오픈소스 UI 자동화 테스트 도구입니다.

YAML 파일만 작성하면 실제 사용자가 버튼을 누르는 것처럼 앱을 조작하고 화면을 검증할 수 있습니다.

예를 들어 아래 한 줄이면 테스트가 시작됩니다.

 
maestro test 내플로우.yaml
 

YAML에 작성한 순서대로

  • 앱 실행
  • 버튼 클릭
  • 텍스트 확인
  • 화면 검증

까지 모두 자동으로 수행됩니다.

Appium보다 설정이 훨씬 단순해서 처음 자동화 테스트를 시작하는 분들도 부담 없이 사용할 수 있습니다.


테스트 대상 샘플 앱

복잡한 앱보다 동작이 명확한 예제가 이해하기 쉽기 때문에 이번 글에서는 아주 단순한 카운터 앱을 준비했습니다.

기능은 다음과 같습니다.

  • 현재 카운트를 숫자로 표시
  • -1 / 초기화 / +1 버튼 제공
  • 0보다 아래로는 내려가지 않음
  • 10에 도달하면 "🎉 10 달성!" 메시지 출력

  • 카운터 초기 화면
  • +1을 세 번 누른 화면
  • 10 달성 화면

 

AI에게 테스트 스크립트를 맡기기

이번 예제에서는 테스트를 직접 작성하지 않았습니다.

AI에게 현재 화면 구성을 설명한 뒤 다음과 같이 요청했습니다.

카운터 앱이다.

버튼은 +1, -1, 초기화가 있다.

10이 되면 축하 메시지가 나온다.

Maestro 테스트를 작성해줘.

그러자 아래와 같은 테스트 시나리오를 자동으로 만들어 주었습니다.

파일검증 내용
01_increment.yaml +1 버튼 3회 → 3 표시 확인
02_boundary.yaml 0에서 -1 눌러도 음수로 안 내려감 (경계값)
03_reset.yaml +1 5회 → 초기화 → 0 복귀 확인
04_milestone.yaml +1 10회 → 축하 메시지 노출 → 초기화 후 메시지 사라짐

첫 번째 테스트

 
appId: com.example.maestrosample
name: 증가 — +1 버튼을 3번 누르면 3이 표시된다
---
- launchApp:
    stopApp: true

- assertVisible:
    id: "text_counter"
    text: "0"

- repeat:
    times: 3
    commands:
      - tapOn:
          id: "btn_increment"

- assertVisible:
    id: "text_counter"
    text: "3"
 

읽어보면 거의 자연어 수준입니다.

앱 실행 → 카운터가 0인지 확인 → +1 버튼 3번 클릭 → 숫자가 3인지 확인

프로그래밍 경험이 많지 않아도 쉽게 이해할 수 있다는 점이 Maestro의 가장 큰 장점입니다.


조건부 UI도 테스트 가능

가장 흥미로운 시나리오는 10 달성 메시지입니다.

조건에 따라 나타나는 UI까지 검증할 수 있습니다.

 
appId: com.example.maestrosample
name: 달성 메시지 — 10에 도달하면 축하 메시지가 뜨고, 초기화하면 사라진다
---
- launchApp:
    stopApp: true

- assertNotVisible:
    id: "text_milestone"

- repeat:
    times: 10
    commands:
      - tapOn:
          id: "btn_increment"

- assertVisible:
    id: "text_counter"
    text: "10"

- assertVisible:
    id: "text_milestone"

- takeScreenshot: milestone_reached

- tapOn:
    id: "btn_reset"

- assertNotVisible:
    id: "text_milestone"
 

여기서 사용한 id: 값은 Compose의

 
Modifier.testTag("text_counter")
 

와 연결됩니다.

testTagsAsResourceId = true 옵션만 활성화하면 Maestro에서 그대로 사용할 수 있습니다.


단말 연결부터 리포트 생성까지 자동화

테스트가 준비되었다면 이제 실제 단말에서 실행해야 합니다.

매번

  • 빌드
  • 설치
  • Maestro 실행
  • 리포트 확인

을 반복하는 것도 번거롭기 때문에 PowerShell 스크립트 하나로 모두 자동화했습니다.

 
# scripts/run-tests.ps1

# 1) 단말 연결 확인
adb devices -l

# 2) 한글 인코딩 설정
$env:JAVA_TOOL_OPTIONS = "-Dfile.encoding=UTF-8 -Dsun.jnu.encoding=UTF-8"

# 3) 화면 꺼짐 방지
adb shell svc power stayon usb

# 4) 앱 설치
./gradlew.bat installDebug

# 5) Maestro 실행
maestro test .maestro/ --format HTML-DETAILED --output reports/report.html

# 6) 리포트 열기
Start-Process reports/report.html
 

실행은 아래 명령 하나면 끝입니다.

powershell -ExecutionPolicy Bypass -File scripts\run-tests.ps1
 

실행 결과

실행하면 다음과 같은 로그가 출력됩니다.

[1/6] 단말 연결 확인
List of devices attached
R3CW70T50PP device

[2/6] 한글 인코딩 설정

[3/6] 화면 꺼짐 방지

[4/6] 앱 설치

BUILD SUCCESSFUL

[5/6] Maestro 테스트 실행

[Passed] 증가
[Passed] 경계값
[Passed] 초기화
[Passed] 달성 메시지

4/4 Flows Passed

[6/6] 리포트 열기
 

약 1분 이내에

  • 앱 설치
  • 테스트 실행
  • 결과 검증
  • HTML 리포트 생성

까지 모두 완료됩니다.

Windows 사용자 팁

PowerShell에서 한글이 포함된 YAML이나 스크립트를 사용할 경우 UTF-8 설정을 권장합니다.

JAVA_TOOL_OPTIONS를 UTF-8로 지정하고, PowerShell 스크립트는 UTF-8 BOM으로 저장하면 대부분의 한글 깨짐 문제를 예방할 수 있습니다.


HTML 리포트 확인

Maestro는

--format HTML-DETAILED
 

옵션 하나만 추가하면 HTML 리포트를 자동으로 생성합니다.

별도의 리포트 작성 코드는 필요하지 않습니다.

플로우를 선택하면

  • 실행 시간
  • 각 Step 수행 결과
  • 실패 위치
  • 캡처한 스크린샷

까지 모두 확인할 수 있어 문제를 빠르게 분석할 수 있습니다.


마무리

이번 글에서는 Maestro를 이용해 AI와 함께 자동화 테스트를 작성하고 실행하는 전체 과정을 살펴보았습니다.

정리하면 다음과 같습니다.

  1. 카운터 샘플 앱을 준비했습니다.
  2. AI에게 테스트 시나리오를 설명하고 Maestro YAML을 생성했습니다.
  3. PowerShell 스크립트로 빌드, 설치, 테스트, 리포트 생성까지 자동화했습니다.
  4. HTML 리포트로 모든 테스트가 정상 통과했는지 확인했습니다.

Maestro의 가장 큰 장점은 테스트 코드 자체가 매우 단순하다는 점입니다. 여기에 AI를 함께 활용하면 반복적인 테스트 스크립트 작성 시간을 크게 줄일 수 있습니다.

다음 글에서는 YAML을 직접 작성하지 않아도 되는 Maestro Studio를 소개하겠습니다. 화면을 직접 클릭하면서 테스트를 생성하고 수정하는 방법까지 이어서 살펴보겠습니다.

 

샘플 코드: https://github.com/JsonCorp/android-autotest-maestro-sample.git

반응형