mcpField
Q
qe-mobile-testing

qe-mobile-testing

github.com/proffesor-for-testingテスト・品質51993 回インストール今日更新
リポジトリ

qe-mobile-testing について

qe-mobile-testingは、ネイティブ、ハイブリッド、モバイルWebアプリの検証に使うテストスキルです。デバイス構成、プラットフォーム差、ジェスチャー、オフライン動作などを扱います。

主な機能

  1. 01デバイスカバレッジの計画
  2. 02iOSとAndroidの差異確認
  3. 03タッチジェスチャーの検証
  4. 04オフラインや割り込みのシナリオ
  5. 05エミュレーターと実機の使い分け指針

活用シーン

  1. 01クロスプラットフォーム回帰テストの計画
  2. 02権限フローとプッシュ通知の確認
  3. 03オフライン動作とネットワーク切り替えの検証
  4. 04アプリストア申請の準備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/proffesor-for-testing/agentic-qe --skill qe-mobile-testing

インストール後、Claude Code で/qe-mobile-testingを入力して読み込まれたか確認します。

詳細

モバイルテスト

<default_to_action> モバイルアプリケーションをテストする場合:

  1. デバイスのカバレッジマトリックスを定義します(Tier 1:60%、Tier 2:30%、Tier 3:10%)
  2. プラットフォーム間の違いをテストします(iOS ≠ Android:戻るボタン、権限、UI)
  3. タッチジェスチャーを検証します(タップ、スワイプ、ピンチ、長押し)
  4. モバイル特有のシナリオをテストします(オフライン、低バッテリー、中断)
  5. 重要なパスには実機を、素早いフィードバックにはエミュレーターを使用します

モバイルのクイックチェックリスト:

  • 最新のiOSおよびAndroidのフラッグシップデバイスでテストします
  • オフラインモードとネットワークの切り替えをテストします
  • プッシュ通知が機能することを確認します
  • ジェスチャー操作をテストします(スワイプ、ピンチ)
  • 権限のフローを確認します(カメラ、位置情報、通知)

成功の重要な要因:

  • テストの80%にはエミュレーターを、重要なパスの20%には実機を使用します
  • ユーザーが実際に使用しているデバイスでテストします(アナリティクスを参照)
  • デバイスの断片化はAndroid最大の課題です </default_to_action>

クイックリファレンスカード

使用する場面
  • ネイティブアプリの開発(iOS/Android)
  • ハイブリッドアプリ(React Native、Flutter)
  • モバイルウェブ/PWA
  • アプリストアへの申請準備
iOSとAndroidの違い
項目iOSAndroid
OSバージョン2~3バージョンをサポート10以上が使用中
デバイス約40モデル1000以上のバリエーション
戻るボタンジェスチャー/ナビゲーションハードウェア/ソフトウェア
権限単一のプロンプト実行時に個別設定
アプリストア厳格な審査Google Play+サイドロード
デバイスカバレッジの段階
Tierカバレッジデバイス
Tier 1ユーザーの60%iPhone 15、Galaxy S24、iPad
Tier 2ユーザーの30%iPhone 14/13、Pixel 8
Tier 3ユーザーの10%旧型デバイス、その他のメーカー
モバイルパフォーマンスの目標
指標目標
アプリの起動< 2秒
画面遷移< 300ms
フレームレート60 FPS
バッテリー消費バックグラウンドで1時間あたり< 5%

タッチジェスチャーのテスト

// Appium gesture examples
// Tap
await driver.touchAction({ action: 'tap', x: 100, y: 200 });

// Swipe (scroll down)
await driver.touchAction([
  { action: 'press', x: 200, y: 400 },
  { action: 'moveTo', x: 200, y: 100 },
  { action: 'release' }
]);

// Pinch to zoom
const finger1 = [
  { action: 'press', x: 100, y: 200 },
  { action: 'moveTo', x: 50, y: 150 },
  { action: 'release' }
];
const finger2 = [
  { action: 'press', x: 200, y: 200 },
  { action: 'moveTo', x: 250, y: 250 },
  { action: 'release' }
];
await driver.multiTouchAction([finger1, finger2]);

// Long press
await driver.touchAction({
  action: 'longPress',
  x: 100, y: 200,
  duration: 2000
});

モバイル特有のシナリオ

// Offline mode testing
test('app works offline', async () => {
  await driver.toggleAirplaneMode();

  await driver.findElement('view-saved-items').click();
  const items = await driver.findElements('saved-item');
  expect(items.length).toBeGreaterThan(0);

  const banner = await driver.findElement('offline-banner');
  expect(banner.getText()).toContain('No internet');

  await driver.toggleAirplaneMode(); // Restore
});

// Location testing
test('location-based features', async () => {
  await driver.setGeoLocation({
    latitude: 37.7749,
    longitude: -122.4194,
    altitude: 0
  });

  const stores = await driver.findElement('stores-list');
  expect(stores.getText()).toContain('San Francisco');
});

// Permission testing (Android)
test('camera permission flow', async () => {
  await driver.findElement('take-photo').click();

  // Handle permission dialog
  await driver.findElement(
    'com.android.packageinstaller:id/permission_allow_button'
  ).click();

  expect(await driver.findElement('camera-view')).toBeDefined();
});

エージェント主導のモバイルテスト

// Cross-platform mobile testing
await Task("Mobile Test Suite", {
  platforms: ['iOS', 'Android'],
  deviceTiers: [1, 2],
  tests: 'regression-suite',
  parallelDevices: 5,
  deviceFarm: 'browserstack'
}, "qe-test-executor");

// Device farm integration
await Task("Device Farm Execution", {
  service: 'browserstack',
  devices: [
    'iPhone 15 - iOS 17',
    'Samsung Galaxy S24 - Android 14'
  ],
  recordVideo: true,
  captureNetworkLogs: true
}, "qe-test-executor");

エージェント連携のヒント

メモリ名前空間
aqe/mobile-testing/
├── device-matrix/*      - Device coverage strategy
├── platform-tests/*     - iOS/Android specific tests
├── gesture-library/*    - Reusable gesture patterns
└── performance/*        - Mobile performance metrics
フリートの連携
const mobileFleet = await FleetManager.coordinate({
  strategy: 'mobile-testing',
  agents: [
    'qe-test-executor',       // Cross-platform execution
    'qe-performance-tester',  // Mobile performance
    'qe-visual-tester'        // Screen size validation
  ],
  topology: 'parallel'
});

関連スキル


覚えておくこと

モバイルは小型のデスクトップではなく、別のプラットフォームです。 ウェブトラフィックの60%以上はモバイルです。デバイスの断片化(Androidデバイスは1000種類以上)、タッチジェスチャー、センサー、権限、オフラインのシナリオなどには、すべて専用のテストが必要です。

重要なフローは実機でテストします。 エミュレーターでバグの80%は検出できますが、実際のパフォーマンス、センサーの動作、プラットフォーム固有の挙動を確認するには実機が必要です。

エージェントを活用する場合: qe-test-executorがデバイスファーム全体のテストを統括し、プラットフォーム間の違いを管理して、10台以上のデバイスで並行してテストします。モバイルテストを数日から数時間に短縮します。

コメント