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-agentterpasang - 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:
- Memanggil
memory_searchuntuk menemukan memoritest_scenario_login_flow - Memanggil
computer_screenshotuntuk melihat kondisi saat ini - Mengeksekusi setiap langkah melalui
computer_command_queue(klik, ketik) - Memverifikasi hasil melalui tangkapan layar
- 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"]}} |