본문 바로가기

베타 테스트

새로운 TestFlight 빌드 없이 웹 변경 사항을 베타 테스터에게 전달하세요

테스터는 앱을 한 번만 설치하면 됩니다. 이후 JavaScript, HTML 또는 CSS를 변경하면 테스터가 앱에서 가입한 베타 채널로 즉시 반영되며, 다음 업데이트 확인 시 적용됩니다. 단, 네이티브 code 변경 사항은 여전히 TestFlight 또는 Play testing track을 통해 배포해야 합니다.

테스터가 앱에서 직접 참여

--self-assign으로 채널에서 셀프 할당을 허용하세요. 앱에서 listChannels()로 채널 목록을 불러오고 setChannel()로 디바이스를 이동하므로, 테스터가 설정 화면에서 베타에 참여할 수 있습니다.

setChannel() 레퍼런스

콘솔에서 디바이스 하나 고정

Capgo 콘솔에서 디바이스 오버라이드를 설정하면 앱을 변경하지 않고 테스터 한 명의 폰을 채널에 할당할 수 있습니다. 오버라이드는 마지막으로 설정된 후 90일이 지나면 제거됩니다.

디바이스 오버라이드

QR code로 빌드 공유

앱의 프리뷰를 한 번 활성화하세요. 그다음 get-qr을 실행하거나 upload 시 --qr-preview를 사용하면, QA 스레드에 게시할 수 있는 번들 또는 채널의 QR code와 프리뷰 링크가 출력됩니다.

QR 코드 참조

네이티브 변경 사항은 TestFlight가 담당합니다

Live Update는 JavaScript, HTML, CSS 및 에셋을 변경합니다. 플러그인을 추가하거나 네이티브 code를 수정할 때는 새로운 TestFlight 또는 Play 테스트 빌드를 배포한 후, 채널을 통해 지속적으로 반복 업데이트를 진행하세요.

Native Build가 필요한 경우

TestFlight와 Capgo 채널의 역할은 다릅니다

  • 테스터에게 새 빌드 전달하기

    TestFlight / Play 테스트
    빌드, 서명, 업로드 후 스토어 처리 대기
    Capgo beta 채널
    CLI로 번들 업로드. 테스터는 다음 업데이트 확인 때 받습니다
  • 테스터 추가하기

    TestFlight / Play 테스트
    App Store Connect 또는 Play Console에서 초대
    Capgo beta 채널
    테스터가 앱에서 채널에 참여하거나 디바이스 오버라이드를 설정
  • 테스터를 다른 빌드로 전환하기

    TestFlight / Play 테스트
    다른 빌드 설치
    Capgo beta 채널
    setChannel()로 앱에서 채널 전환
  • Native code 및 플러그인 변경 사항

    TestFlight / Play 테스트
    지원
    Capgo beta 채널
    아니요, 새 바이너리를 배포해야 합니다

테스터는 TestFlight, Play 테스트 트랙 또는 스토어에서 앱을 한 번은 설치해야 합니다. 이후 웹 레이어 변경은 채널이 처리합니다. Native Build가 필요한 경우

작동 방식

QA 팀이 Capgo를 활용해 베타를 진행하는 방법

설치된 빌드 하나, 테스터가 참여할 수 있는 채널 하나, 변경마다 CLI 업로드 한 번이면 됩니다. 아래 명령어는 모두 Capgo 문서에서 가져왔습니다.

  1. 테스터가 참여할 수 있는 베타 채널 생성

    Self-assignment를 사용하면 앱이 기기를 해당 채널로 이동시킬 수 있습니다. 프로덕션 채널에서는 이 기능을 꺼두세요.

    npx @capgo/cli@latest channel add beta com.example.app --self-assign
    Channels 문서
  2. 앱에 베타 참여 스위치 추가하기

    setChannel()을 통해 Capgo에서 채널의 self-assignment 허용 여부를 확인한 뒤 기기에 저장합니다. triggerAutoUpdate를 호출하면 즉시 업데이트 확인을 시작합니다.

    import { CapacitorUpdater } from '@capgo/capacitor-updater'
    
    // Join beta and check for its bundle now
    await CapacitorUpdater.setChannel({ channel: 'beta', triggerAutoUpdate: true })
    
    // Leave beta and go back to the default channel
    await CapacitorUpdater.unsetChannel({ triggerAutoUpdate: true })
    setChannel() 레퍼런스
  3. 변경 사항을 베타에 업로드하기

    프리뷰를 한 번 활성화하세요. 이후에는 업로드할 때마다 QR code를 출력하여 테스터와 리뷰어가 새 bundle을 바로 열 수 있게 합니다.

    # once
    npx @capgo/cli@latest app set com.example.app --preview
    # every change
    npx @capgo/cli@latest bundle upload --channel beta --qr-preview
    get-qr 참조
  4. QA 통과 항목 배포하기

    테스트 완료된 bundle을 프로덕션에 연결하거나, 먼저 일부 프로덕션 기기에 배포하세요. 테스터는 직접 나갈 때까지 베타 버전을 유지합니다.

    npx @capgo/cli@latest channel set production com.example.app \
      --bundle 1.4.2
    # or roll it out to 10% of production first
    npx @capgo/cli@latest channel set production com.example.app \
      --rollout-bundle 1.4.2 --rollout-percentage 10 --rollout-enable
    Progressive rollouts 문서

베타 채널 활용 사례

내부 QA

