Skip to main content

Pengujian Aplikasi iOS Otomatis

Gunakan Synapse + Computer Control API untuk mengotomasi pengujian aplikasi iOS via Simulator.


Pengujian Aplikasi iOS Otomatis

Gabungkan sistem memori Synapse dengan Computer Control API untuk membangun pengujian aplikasi iOS berbasis LLM. LLM mengingat skenario pengujian, belajar dari kegagalan masa lalu, dan beradaptasi dengan perubahan UI.

Arsitektur

┌──────────────┐    commands    ┌──────────────┐    screenshots    ┌──────────────┐
│  LLM Agent   │ ─────────────▶│  Synapse     │ ────────────────▶ │  iOS Sim     │
│  (Claude)    │               │  Computer    │ ◀──────────────── │  (via agent) │
└──────────────┘               │  Control     │    results        └──────────────┘
       │                       └──────────────┘
       │ store/recall
       ▼
┌──────────────┐
│  Memories    │ (test scenarios, past failures, UI patterns)
└──────────────┘

Prasyarat

  • Akun Synapse + Mind Key
  • Synapse MCP server dikonfigurasi di Claude Desktop
  • iOS Simulator dengan screen-remote-agent terpasang
  • Komputer terdaftar di Synapse (lihat Computer Control API)

Langkah 1: Daftarkan Komputer Simulator

Di Mac yang menjalankan iOS Simulator:

# Get install code from Synapse
curl -X POST https://synapse.schaefer.zone/computers/install-code \
  -H "Authorization: Bearer YOUR_MIND_KEY" \
  -d '{"computer_name":"ios-sim"}'
# → { "install_code": "ic_..." }

# Run screen-remote-agent on the Mac
# (uses the install code to register)

Langkah 2: Simpan Skenario Pengujian di Memori

Simpan skenario pengujian yang dapat digunakan kembali sebagai memori:

import requests

def store_test_scenario(name, steps, app):
    requests.post(f"{URL}/memory",
        headers={"Authorization": f"Bearer {MIND_KEY}"},
        json={
            "category": "skill",
            "key": f"test_scenario_{name}",
            "content": f"App: {app}\nSteps:\n" + "\n".join(steps),
            "tags": ["test", "ios", app],
            "priority": "high"
        })

store_test_scenario("login_flow", [
    "Launch app",
    "Tap email field",
    "Type test@example.com",
    "Tap password field",
    "Type password123",
    "Tap Login button",
    "Verify home screen appears"
], "MyApp")

Langkah 3: Eksekusi Pengujian Berbasis LLM

Di Claude Desktop (dengan Synapse MCP dikonfigurasi):

Run the login_flow test scenario on the iOS Simulator.
Take a screenshot after each step and verify the expected UI.
If any step fails, store the failure as a memory so we can
avoid it next time.

Claude akan:

  1. Memanggil memory_search untuk menemukan memori test_scenario_login_flow
  2. Memanggil computer_screenshot untuk melihat kondisi saat ini
  3. Mengeksekusi setiap langkah melalui computer_command_queue (klik, ketik)
  4. Memverifikasi hasil melalui tangkapan layar
  5. Menyimpan kegagalan apa pun sebagai memori mistake

Langkah 4: Pengujian Self-Healing

Saat pengujian gagal, simpan kegagalan dan pemulihannya:

def store_test_failure(scenario, step, error, recovery):
    requests.post(f"{URL}/memory",
        headers={"Authorization": f"Bearer {MIND_KEY}"},
        json={
            "category": "mistake",
            "key": f"failure_{scenario}_{step}",
            "content": f"Scenario: {scenario}\nStep: {step}\nError: {error}\nRecovery: {recovery}",
            "tags": ["test", "failure", "ios", scenario],
            "priority": "high"
        })

# Example
store_test_failure("login_flow", "tap_login",
    "Login button not found at expected coordinates",
    "Button moved due to new logo. Search by accessibility label instead.")

Saat LLM menjalankan pengujian berikutnya, ia akan recall kegagalan dan menerapkan pemulihan secara otomatis.

Langkah 5: Pelacakan Hasil Pengujian

Lacak pengujian yang dijalankan sebagai tugas:

def track_test_run(scenario, status, duration):
    requests.post(f"{URL}/mind/task",
        headers={"Authorization": f"Bearer {MIND_KEY}",
                 "Content-Type": "application/json"},
        json={
            "title": f"Test: {scenario}",
            "description": f"Status: {status}, Duration: {duration}s",
            "priority": "normal"
        })

Perintah Umum

Aksi Perintah
Luncurkan Simulator xcrun simctl launch booted com.example.app
Tangkapan layar computer_screenshot (via Synapse MCP)
Ketuk di (x,y) computer_command_queue {type:"click", payload:{x,y}}
Ketik teks computer_command_queue {type:"type", payload:{text:"..."}}
Tekan Home computer_command_queue {type:"key", payload:{keys:["Cmd","Shift","H"]}}

Praktik Terbaik

Langkah Berikutnya