Test Stratejisi¶
Proje dört katmanlı bir test stratejisi kullanır: backend birim/smoke, frontend birim, uçtan uca (Playwright) ve k6 ile performans/güvenlik doğrulaması.
Backend¶
cd iqvflex/backend
npm test
node --test ile 5 dosyada birim/entegrasyon testleri (ERP mapping, ERP
auth, upsert, Go proxy, Go auth) çalışır; ardından test/smoke.mjs gerçek
bir Express uygulaması ayağa kaldırıp temel uç noktaları (health, hata
kodları, 404) MongoDB olmadan doğrular.
Frontend¶
cd dashboard
npm test
node --test ile normalizasyon ve format dönüşüm mantığının Node-RED ile
birebir aynı davrandığını doğrulayan birim testleri çalışır.
Uçtan uca (E2E)¶
cd dashboard && npm run build && npx vite preview --port 4173 &
cd iqvflex/backend && npm install
cd iqvflex/e2e && npm install && npx playwright install chromium
npm test
Tarayıcı → Node.js backend → (sahte) Go Integration API → backend → tarayıcı
zincirini baştan sona doğrular. MongoDB repository katmanı mock'lanır, bu
yüzden çalışan bir mongod gerekmez; Go servisi de test içinde ayağa
kaldırılan sahte bir HTTP sunucusudur. Kapsam: JSON/XML akışları, hata
durumlarının kaybolmaması ve frontend bundle'ında secret bulunmaması.
k6 (smoke ve yük testi)¶
k6 testleri iqvflex/backend/test/k6/ altındadır:
| Dosya | Amaç |
|---|---|
common.js |
Ortak yardımcılar, assertNonProductionTarget güvenlik kapısı |
smoke.js |
1 VU / 1 iterasyon — hiçbir kontrol başarısız olmamalı |
load.js |
Kontrollü, saldırgan olmayan yük profili (varsayılan 5 VU) |
Güvenlik kapısı: testler yalnızca localhost / *.test / *.local /
*staging* / *.internal adreslerini hedefleyebilir; üretim adresine karşı
çalıştırılırsa test fail() ile durur.
cd iqvflex/backend
npm install
K6_BASE_URL=http://127.0.0.1:3199 PORT=3199 node server.js &
k6 run test/k6/smoke.js
K6_TEST_IDENTIFIER / K6_TEST_PASSWORD verilirse tryLogin() gerçek bir
girişi de dener; verilmezse bu adım atlanır — sahte üretim kimliği
üretilmez.
CI'da smoke testi backend'in gerçek MongoDB'ye ihtiyaç duymadan ayağa kalkabilmesinden yararlanır (bkz. CI/CD).