Test Matrisi ve Metrikler
Micro Socket invariant'larının ölçülebilir doğrulanması için test senaryoları ve metrikler.
İnvariant Bazlı Metrikler
| İnvariant | Metrik | Hedef |
|---|---|---|
| I₂ Çift işlememe | Çift işlenen olay oranı (%) | 0% |
| I₃ Sıralama | Yeniden sıralama / gap oranı (%) | 0% |
| I₁ ACL | Yetkisiz erişim denemesi → REDİR/ERROR | %100 red |
| I₅ Gecikme | p50 / p95 / p99 (ms) | p99 < SLO (örn. 100ms) |
| I₆ Resume | Kesinti sonrası eksiksiz devam oranı (%) | ≥ 99% |
| I₄ Teslim | Kayıp mesaj oranı (QoS≥1) | 0% |
Test Matrisi Tablosu
| İhlal / Senaryo | Test | Beklenen | Hedef |
|---|---|---|---|
| Çift işlem | Aynı messageId ile çoklu PUBLISH | İkinci ve sonrası işlenmez | %0 çift işlem |
| Sıralama bozulması | Sıra dışı gelen mesajlar | Client sırayla işler / replay ister | %0 sıra hatası |
| Yetkisiz erişim | ACL'siz kullanıcı SUBSCRIBE/PUBLISH | REDİR/ERROR | %100 red |
| Gecikme aşımı | Yük altında publish→deliver | p99 < Xms | ≥ %95 SLO sağlanır |
| Resume başarısızlığı | Bağlantı kes, yeniden bağlan | Eksiksiz veri | ≥ %99 |
| Eksik veri | Broker/gateway crash | Kayıp minimum | 0 veya < %1 |
E2E ve Yük Testleri
- Bağlantı: 100K paralel WebSocket + SUBSCRIBE.
- Mesaj yükü: Topic başına 1K msg/s, 50 topic; latency ve kuyruk ölçümü.
- Kaos: Gateway'lerin yarısını kapat/aç; omurga yavaşlat; resume ve kayıp kontrolü.
- Güvenlik: Geçersiz token, izinsiz topic; SQL-injection benzeri topic adı → hata beklenir.
Örnek Assertion (Node.js Test)
javascript
// Çift işlem: Aynı messageId iki kez publish → sadece bir kez işlensin
const messageId = 'test-idempotent-1';
client.publish('orders', { amount: 1 }, messageId);
client.publish('orders', { amount: 1 }, messageId); // duplicate
// İkinci ACK status: 'duplicate' olmalı; backend'de tek işlemDetaylı senaryolar ve fintech odaklı kullanım: Fintech.