# Otomatik iOS Uygulama Testi LLM odaklı iOS uygulama testleri oluşturmak için Synapse'in bellek sistemini Computer Control API ile birleştirin. LLM test senaryolarını hatırlar, geçmiş başarısızlıklardan öğrenir ve UI değişikliklerine uyum sağlar. ## Mimari ``` ┌──────────────┐ commands ┌──────────────┐ screenshots ┌──────────────┐ │ LLM Agent │ ─────────────▶│ Synapse │ ────────────────▶ │ iOS Sim │ │ (Claude) │ │ Computer │ ◀──────────────── │ (via agent) │ └──────────────┘ │ Control │ results └──────────────┘ │ └──────────────┘ │ store/recall ▼ ┌──────────────┐ │ Memories │ (test scenarios, past failures, UI patterns) └──────────────┘ ``` ## Önkoşullar - Synapse hesabı + Mind Key - Claude Desktop'da yapılandırılmış Synapse MCP sunucusu - `screen-remote-agent` yüklü iOS Simülatörü - Synapse'e kayıtlı bilgisayar (bkz. [Computer Control API](/docs/api/computers)) ## Adım 1: Simülatör Bilgisayarını Kaydetme iOS Simülatörü çalışan Mac'te: ```bash # 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) ``` ## Adım 2: Test Senaryolarını Bellekte Saklama Yeniden kullanılabilir test senaryolarını bellek olarak saklayın: ```python 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") ``` ## Adım 3: LLM Odaklı Test Yürütme Claude Desktop'da (Synapse MCP yapılandırılmış): ``` 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 şunları yapacak: 1. `test_scenario_login_flow` belleğini bulmak için `memory_search` çağırır 2. Mevcut durumu görmek için `computer_screenshot` çağırır 3. Her adımı `computer_command_queue` ile yürütür (tıkla, yaz) 4. Sonuçları ekran görüntüleriyle doğrular 5. Başarısızlıkları `mistake` bellek olarak saklar ## Adım 4: Kendinden İyileşen Testler Bir test başarısız olduğunda, başarısızlığı ve kurtarmayı saklayın: ```python 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.") ``` Bir dahaki sefere LLM testi çalıştırdığında, başarısızlığı geri çağırır ve kurtarmayı otomatik olarak uygular. ## Adım 5: Test Sonucu İzleme Test çalışmalarını görev olarak izleyin: ```python 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" }) ``` ## Yaygın Komutlar | Eylem | Komut | |--------|---------| | Simülatörü başlat | `xcrun simctl launch booted com.example.app` | | Ekran görüntüsü | `computer_screenshot` (Synapse MCP ile) | | (x,y)'de dokun | `computer_command_queue {type:"click", payload:{x,y}}` | | Metin yaz | `computer_command_queue {type:"type", payload:{text:"..."}}` | | Home'a bas | `computer_command_queue {type:"key", payload:{keys:["Cmd","Shift","H"]}}` | ## En İyi Uygulamalar > [!TIP] > - **UI koordinatlarını bellek olarak saklayın** — UI değişir, ama LLM yeniden öğrenebilir > - **Erişilebilirlik etiketleri kullanın** — koordinatlardan daha kararlı > - **Test verilerini ayrı saklayın** — kullanıcı adları, parolalar için değişkenler kullanın > - **Testleri temiz durumda çalıştırın** — çalıştırmalar arasında Simülatörü sıfırlayın > - **Başarısızlıklar için ekran görüntüleri kaydedin** — hata ayıklama için yararlı ## Sonraki Adımlar - [Kendinden İyileşen Testler](/docs/guides/self-healing-tests) - [Computer Control API](/docs/api/computers) - [Bellek En İyi Uygulamaları](/docs/guides/memory-best-practices)