AgentSkillsCN

gplay-testers-orchestration

为 Google Play 的封闭测试通道管理 Beta 测试小组与测试人员。适用于管理测试人员与 Beta 测试小组时使用。

SKILL.md
--- frontmatter
name: gplay-testers-orchestration
description: Beta testing groups and tester management for Google Play closed testing tracks. Use when managing testers and beta groups.

Testers Orchestration for Google Play

Use this skill when you need to manage beta testers and testing groups.

Understanding Testing Tracks

Google Play has several testing tracks:

  • Internal - Up to 100 testers, instant access
  • Closed - Invite-only testing groups
  • Open - Public beta, anyone can join

Manage Testers

List testers for a track

bash
gplay testers list \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal

Get tester group details

bash
gplay testers get \
  --package com.example.app \
  --edit $EDIT_ID \
  --track beta

Update tester emails

bash
gplay testers update \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal \
  --emails "user1@example.com,user2@example.com,user3@example.com"

Add testers (append to existing list)

bash
# Get current testers
CURRENT=$(gplay testers get --package com.example.app --edit $EDIT_ID --track internal \
  | jq -r '.testers[]' | paste -sd "," -)

# Add new testers
NEW_TESTERS="user4@example.com,user5@example.com"
ALL_TESTERS="$CURRENT,$NEW_TESTERS"

gplay testers update \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal \
  --emails "$ALL_TESTERS"

Remove tester

bash
# Get current testers
CURRENT=$(gplay testers get --package com.example.app --edit $EDIT_ID --track internal \
  | jq -r '.testers[]' | paste -sd "," -)

# Remove specific email
UPDATED=$(echo "$CURRENT" | tr ',' '\n' | grep -v "user@example.com" | paste -sd "," -)

gplay testers update \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal \
  --emails "$UPDATED"

Complete Tester Workflow

Setup internal testing

bash
# 1. Create edit
EDIT_ID=$(gplay edits create --package com.example.app | jq -r '.id')

# 2. Upload build to internal track
gplay bundles upload \
  --package com.example.app \
  --edit $EDIT_ID \
  --file app-internal.aab

# 3. Add testers
gplay testers update \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal \
  --emails "tester1@example.com,tester2@example.com"

# 4. Update track
gplay tracks update \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal \
  --json @track-config.json

# 5. Commit
gplay edits commit --package com.example.app --edit $EDIT_ID

track-config.json

json
{
  "releases": [{
    "versionCodes": [123],
    "status": "completed"
  }]
}

Internal Testing (Quick Testing)

Characteristics:

  • Up to 100 testers
  • Instant access (no review)
  • Ideal for rapid iteration
bash
# Release to internal with testers
gplay release \
  --package com.example.app \
  --track internal \
  --bundle app.aab \
  --testers "dev1@company.com,dev2@company.com,qa@company.com"

Closed Testing (Beta Groups)

Characteristics:

  • Unlimited testers
  • Can have multiple named groups
  • Testers need opt-in link

Create beta release

bash
gplay release \
  --package com.example.app \
  --track beta \
  --bundle app.aab

Testers join via opt-in link

Share this link with testers:

code
https://play.google.com/apps/testing/com.example.app

Open Testing (Public Beta)

Characteristics:

  • Anyone can join
  • Public opt-in page
  • Still requires Play Store review
bash
gplay release \
  --package com.example.app \
  --track alpha \  # alpha track = open testing
  --bundle app.aab

Tester Management Best Practices

Organize testers by group

Internal testing:

  • Developers
  • QA team
  • Product managers

Closed beta:

  • Power users
  • Customer advisory board
  • Early adopters

Open beta:

  • General public
  • Community members

Email list management

Store tester lists in files:

bash
# testers-internal.txt
dev1@company.com
dev2@company.com
qa@company.com

# testers-beta.txt
poweruser1@example.com
poweruser2@example.com
feedback@example.com

Update from file:

bash
EMAILS=$(cat testers-internal.txt | paste -sd "," -)
gplay testers update \
  --package com.example.app \
  --edit $EDIT_ID \
  --track internal \
  --emails "$EMAILS"

Testing Workflow Examples

Weekly Beta Release

bash
#!/bin/bash
PACKAGE="com.example.app"

# Build
./gradlew bundleRelease

# Release to internal first
gplay release \
  --package $PACKAGE \
  --track internal \
  --bundle app/build/outputs/bundle/release/app-release.aab

# Wait 24 hours, monitor for crashes

# If stable, promote to beta
gplay promote \
  --package $PACKAGE \
  --from internal \
  --to beta

Staged Beta Rollout