QA 팀은 매번 JavaScript 변경 사항마다 앱을 재설치하는 대신, 빌드를 하나만 설치한 채 QA, beta, feature 채널을 전환하며 테스트합니다.

베타 참여 사용자

setChannel()을 호출하는 '베타 참여' 스위치를 추가하세요. 사용자가 참여를 해제하면 unsetChannel()이 호출되어 기본 채널로 돌아갑니다.

이해관계자 리뷰

get-qr에서 QR code를 보내 제품 담당자가 특정 bundle 또는 channel의 프리뷰를 열 수 있도록 하세요.

Capacitor로 빌드된 앱

커뮤니티 앱은 기능을 신중하게 노출해야 합니다

사용량이 많은 소비자용 앱은 모든 사용자에게 새로운 경험을 제공하기 전, 폐쇄형 테스터 그룹을 통해 게임, 학습 또는 예측 플로우를 검증할 수 있습니다.

lichess • 무료 온라인 체스 앱 아이콘 게임 보드

lichess • 무료 온라인 체스

토너먼트, 분석 및 소셜 기능에 대해 세심한 검증이 필요한 대규모 커뮤니티 앱입니다.

Google Play 설치 수
1,130만
스토어 평점
4.3
StudySmarter - 학교 및 대학 앱 아이콘 교육

StudySmarter - 학교 및 대학교

onboarding 및 연습 과정의 변경 사항을 출시 전에 검토해야 하는 교육 워크플로우.

Google Play 설치 수
650만
스토어 평점
4.8
Windy.com - 날씨 예보 앱 아이콘 날씨

Windy.com - 날씨 예보

제품 변경 사항을 확장하기 전, 신뢰성을 확보해야 하는 상호작용을 예측하고 매핑합니다.

Google Play 설치 수
32.9M
스토어 평점
4.7

고객 사례

Capgo로 배포하는 팀들의 이야기

5.0/5 개발 팀 평점 9,400+ 팀 리뷰 보기

Nate van Jole

Private CTO

“설정은 하루도 안 걸렸습니다. 채널 기반 롤아웃 덕분에 프로덕션 사용자에게 배포되기 전에 제 기기에서 먼저 테스트할 수 있었습니다.”

no-tone @ Webincode

Webincode 개발자

“Device ID를 특정 그룹에 추가하고 변경 사항을 해당 그룹에만 푸시할 수 있다는 점이 정말 큰 도움이 됩니다.”

Michael Haberler의 인물 사진

Michael Haberler

nethead emeritors

“업데이터 플러그인 정말 잘 만드셨네요. 제 환경에서는 완벽하게 동작하고, 라이브 업데이트 덕분에 테스트 주기가 훨씬 빨라졌습니다.”

자주 묻는 질문

QA 및 제품 팀이 자주 묻는 질문

테스터, 빌드, 그리고 TestFlight가 여전히 필요한 경우에 대한 답변입니다.

Capgo가 TestFlight나 Play 내부 테스트를 대체할 수 있나요?

웹 레이어 변경 사항에만 해당됩니다. 테스터는 TestFlight, Play 테스트 트랙 또는 스토어를 통해 앱을 한 번 설치해야 합니다. 그 이후에는 JavaScript, HTML, CSS 및 에셋 변경 사항을 채널을 통해 전달할 수 있습니다. 플러그인을 추가하거나, Capacitor를 업그레이드하거나, 네이티브 code 또는 Capacitor 설정을 변경하는 경우에는 새로운 바이너리가 필요합니다.

Native Build가 필요한 경우

테스터가 베타에 참여하거나 탈퇴하려면 어떻게 하나요?

베타 채널의 self-assignment를 활성화한 다음, 앱의 특정 화면에서 setChannel({ channel: 'beta' })를 호출하세요. Capgo가 해당 채널을 허용하는지 확인하고 기기에 선택 사항을 저장합니다. unsetChannel()을 호출하면 기기가 기본 채널로 돌아갑니다. 기본 채널 자체는 setChannel()로 참여할 수 없습니다.

setChannel() 레퍼런스

앱을 변경하지 않고 테스터의 기기만 이동할 수 있나요?

Capgo 콘솔에서 해당 기기를 열고 채널 오버라이드를 설정하면 됩니다. 모든 edge server에 반영되기까지 최대 2분이 소요될 수 있으며, 설정 후 90일이 지나면 자동으로 해제됩니다. 앱 내 setChannel()로 선택한 채널은 이 목록에 나타나지 않습니다.

디바이스 오버라이드

기존 live update이 있는 상태에서 새로운 Native Build를 어떻게 테스트하나요?

Native Build마다 CapacitorUpdater.version을 높여주세요. 기본 설정 시, 새 빌드가 설치되면 이전 빌드용으로 다운로드된 bundle은 삭제됩니다. 또한 채널 설정을 통해 개발용 빌드나 에뮬레이터의 업데이트를 끌 수도 있습니다.

Live Update 없이 Native Build 테스트하기

베타 bundle이 실행 시 크래시가 발생하면 어떻게 되나요?

앱 로드가 완료되면 notifyAppReady()를 호출하세요. 새 bundle이 10초 이내에 이를 호출하지 않으면, 기기는 해당 업데이트를 실패로 간주하고 이전의 정상 작동하던 bundle로 복구합니다.

notifyAppReady()와 자동 롤백

앱에 베타 채널 설정하기

테스터가 참여할 채널을 만들고 스위치를 추가한 뒤, 14일 무료 체험 기간 동안 첫 번째 bundle을 전송해 보세요. 신용카드 등록은 필요 없습니다.