bash
# Week 1: Internal team (10 people)
gplay release --package com.example.app --track internal --bundle app.aab

# Week 2: Beta group 1 (100 people)
gplay promote --package com.example.app --from internal --to beta

# Week 3: Open beta (unlimited)
gplay promote --package com.example.app --from beta --to alpha

# Week 4: Production with staged rollout
gplay promote --package com.example.app --from alpha --to production --rollout 10

Share Testing Links

Internal testing link

code
https://play.google.com/apps/internaltest/INTERNAL_TESTING_ID

Get from Play Console → Internal testing → Testers → Copy link

Closed testing opt-in link

code
https://play.google.com/apps/testing/com.example.app

Email template for testers

code
Subject: Join the Beta Test for [App Name]

Hi,

You've been invited to test the beta version of [App Name]!

To join:
1. Click this link: https://play.google.com/apps/testing/com.example.app
2. Tap "Become a tester"
3. Download the app from Google Play

Your feedback is valuable! Please report any issues to: beta@example.com

Thanks,
The [App Name] Team

Monitor Beta Feedback

Check feedback

bash
# View recent reviews from beta testers
gplay reviews list --package com.example.app \
  | jq '.reviews[] | select(.comments[0].userComment.reviewerLanguage != null)'

Crash reports

Use Play Console → Quality → Android vitals → Crashes and ANRs

Filter by version code to see beta-specific crashes.

Automated Tester Management

Sync from CSV

bash
#!/bin/bash
# sync-testers.sh

PACKAGE="com.example.app"
CSV_FILE="testers.csv"

# Read emails from CSV (skip header)
EMAILS=$(tail -n +2 "$CSV_FILE" | cut -d',' -f1 | paste -sd "," -)

# Create edit
EDIT_ID=$(gplay edits create --package $PACKAGE | jq -r '.id')

# Update testers
gplay testers update \
  --package $PACKAGE \
  --edit $EDIT_ID \
  --track internal \
  --emails "$EMAILS"

# Commit
gplay edits commit --package $PACKAGE --edit $EDIT_ID

echo "Synced $(echo $EMAILS | tr ',' '\n' | wc -l) testers"

testers.csv

csv
email,name,role
dev1@company.com,Alice Developer,Developer
qa1@company.com,Bob QA,QA
pm@company.com,Carol PM,Product Manager

Remove Inactive Testers

bash
#!/bin/bash
# Remove testers who haven't tested in 30 days

PACKAGE="com.example.app"
EDIT_ID=$(gplay edits create --package $PACKAGE | jq -r '.id')

# Get current testers
CURRENT=$(gplay testers get --package $PACKAGE --edit $EDIT_ID --track beta \
  | jq -r '.testers[]')

# Filter active testers (implement your logic)
# This is a placeholder - you'd need to track activity separately
ACTIVE="tester1@example.com,tester2@example.com"

# Update
gplay testers update \
  --package $PACKAGE \
  --edit $EDIT_ID \
  --track beta \
  --emails "$ACTIVE"

gplay edits commit --package $PACKAGE --edit $EDIT_ID

Testing Limits

TrackMax TestersReview RequiredAccess Speed
Internal100NoInstant
ClosedUnlimitedNoMinutes
OpenUnlimitedYesDays
ProductionUnlimitedYesDays

Best Practices

DO:

  • ✅ Start with internal testing
  • ✅ Gradually expand to beta
  • ✅ Communicate clearly with testers
  • ✅ Provide feedback channels
  • ✅ Acknowledge tester contributions
  • ✅ Keep tester lists up to date
  • ✅ Remove inactive testers periodically

DON'T:

  • ❌ Skip internal testing
  • ❌ Add everyone to all tracks
  • ❌ Ignore tester feedback
  • ❌ Leave broken builds in testing
  • ❌ Forget to thank your testers
  • ❌ Use production track for testing

Track Selection Guide

Use Internal when:

  • Initial feature testing
  • Testing with dev/QA team only
  • Need instant access
  • < 100 testers

Use Closed when:

  • Broader beta testing
  • Need > 100 testers
  • Want named beta groups
  • Testing with customers

Use Open when:

  • Public beta program
  • Want maximum reach
  • Community testing
  • Pre-launch buzz

Communication with Testers

Release notes for testers

Include in app update:

code
Version 1.2.3 (Beta)

What's New:
- New feature X (please test thoroughly)
- Bug fixes for Y

Known Issues:
- Feature Z is work in progress
- Crash on Android 12 is being investigated

Please report issues to: beta@example.com

Feedback collection

  • In-app feedback button
  • Dedicated Slack/Discord channel
  • Email address
  • Survey form

This helps you improve before production release!